Skip to content

Commit 965fbb1

Browse files
author
Samuel Atefah
committed
chore(Banner): update tests to new react testing library standards
1 parent af40c12 commit 965fbb1

File tree

2 files changed

+80
-106
lines changed

2 files changed

+80
-106
lines changed
Lines changed: 78 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,82 @@
1+
import * as React from 'react';
2+
import { render, screen } from '@testing-library/react';
13
import { Banner } from '../Banner';
2-
import React from 'react';
3-
import { render } from '@testing-library/react';
4-
5-
['default', 'info', 'success', 'warning', 'danger'].forEach((variant: string) => {
6-
test(`${variant} banner`, () => {
7-
const { asFragment } = render(
8-
<Banner
9-
variant={variant as 'default' | 'info' | 'success' | 'warning' | 'danger'}
10-
aria-label={variant}
11-
screenReaderText={`${variant} banner`}
12-
>
13-
{variant} Banner
14-
</Banner>
15-
);
16-
expect(asFragment()).toMatchSnapshot();
17-
});
18-
});
19-
20-
test(`sticky banner`, () => {
21-
const { asFragment } = render(
22-
<Banner aria-label="sticky" isSticky>
23-
Sticky Banner
24-
</Banner>
4+
5+
test('Renders without children', () => {
6+
render(
7+
<div data-testid="banner">
8+
<Banner />
9+
</div>
2510
);
11+
expect(screen.getByTestId('banner').firstChild).toBeVisible();
12+
});
13+
14+
test('Renders children', () => {
15+
render(<Banner>Test</Banner>);
16+
expect(screen.getByText('Test')).toBeVisible();
17+
});
18+
19+
test('Renders with class name pf-c-banner', () => {
20+
render(<Banner>Test</Banner>);
21+
expect(screen.getByText('Test')).toHaveClass('pf-c-banner');
22+
});
23+
24+
test('Renders with custom class name when className prop is provided', () => {
25+
render(<Banner className="custom-class">Test</Banner>);
26+
expect(screen.getByText('Test')).toHaveClass('custom-class');
27+
});
28+
29+
test('Renders without any modifier class when variant prop is not passed', () => {
30+
render(<Banner>Test</Banner>);
31+
expect(screen.getByText('Test')).toHaveClass('pf-c-banner', { exact: true });
32+
});
33+
34+
test('Renders with class name pf-m-success when "success" is passed to variant prop', () => {
35+
render(<Banner variant="success">Test</Banner>);
36+
expect(screen.getByText('Test')).toHaveClass('pf-m-success');
37+
});
38+
39+
test('Renders with class name pf-m-danger when "danger" is passed to variant prop', () => {
40+
render(<Banner variant="danger">Test</Banner>);
41+
expect(screen.getByText('Test')).toHaveClass('pf-m-danger');
42+
});
43+
44+
test('Renders with class name pf-m-warning when "warning" is passed to variant prop', () => {
45+
render(<Banner variant="warning">Test</Banner>);
46+
expect(screen.getByText('Test')).toHaveClass('pf-m-warning');
47+
});
48+
49+
test('Renders with class name pf-m-info when "info" is passed to variant prop', () => {
50+
render(<Banner variant="info">Test</Banner>);
51+
expect(screen.getByText('Test')).toHaveClass('pf-m-info');
52+
});
53+
54+
test('Renders screenReaderText as "default banner" by default', () => {
55+
render(<Banner>Test</Banner>);
56+
expect(screen.getByText('Test').lastChild).toHaveTextContent(/^default banner$/);
57+
});
58+
59+
test('Renders custom screenReaderText passed via prop', () => {
60+
render(<Banner screenReaderText="Custom screen reader text">Test</Banner>);
61+
expect(screen.getByText('Test').lastChild).toHaveTextContent(/^Custom screen reader text$/);
62+
});
63+
64+
test('Renders without pf-m-sticky by default', () => {
65+
render(<Banner>Test</Banner>);
66+
expect(screen.getByText('Test')).not.toHaveClass('pf-m-sticky');
67+
});
68+
69+
test('Renders with class name pf-m-sticky when isSticky prop is passed', () => {
70+
render(<Banner isSticky>Test</Banner>);
71+
expect(screen.getByText('Test')).toHaveClass('pf-m-sticky');
72+
});
73+
74+
test('Renders with inherited element props spread to the component', () => {
75+
render(<Banner aria-label="Test label">Test</Banner>);
76+
expect(screen.getByText('Test')).toHaveAccessibleName('Test label');
77+
});
78+
79+
test('Matches the snapshot', () => {
80+
const { asFragment } = render(<Banner>Test</Banner>);
2681
expect(asFragment()).toMatchSnapshot();
2782
});
Lines changed: 2 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,11 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`danger banner 1`] = `
3+
exports[`Matches the snapshot 1`] = `
44
<DocumentFragment>
55
<div
6-
aria-label="danger"
7-
class="pf-c-banner pf-m-danger"
8-
>
9-
danger Banner
10-
<span
11-
class="pf-u-screen-reader"
12-
>
13-
danger banner
14-
</span>
15-
</div>
16-
</DocumentFragment>
17-
`;
18-
19-
exports[`default banner 1`] = `
20-
<DocumentFragment>
21-
<div
22-
aria-label="default"
236
class="pf-c-banner"
247
>
25-
default Banner
26-
<span
27-
class="pf-u-screen-reader"
28-
>
29-
default banner
30-
</span>
31-
</div>
32-
</DocumentFragment>
33-
`;
34-
35-
exports[`info banner 1`] = `
36-
<DocumentFragment>
37-
<div
38-
aria-label="info"
39-
class="pf-c-banner pf-m-info"
40-
>
41-
info Banner
42-
<span
43-
class="pf-u-screen-reader"
44-
>
45-
info banner
46-
</span>
47-
</div>
48-
</DocumentFragment>
49-
`;
50-
51-
exports[`sticky banner 1`] = `
52-
<DocumentFragment>
53-
<div
54-
aria-label="sticky"
55-
class="pf-c-banner pf-m-sticky"
56-
>
57-
Sticky Banner
8+
Test
589
<span
5910
class="pf-u-screen-reader"
6011
>
@@ -63,35 +14,3 @@ exports[`sticky banner 1`] = `
6314
</div>
6415
</DocumentFragment>
6516
`;
66-
67-
exports[`success banner 1`] = `
68-
<DocumentFragment>
69-
<div
70-
aria-label="success"
71-
class="pf-c-banner pf-m-success"
72-
>
73-
success Banner
74-
<span
75-
class="pf-u-screen-reader"
76-
>
77-
success banner
78-
</span>
79-
</div>
80-
</DocumentFragment>
81-
`;
82-
83-
exports[`warning banner 1`] = `
84-
<DocumentFragment>
85-
<div
86-
aria-label="warning"
87-
class="pf-c-banner pf-m-warning"
88-
>
89-
warning Banner
90-
<span
91-
class="pf-u-screen-reader"
92-
>
93-
warning banner
94-
</span>
95-
</div>
96-
</DocumentFragment>
97-
`;

0 commit comments

Comments
 (0)