1 | import React from 'react';
|
2 | import { screen, render } from '@testing-library/react';
|
3 | import '@testing-library/jest-dom';
|
4 | import { Navbar } from '..';
|
5 | import { testForCustomTag } from '../testUtils';
|
6 |
|
7 | describe('Navbar', () => {
|
8 | it('should render .navbar markup', () => {
|
9 | let { container } = render(<Navbar />);
|
10 | expect(container).toContainHTML(
|
11 | '<nav class="navbar" ><div class="container-fluid" /></nav>',
|
12 | );
|
13 | });
|
14 |
|
15 | it('should render default .navbar-expand class', () => {
|
16 | render(<Navbar data-testid="navBar" expand />);
|
17 | expect(screen.getByTestId('navBar')).toHaveClass('navbar-expand');
|
18 | });
|
19 |
|
20 | it('should render size based .navbar-expand-* classes', () => {
|
21 | render(<Navbar data-testid="navBar" expand="md" />);
|
22 | expect(screen.getByTestId('navBar')).toHaveClass('navbar-expand-md');
|
23 | });
|
24 |
|
25 | it('should render custom tag', () => {
|
26 | testForCustomTag(Navbar, {}, 'div');
|
27 | });
|
28 |
|
29 | it('should render role', () => {
|
30 | let { container } = render(<Navbar role="navigation" />);
|
31 | expect(container).toContainHTML(
|
32 | '<nav role="navigation" class="navbar"><div class="container-fluid"></div></nav>',
|
33 | );
|
34 | });
|
35 |
|
36 | it('should support container options', () => {
|
37 | const { rerender, container } = render(<Navbar container={false} />);
|
38 |
|
39 | expect(container).toContainHTML('<nav class="navbar"></nav>');
|
40 |
|
41 | rerender(<Navbar container />);
|
42 | expect(container).toContainHTML(
|
43 | '<nav class="navbar"><div class="container"></div></nav>',
|
44 | );
|
45 |
|
46 | rerender(<Navbar container="xs" />);
|
47 | expect(container).toContainHTML(
|
48 | '<nav class="navbar"><div class="container-xs"></div></nav>',
|
49 | );
|
50 |
|
51 | rerender(<Navbar container="sm" />);
|
52 | expect(container).toContainHTML(
|
53 | '<nav class="navbar"><div class="container-sm"></div></nav>',
|
54 | );
|
55 |
|
56 | rerender(<Navbar container="md" />);
|
57 | expect(container).toContainHTML(
|
58 | '<nav class="navbar"><div class="container-md"></div></nav>',
|
59 | );
|
60 |
|
61 | rerender(
|
62 | <div data-testid="navBarLg">
|
63 | <Navbar container="lg" />
|
64 | </div>,
|
65 | );
|
66 | expect(container).toContainHTML(
|
67 | '<nav class="navbar"><div class="container-lg"></div></nav>',
|
68 | );
|
69 |
|
70 | rerender(<Navbar container="xl" />);
|
71 | expect(container).toContainHTML(
|
72 | '<nav class="navbar"><div class="container-xl"></div></nav>',
|
73 | );
|
74 | });
|
75 |
|
76 | it('should render children', () => {
|
77 | let { container } = render(<Navbar>Children</Navbar>);
|
78 | expect(container).toContainHTML(
|
79 | '<nav class="navbar"><div class="container-fluid">Children</div></nav>',
|
80 | );
|
81 | });
|
82 |
|
83 | it('should pass additional classNames', () => {
|
84 | render(<Navbar data-testid="navBar" className="extra" />);
|
85 | expect(screen.getByTestId('navBar')).toHaveClass('extra navbar');
|
86 | });
|
87 |
|
88 | it('should render prop based classes', () => {
|
89 | render(
|
90 | <Navbar
|
91 | data-testid="navBar"
|
92 | light
|
93 | dark
|
94 | expand="sm"
|
95 | color="success"
|
96 | sticky="top"
|
97 | fixed="top"
|
98 | />,
|
99 | );
|
100 | const node = screen.getByTestId('navBar');
|
101 | expect(node).toHaveClass('bg-success');
|
102 | expect(node).toHaveClass('navbar');
|
103 | expect(node).toHaveClass('navbar-expand-sm');
|
104 | expect(node).toHaveClass('navbar-light');
|
105 | expect(node).toHaveClass('navbar-dark');
|
106 | expect(node).toHaveClass('fixed-top');
|
107 | expect(node).toHaveClass('sticky-top');
|
108 | });
|
109 | });
|