import { expect } from 'chai' import { fireEvent, screen, render } from '@testing-library/react' import { UserEmailsProvider } from '../../../../../frontend/js/features/settings/context/user-email-context' import { LeaversSurveyAlert } from '../../../../../frontend/js/features/settings/components/leavers-survey-alert' import localStorage from '../../../../../frontend/js/infrastructure/local-storage' function renderWithProvider() { render(, { wrapper: ({ children }) => ( {children} ), }) } describe('', function () { it('should render before the expiration date', function () { const tomorrow = Date.now() + 1000 * 60 * 60 * 24 localStorage.setItem('showInstitutionalLeaversSurveyUntil', tomorrow) localStorage.setItem('hideInstitutionalLeaversSurvey', false) renderWithProvider() screen.getByRole('alert') screen.getByText(/Provide some quick feedback/) screen.getByRole('link', { name: 'Take a short survey' }) }) it('should not render after the expiration date', function () { const yesterday = Date.now() - 1000 * 60 * 60 * 24 localStorage.setItem('showInstitutionalLeaversSurveyUntil', yesterday) localStorage.setItem('hideInstitutionalLeaversSurvey', false) renderWithProvider() expect(screen.queryByRole('alert')).to.be.null }) it('should not render if it has been hidden', function () { const tomorrow = Date.now() + 1000 * 60 * 60 * 24 localStorage.setItem('showInstitutionalLeaversSurveyUntil', tomorrow) localStorage.setItem('hideInstitutionalLeaversSurvey', true) renderWithProvider() expect(screen.queryByRole('alert')).to.be.null }) it('should reset the expiration date when it is closed', function () { const tomorrow = Date.now() + 1000 * 60 * 60 * 24 localStorage.setItem('showInstitutionalLeaversSurveyUntil', tomorrow) localStorage.setItem('hideInstitutionalLeaversSurvey', false) renderWithProvider() screen.getByRole('alert') fireEvent.click(screen.getByRole('button')) expect(screen.queryByRole('alert')).to.be.null expect(localStorage.getItem('showInstitutionalLeaversSurveyUntil')).to.be .null }) })