import React from 'react'; import { renderHook } from '@testing-library/react'; import { useWizardFooter } from '../useWizardFooter'; import * as WizardContext from '../../WizardContext'; const customFooter = <>My custom footer; const useWizardContextSpy = jest.spyOn(WizardContext, 'useWizardContext'); const setFooter = jest.fn(); test('sets the footer when one is provided without a stepId', () => { useWizardContextSpy.mockReturnValueOnce({ setFooter } as any); renderHook(() => useWizardFooter(customFooter)); expect(setFooter).toHaveBeenCalledWith(customFooter); }); test(`sets the footer when the provided stepId matches the activeStep's id`, () => { useWizardContextSpy.mockReturnValueOnce({ setFooter, activeStep: { id: 'curr-step-id' } } as any); renderHook(() => useWizardFooter(customFooter, 'curr-step-id')); expect(setFooter).toHaveBeenCalledWith(customFooter); }); test(`does not set the footer when the provided stepId does not match the activeStep's id`, () => { useWizardContextSpy.mockReturnValueOnce({ setFooter, activeStep: { id: 'curr-step-id' } } as any); renderHook(() => useWizardFooter(customFooter, 'some-other-step-id')); expect(setFooter).not.toHaveBeenCalled(); }); test('sets the footer to null on unmount', () => { useWizardContextSpy.mockReturnValueOnce({ setFooter } as any); const { unmount } = renderHook(() => useWizardFooter(customFooter)); unmount(); expect(setFooter).toHaveBeenCalledWith(null); });