UNPKG

3.35 kBJavaScriptView Raw
1import React from 'react';
2import { screen, render } from '@testing-library/react';
3import '@testing-library/jest-dom';
4import { Navbar } from '..';
5import { testForCustomTag } from '../testUtils';
6
7describe('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});