Skip to content

Commit

Permalink
Refactor Address output component test file to new format (#3308)
Browse files Browse the repository at this point in the history
* modified test cases as per the ticket

* changes in the given statements

* changes as per comments

* commiting latest changes

* Changes as per comments

* removing no params example

* Update src/components/address-output/_test_examples.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

* Update src/components/address-output/_macro.spec.js

Co-authored-by: rmccar <[email protected]>

---------

Co-authored-by: Alessio Venturini <[email protected]>
Co-authored-by: rmccar <[email protected]>
  • Loading branch information
3 people authored Nov 8, 2024
1 parent 7d9b0ac commit af04adf
Show file tree
Hide file tree
Showing 2 changed files with 129 additions and 74 deletions.
195 changes: 121 additions & 74 deletions src/components/address-output/_macro.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,94 +5,141 @@ import * as cheerio from 'cheerio';
import axe from '../../tests/helpers/axe';
import { renderComponent } from '../../tests/helpers/rendering';

const EXAMPLE_ADDRESS_OUTPUT_FULL = {
unit: 'Unit 5',
organisation: 'Trescos',
line1: 'Abingdon Road',
line2: 'Goathill',
town: 'Barry',
postcode: 'AB12 6UH',
};

const EXAMPLE_ADDRESS_OUTPUT_NONE = {};

describe('macro: address-output', () => {
it('passes jest-axe checks', async () => {
const $ = cheerio.load(renderComponent('address-output', EXAMPLE_ADDRESS_OUTPUT_FULL));

const results = await axe($.html());
expect(results).toHaveNoViolations();
});
import { EXAMPLE_ADDRESS_OUTPUT_FULL } from './_test_examples';

it('has additionally provided container style classes', () => {
const $ = cheerio.load(
renderComponent('address-output', {
...EXAMPLE_ADDRESS_OUTPUT_FULL,
classes: 'extra-class another-extra-class',
}),
);
describe('FOR: Macro: Address-output', () => {
describe('GIVEN: Params: none', () => {
describe('WHEN: no parameters are provided', () => {
const $ = cheerio.load(renderComponent('address-output', {}));

expect($('.ons-address-output').hasClass('extra-class')).toBe(true);
expect($('.ons-address-output').hasClass('another-extra-class')).toBe(true);
test('THEN: renders no lines', () => {
expect($('.ons-address-output__lines *').length).toBe(0);
});
});
});

it('renders no lines when no parameters are provided', () => {
const $ = cheerio.load(renderComponent('address-output', EXAMPLE_ADDRESS_OUTPUT_NONE));

expect($('.ons-address-output__lines *').length).toBe(0);
describe('GIVEN: Params: classes', () => {
describe('WHEN: classes are provided', () => {
const $ = cheerio.load(
renderComponent('address-output', {
...EXAMPLE_ADDRESS_OUTPUT_FULL,
classes: 'extra-class another-extra-class',
}),
);

test('THEN: renders with additional classes provided', async () => {
expect($('.ons-address-output').hasClass('extra-class')).toBe(true);
expect($('.ons-address-output').hasClass('another-extra-class')).toBe(true);
});
});
});

it.each([
['all address lines', EXAMPLE_ADDRESS_OUTPUT_FULL],
['single line', { unit: 'Unit 5' }],
])('renders `unit` with %s', (_, params) => {
const $ = cheerio.load(renderComponent('address-output', params));
describe('GIVEN: Params: All params', () => {
describe('WHEN: all address line params are provided', () => {
const $ = cheerio.load(renderComponent('address-output', EXAMPLE_ADDRESS_OUTPUT_FULL));

expect($('.ons-address-output__unit').text().trim()).toBe('Unit 5');
});
test('THEN: jest-axe tests pass', async () => {
const results = await axe($.html());
expect(results).toHaveNoViolations();
});

it.each([
['all address lines', EXAMPLE_ADDRESS_OUTPUT_FULL],
['single line', { organisation: 'Trescos' }],
])('renders `organisation` with %s', (_, params) => {
const $ = cheerio.load(renderComponent('address-output', params));
test('THEN: renders unit with provided text', () => {
expect($('.ons-address-output__unit').text().trim()).toBe('Unit 5');
});

expect($('.ons-address-output__organisation').text().trim()).toBe('Trescos');
});
test('THEN: renders organisation line with correct text', () => {
expect($('.ons-address-output__organisation').text().trim()).toBe('Trescos');
});

it.each([
['all address lines', EXAMPLE_ADDRESS_OUTPUT_FULL],
['single line', { line1: 'Abingdon Road' }],
])('renders `line1` with %s', (_, params) => {
const $ = cheerio.load(renderComponent('address-output', params));
test('THEN: renders line1 line with correct text', () => {
expect($('.ons-address-output__line1').text().trim()).toBe('Abingdon Road');
});

expect($('.ons-address-output__line1').text().trim()).toBe('Abingdon Road');
});
test('THEN: renders line2 line with correct text', () => {
expect($('.ons-address-output__line2').text().trim()).toBe('Goathill');
});

it.each([
['all address lines', EXAMPLE_ADDRESS_OUTPUT_FULL],
['single line', { line2: 'Goathill' }],
])('renders `line2` with %s', (_, params) => {
const $ = cheerio.load(renderComponent('address-output', params));
test('THEN: renders the town line with correct text', () => {
expect($('.ons-address-output__town').text().trim()).toBe('Barry');
});

expect($('.ons-address-output__line2').text().trim()).toBe('Goathill');
test('THEN: renders the postcode line with correct text', () => {
expect($('.ons-address-output__postcode').text().trim()).toBe('AB12 6UH');
});
});
});

it.each([
['all address lines', EXAMPLE_ADDRESS_OUTPUT_FULL],
['single line', { town: 'Barry' }],
])('renders `town` with %s', (_, params) => {
const $ = cheerio.load(renderComponent('address-output', params));

expect($('.ons-address-output__town').text().trim()).toBe('Barry');
});

it.each([
['all address lines', EXAMPLE_ADDRESS_OUTPUT_FULL],
['single line', { postcode: 'AB12 6UH' }],
])('renders `postcode` with %s', (_, params) => {
const $ = cheerio.load(renderComponent('address-output', params));

expect($('.ons-address-output__postcode').text().trim()).toBe('AB12 6UH');
describe('GIVEN: Params: single param', () => {
describe('WHEN: the unit address line is the only parameter provided', () => {
const $ = cheerio.load(
renderComponent('address-output', {
unit: 'Unit 5',
}),
);

test('THEN: renders unit line with correct text', () => {
expect($('.ons-address-output__unit').text().trim()).toBe('Unit 5');
});
});

describe('WHEN: the organisation address line is the only parameter provided', () => {
const $ = cheerio.load(
renderComponent('address-output', {
organisation: 'Trescos',
}),
);

test('THEN: renders organisation line with correct text', () => {
expect($('.ons-address-output__organisation').text().trim()).toBe('Trescos');
});
});

describe('WHEN: the line1 address line is the only parameter provided', () => {
const $ = cheerio.load(
renderComponent('address-output', {
line1: 'Abingdon Road',
}),
);

test('THEN: renders line1 line with correct text', () => {
expect($('.ons-address-output__line1').text().trim()).toBe('Abingdon Road');
});
});

describe('WHEN: the line2 address line is the only parameter provided', () => {
const $ = cheerio.load(
renderComponent('address-output', {
line2: 'Goathill',
}),
);

test('THEN: renders line2 line with correct text', () => {
expect($('.ons-address-output__line2').text().trim()).toBe('Goathill');
});
});

describe('WHEN: the town address line is the only parameter provided', () => {
const $ = cheerio.load(
renderComponent('address-output', {
town: 'Barry',
}),
);

test('THEN: renders town line with correct text', () => {
expect($('.ons-address-output__town').text().trim()).toBe('Barry');
});
});

describe('WHEN: the postcode address line is the only parameter provided', () => {
const $ = cheerio.load(
renderComponent('address-output', {
postcode: 'AB12 6UH',
}),
);

test('THEN: renders postcode line with correct text', () => {
expect($('.ons-address-output__postcode').text().trim()).toBe('AB12 6UH');
});
});
});
});
8 changes: 8 additions & 0 deletions src/components/address-output/_test_examples.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export const EXAMPLE_ADDRESS_OUTPUT_FULL = {
unit: 'Unit 5',
organisation: 'Trescos',
line1: 'Abingdon Road',
line2: 'Goathill',
town: 'Barry',
postcode: 'AB12 6UH',
};

0 comments on commit af04adf

Please sign in to comment.