yoastseo-dep
Version:
Yoast clientside page analysis
252 lines (243 loc) • 13.6 kB
JavaScript
import Paper from "../../src/values/Paper";
import InclusiveLanguageAssessor from "../../src/scoring/inclusiveLanguageAssessor";
import EnglishResearcher from "../../src/languageProcessing/languages/en/Researcher";
// Note that the order of the testing suites is important because, "Jest executes all describe handlers before it executes any of the actual tests."
// Source: https://jestjs.io/docs/setup-teardown
describe( "a test for for the inclusive language assessor when run without its second parameter, options", () => {
it( "tests whether the assessor will be run without throwing an error using a ses assessment as an example", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive phrase illegal immigrants." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "ses" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-ses' target='_blank'>" );
}
} );
} );
} );
describe( "a test for for the inclusive language assessor when run in WordPress", () => {
const options = {
infoLinks: {},
};
it( "tests the category of the age assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word elderly." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "age" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-age' target='_blank'>" );
}
} );
} );
it( "tests the category of the appearance assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word obesity." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "appearance" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-appearance' target='_blank'>" );
}
} );
} );
it( "tests the category of the culture assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word civilized." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "culture" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-culture' target='_blank'>" );
}
} );
} );
it( "tests the category of the disability assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word narcissistic." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "disability" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-disability' target='_blank'>" );
}
} );
} );
it( "tests the category of the gender assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive phrase girls and boys." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "gender" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-gender' target='_blank'>" );
}
} );
} );
it( "tests the category of the other assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word minorities." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "other" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-other' target='_blank'>" );
}
} );
} );
it( "tests the category of the Sexual orientation assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word homosexuals." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "sexualOrientation" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-orientation' target='_blank'>" );
}
} );
} );
it( "tests the category of the SES assessments and the correct WP link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive phrase illegal immigrants." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "ses" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-ses' target='_blank'>" );
}
} );
} );
it( "tests when multiple assessments with WordPress shortlinks are triggered for the same Paper", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive words daft AND albinos AND firemen AND felon." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.learnMoreUrl ).toEqual( `<a href='https://yoa.st/inclusive-language-${ assessment.category }' target='_blank'>` );
}
} );
} );
} );
describe( "a test for the inclusive language assessor when run in Shopify", () => {
const options = {
infoLinks: {
age: "https://yoa.st/inclusive-language-age-shopify",
appearance: "https://yoa.st/inclusive-language-appearance-shopify",
culture: "https://yoa.st/inclusive-language-culture-shopify",
disability: "https://yoa.st/inclusive-language-disability-shopify",
gender: "https://yoa.st/inclusive-language-gender-shopify",
other: "https://yoa.st/inclusive-language-other-shopify",
ses: "https://yoa.st/inclusive-language-ses-shopify",
sexualOrientation: "https://yoa.st/inclusive-language-orientation-shopify",
},
};
it( "tests the category of the Age assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word seniors." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "age" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-age-shopify' target='_blank'>" );
}
} );
} );
it( "tests the category of the Appearance assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word albinos." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "appearance" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-appearance-shopify' target='_blank'>" );
}
} );
} );
it( "tests the category of the Culture assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word exotic." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "culture" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-culture-shopify' target='_blank'>" );
}
} );
} );
it( "tests the category of the Disability assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word daft." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "disability" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-disability-shopify' target='_blank'>" );
}
} );
} );
it( "tests the category of the Gender assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word firemen." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "gender" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-gender-shopify' target='_blank'>" );
}
} );
} );
it( "tests the category of the SES assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word felon." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "ses" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-ses-shopify' target='_blank'>" );
}
} );
} );
it( "tests the category of the Sexual orientation assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive word homosexuals." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "sexualOrientation" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-orientation-shopify' target='_blank'>" );
}
} );
} );
it( "tests the category of the Other assessments and the correct Shopify link", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive phrase minorities." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
expect( assessment.category ).toEqual( "other" );
expect( assessment.learnMoreUrl ).toEqual( "<a href='https://yoa.st/inclusive-language-other-shopify' target='_blank'>" );
}
} );
} );
it( "tests when multiple assessments with Shopify shortlinks are triggered for the same Paper", () => {
const mockPaper = new Paper( "This is a test with the non-inclusive words daft AND albinos AND firemen AND felon." );
const researcher = new EnglishResearcher( mockPaper );
const assessor = new InclusiveLanguageAssessor( researcher, options );
assessor._assessments.forEach( assessment => {
if ( assessment.isApplicable( mockPaper, researcher ) ) {
// eslint-disable-next-line max-len
expect( assessment.learnMoreUrl ).toEqual( `<a href='https://yoa.st/inclusive-language-${ assessment.category }-shopify' target='_blank'>` );
}
} );
} );
} );
describe( "The inclusive language assessor", () => {
it( "should target 'ex-offenders' only once", () => {
const paper = new Paper( "This sentence contains the word ex-offenders." );
const researcher = new EnglishResearcher( paper );
const assessor = new InclusiveLanguageAssessor( researcher, {} );
assessor.assess( paper );
expect( assessor.getValidResults() ).toHaveLength( 1 );
} );
} );