11import React from 'react' ;
22import { render , fireEvent , waitFor } from '@testing-library/react' ;
3+ import '@testing-library/jest-dom/extend-expect' ;
34import { MemoryRouter } from 'react-router-dom' ;
45import { ThemeProvider , createTheme } from '@mui/material/styles' ;
56import NavBar from '../app/src/components/top/NavBar' ;
7+ import navbarDropDown from '../app/src/components/top/navbarDropDown'
68import * as projectFunctions from '../app/src/helperFunctions/projectGetSaveDel' ;
79import { Provider } from 'react-redux' ;
810import { configureStore } from '@reduxjs/toolkit' ;
@@ -23,14 +25,20 @@ jest.mock('../app/src/helperFunctions/projectGetSaveDel', () => ({
2325 unpublishProject : jest . fn ( ) ,
2426} ) ) ;
2527
26- const originalError = console . error ;
27- beforeAll ( ( ) => {
28- console . error = jest . fn ( ) ;
29- } ) ;
28+ //mock the file saver library
29+ jest . mock ( 'file-saver' , ( ) => ( {
30+ ...jest . requireActual ( 'file-saver' ) ,
31+ saveAs : jest . fn ( ) ,
32+ } ) ) ;
3033
31- afterAll ( ( ) => {
32- console . error = originalError ;
33- } ) ;
34+ // const originalError = console.error;
35+ // beforeAll(() => {
36+ // console.error = jest.fn();
37+ // });
38+
39+ // afterAll(() => {
40+ // console.error = originalError;
41+ // });
3442
3543// Mocking the render
3644const renderNavBar = ( store ) => {
@@ -156,4 +164,66 @@ describe('NavBar Component', () => {
156164 fireEvent . click ( unpublishButton ) ;
157165 }
158166 } ) ;
167+
168+ it ( 'handles export correctly' , async ( ) => {
169+ const store = configureStore ( {
170+ reducer : rootReducer ,
171+ preloadedState : {
172+ appState : {
173+ ...appStateInitialState ,
174+ isLoggedIn : true ,
175+ name : 'Mock Project Name' ,
176+ } ,
177+ } ,
178+ } ) ;
179+
180+ console . log ( 'Before rendering NavBar' ) ;
181+
182+ const { getByText } = renderNavBar ( store ) ;
183+
184+ console . log ( 'After rendering NavBar' ) ;
185+
186+ // Find and click the export button
187+ const exportButton = getByText ( '< > Export' ) ;
188+ fireEvent . click ( exportButton ) ;
189+
190+
191+ await waitFor ( ( ) => {
192+ const exportModal = getByText ( 'Click to download in zip file:' ) ;
193+ expect ( exportModal ) . toBeInTheDocument ( ) ;
194+ } ) ;
195+
196+
197+ const exportComponentsOption = getByText ( 'Export components' ) ;
198+ fireEvent . click ( exportComponentsOption ) ;
199+
200+ } ) ;
201+
202+
203+
204+ it ( 'handles dropdown menu correctly' , ( ) => {
205+ const store = configureStore ( {
206+ reducer : rootReducer ,
207+ preloadedState : {
208+ appState : {
209+ ...appStateInitialState ,
210+ isLoggedIn : true ,
211+ name : 'Mock Project Name' ,
212+ } ,
213+ } ,
214+ } ) ;
215+
216+ const { getByTestId } = renderNavBar ( store ) ;
217+ const moreVertButton = getByTestId ( 'more-vert-button' ) ;
218+
219+
220+ expect ( moreVertButton ) . toBeInTheDocument ( ) ;
221+
222+
223+ fireEvent . click ( moreVertButton ) ;
224+
225+
226+ } ) ;
227+
228+
159229} ) ;
0 commit comments