diff --git a/src/components/UI/VacancyStatus/VacancyStatus.test.js b/src/components/UI/VacancyStatus/VacancyStatus.test.js new file mode 100644 index 00000000..3f3dc444 --- /dev/null +++ b/src/components/UI/VacancyStatus/VacancyStatus.test.js @@ -0,0 +1,111 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import VacancyStatus from './VacancyStatus'; + +// Mock window.matchMedia +beforeEach(() => { + window.matchMedia = window.matchMedia || function () { + return { + matches: false, + addListener: function () { }, + removeListener: function () { } + }; + }; +}); + +describe('VacancyStatus Component', () => { + // Mock window.matchMedia + beforeEach(() => { + window.matchMedia = window.matchMedia || function () { + return { + matches: false, + addListener: function () { }, + removeListener: function () { } + }; + }; + }); + + describe('VacancyStatus Component', () => { + it('renders without crashing', () => { + const { container } = render(); + expect(container).toBeInTheDocument(); + }); + + it('displays the correct step for Triage', () => { + const { getByText } = render(); + expect(getByText('Triage')).toBeInTheDocument(); + }); + + it('displays the correct step for Chair Triage', () => { + const { getByText } = render(); + expect(getByText('Triage')).toBeInTheDocument(); + }); + + it('displays the correct step for Individual Scoring in Progress', () => { + const { getByText } = render(); + expect(getByText('Individual Scoring')).toBeInTheDocument(); + }); + + it('displays the correct step for Individual Scoring Complete', () => { + const { getByText } = render(); + expect(getByText('Individual Scoring')).toBeInTheDocument(); + }); + + it('displays the correct step for Committee Review in Progress', () => { + const { getByText } = render(); + expect(getByText('Committee Review')).toBeInTheDocument(); + }); + + it('displays the correct step for Committee Review Complete', () => { + const { getByText } = render(); + expect(getByText('Committee Review')).toBeInTheDocument(); + }); + + it('displays the correct step for Voting Complete', () => { + const { getByText } = render(); + expect(getByText('Voting Complete')).toBeInTheDocument(); + }); + + it('sets the correct current step for Triage', () => { + const { container } = render(); + const steps = container.querySelectorAll('.ant-steps-item'); + expect(steps[0]).toHaveClass('ant-steps-item-active'); + }); + + it('sets the correct current step for Chair Triage', () => { + const { container } = render(); + const steps = container.querySelectorAll('.ant-steps-item'); + expect(steps[0]).toHaveClass('ant-steps-item-active'); + }); + + it('sets the correct current step for Individual Scoring in Progress', () => { + const { container } = render(); + const steps = container.querySelectorAll('.ant-steps-item'); + expect(steps[1]).toHaveClass('ant-steps-item-active'); + }); + + it('sets the correct current step for Individual Scoring Complete', () => { + const { container } = render(); + const steps = container.querySelectorAll('.ant-steps-item'); + expect(steps[1]).toHaveClass('ant-steps-item-active'); + }); + + it('sets the correct current step for Committee Review in Progress', () => { + const { container } = render(); + const steps = container.querySelectorAll('.ant-steps-item'); + expect(steps[2]).toHaveClass('ant-steps-item-active'); + }); + + it('sets the correct current step for Committee Review Complete', () => { + const { container } = render(); + const steps = container.querySelectorAll('.ant-steps-item'); + expect(steps[2]).toHaveClass('ant-steps-item-active'); + }); + + it('sets the correct current step for Voting Complete', () => { + const { container } = render(); + const steps = container.querySelectorAll('.ant-steps-item'); + expect(steps[3]).toHaveClass('ant-steps-item-active'); + }); + }); +}); \ No newline at end of file