@@ -2,6 +2,7 @@ import React from 'react';
22import userEvent from '@testing-library/user-event' ;
33import { render , screen } from '@testing-library/react' ;
44import SideNavBar , { SideNavBarKeys , OverflowTypes } from '..' ;
5+ import { SideNavBarItem } from '../../../types' ;
56
67describe ( 'SideNavBar' , ( ) => {
78 it ( 'renders correctly' , ( ) => {
@@ -51,6 +52,51 @@ describe('SideNavBar', () => {
5152 expect ( securityNavBarElement . getAttribute ( 'href' ) ) . toBe ( '/about/security/' ) ;
5253 } ) ;
5354
55+ it ( 'should contain a href to `~/get-involved`' , ( ) => {
56+ render ( < SideNavBar pageKey = { SideNavBarKeys . getInvolved } /> ) ;
57+ const getInvolvedNavBarElement = screen . getByText ( 'Get Involved' ) ;
58+ expect ( getInvolvedNavBarElement . getAttribute ( 'href' ) ) . toBe (
59+ '/get-involved/'
60+ ) ;
61+ } ) ;
62+
63+ it ( 'should contain a href to `~/get-involved/code-learn`' , ( ) => {
64+ render ( < SideNavBar pageKey = { SideNavBarKeys . codeLearn } /> ) ;
65+ const codeLearnNavBarElement = screen . getByText ( 'Code + Learn' ) ;
66+ expect ( codeLearnNavBarElement . getAttribute ( 'href' ) ) . toBe (
67+ '/get-involved/code-learn'
68+ ) ;
69+ } ) ;
70+
71+ it ( 'should contain a href to `~/get-involved/collab-summit`' , ( ) => {
72+ render ( < SideNavBar pageKey = { SideNavBarKeys . collabSummit } /> ) ;
73+ const collabSummitNavBarElement = screen . getByText ( 'Collab Summit' ) ;
74+ expect ( collabSummitNavBarElement . getAttribute ( 'href' ) ) . toBe (
75+ '/get-involved/collab-summit'
76+ ) ;
77+ } ) ;
78+
79+ it ( 'should contain a href to `~/get-involved/contribute`' , ( ) => {
80+ render ( < SideNavBar pageKey = { SideNavBarKeys . contribute } /> ) ;
81+ const contributeNavBarElement = screen . getByText ( 'Contribute' ) ;
82+ expect ( contributeNavBarElement . getAttribute ( 'href' ) ) . toBe (
83+ '/get-involved/contribute'
84+ ) ;
85+ } ) ;
86+
87+ it ( 'should contain a href to Code of Conduct' , ( ) => {
88+ render ( < SideNavBar pageKey = { SideNavBarKeys . codeOfConduct } /> ) ;
89+ const codeOfConductNavBarElement = screen . getByText ( 'Code of Conduct' ) ;
90+ const href = codeOfConductNavBarElement . getAttribute ( 'href' ) ;
91+ expect ( ( href || '' ) . includes ( 'code-of-conduct.md' ) ) . toBe ( true ) ;
92+ } ) ;
93+
94+ it ( 'should contain a href to `~/download`' , ( ) => {
95+ render ( < SideNavBar pageKey = { SideNavBarKeys . download } /> ) ;
96+ const downloadNavBarElement = screen . getByText ( 'Download' ) ;
97+ expect ( downloadNavBarElement . getAttribute ( 'href' ) ) . toBe ( '/download/' ) ;
98+ } ) ;
99+
54100 it ( 'should contain a href to `~/download/package-manager`' , ( ) => {
55101 render ( < SideNavBar pageKey = { SideNavBarKeys . packageManager } /> ) ;
56102 const packageManagerNavBarElement = screen . getByText ( 'Package Manager' ) ;
@@ -59,6 +105,14 @@ describe('SideNavBar', () => {
59105 ) ;
60106 } ) ;
61107
108+ it ( 'should contain a href to `~/download/releases`' , ( ) => {
109+ render ( < SideNavBar pageKey = { SideNavBarKeys . previousReleases } /> ) ;
110+ const previousReleasesNavBarElement = screen . getByText ( 'Previous Releases' ) ;
111+ expect ( previousReleasesNavBarElement . getAttribute ( 'href' ) ) . toBe (
112+ '/download/releases/'
113+ ) ;
114+ } ) ;
115+
62116 it ( 'should set the a single page as active' , ( ) => {
63117 const { container } = render (
64118 < SideNavBar pageKey = { SideNavBarKeys . releases } />
@@ -89,4 +143,24 @@ describe('SideNavBar', () => {
89143 await userEvent . click ( downloadItem ) ;
90144 expect ( document . body . style . overflow ) . toBe ( OverflowTypes . unset ) ;
91145 } ) ;
146+
147+ it ( 'should contain a href to https link' , ( ) => {
148+ const title = 'title' ;
149+ const slug = 'https://test.domain' ;
150+ const items : SideNavBarItem [ ] = [ { title, slug, isTitle : true } ] ;
151+ render ( < SideNavBar pageKey = { SideNavBarKeys . releases } items = { items } /> ) ;
152+ const navBarElement = screen . getByText ( title ) ;
153+ expect ( navBarElement . getAttribute ( 'href' ) ) . toBe ( slug ) ;
154+ } ) ;
155+
156+ it ( 'should close the Navigation when a link is clicked' , async ( ) => {
157+ const activeClassName = 'navigationItemActive' ;
158+ render ( < SideNavBar pageKey = { SideNavBarKeys . releases } /> ) ;
159+ const releasesNavBarElement = screen . getByText ( 'Releases' ) ;
160+ expect ( releasesNavBarElement . classList ) . toContain ( activeClassName ) ;
161+ await userEvent . click ( releasesNavBarElement ) ;
162+ expect ( releasesNavBarElement . classList ) . toEqual (
163+ expect . not . arrayContaining ( [ activeClassName ] )
164+ ) ;
165+ } ) ;
92166} ) ;
0 commit comments