diff --git a/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.server.test.ts b/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.server.test.ts index 5fd5916c..f40a0c33 100644 --- a/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.server.test.ts +++ b/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.server.test.ts @@ -1,7 +1,6 @@ import { renderHookServerSide } from '../../../__tests__/utils.server'; -import useJumpToQuestionButtonProps from '../../../../src/hooks/usePropsGetters/useJumpToQuestionButtonProps'; import { QuizAPIReducerState } from '../../../../src/components/CioQuiz/quizApiReducer'; -import { QuizLocalReducerState } from '../../../../src/components/CioQuiz/quizLocalReducer'; +import useJumpToQuestionButtonProps from '../../../../src/hooks/usePropsGetters/useJumpToQuestionButtonProps'; describe('Testing Hook (server): useJumpToQuestionButtonProps', () => { it('initializes without errors and returns a function that provides button props', () => { @@ -13,14 +12,8 @@ describe('Testing Hook (server): useJumpToQuestionButtonProps', () => { }, } as unknown as QuizAPIReducerState; - const quizLocalStateMock = { - prevAnswerInputs: { - 1: { type: 'open', value: '' }, - }, - } as unknown as QuizLocalReducerState; - const { result } = renderHookServerSide( - () => useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiStateMock, quizLocalStateMock), + () => useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiStateMock), { initialProps: {}, } diff --git a/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.test.ts b/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.test.ts index e24a58df..194bd1d5 100644 --- a/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.test.ts +++ b/spec/hooks/usePropsGetters/useJumpToQuestionButtonProps/useJumpToQuestionButtonProps.test.ts @@ -1,7 +1,6 @@ import { renderHook, act } from '@testing-library/react'; import useJumpToQuestionButtonProps from '../../../../src/hooks/usePropsGetters/useJumpToQuestionButtonProps'; import { QuizAPIReducerState } from '../../../../src/components/CioQuiz/quizApiReducer'; -import { QuizLocalReducerState } from '../../../../src/components/CioQuiz/quizLocalReducer'; describe('Testing Hook (client): useJumpToQuestionButtonProps', () => { const mockEvent = { preventDefault: jest.fn() } as unknown as React.MouseEvent; @@ -15,40 +14,13 @@ describe('Testing Hook (client): useJumpToQuestionButtonProps', () => { }, } as unknown as QuizAPIReducerState; - const quizLocalStateMock = { - prevAnswerInputs: { - 1: { type: 'open', value: '' }, - }, - } as unknown as QuizLocalReducerState; - const { result } = renderHook(() => - useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiState, quizLocalStateMock) + useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiState) ); expect(result.current(2).className).toContain('disabled'); }); - it('returns button props with disabled class if an invalid question ID is provided', () => { - const quizApiState = { - quizCurrentQuestion: { - next_question: { id: '2' }, - isCoverQuestion: false, - }, - } as unknown as QuizAPIReducerState; - - const quizLocalStateMock = { - prevAnswerInputs: { - 1: { type: 'open', value: '' }, - }, - } as unknown as QuizLocalReducerState; - - const { result } = renderHook(() => - useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiState, quizLocalStateMock) - ); - - expect(result.current(-1).className).toContain('disabled'); - }); - it('returns button props without disabled class if an answer is provided', () => { const quizApiState = { quizCurrentQuestion: { @@ -57,15 +29,8 @@ describe('Testing Hook (client): useJumpToQuestionButtonProps', () => { }, } as unknown as QuizAPIReducerState; - const quizLocalStateMock = { - prevAnswerInputs: { - 1: { type: 'open', value: '' }, - 2: { type: 'open', value: '' }, - }, - } as unknown as QuizLocalReducerState; - const { result } = renderHook(() => - useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiState, quizLocalStateMock) + useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiState) ); expect(result.current(1).className).not.toContain('disabled'); @@ -79,15 +44,8 @@ describe('Testing Hook (client): useJumpToQuestionButtonProps', () => { }, } as unknown as QuizAPIReducerState; - const quizLocalStateMock = { - prevAnswerInputs: { - 1: { type: 'open', value: '' }, - 2: { type: 'open', value: '' }, - }, - } as unknown as QuizLocalReducerState; - const { result } = renderHook(() => - useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiState, quizLocalStateMock) + useJumpToQuestionButtonProps(jumpToQuestionMock, quizApiState) ); expect(typeof result.current(1).onClick).toBe('function'); diff --git a/src/hooks/usePropsGetters/index.ts b/src/hooks/usePropsGetters/index.ts index 259c5be7..962960e1 100644 --- a/src/hooks/usePropsGetters/index.ts +++ b/src/hooks/usePropsGetters/index.ts @@ -90,8 +90,7 @@ const usePropsGetters = ({ const getJumpToQuestionButtonProps: GetJumpToQuestionButtonProps = useJumpToQuestionButtonProps( jumpToQuestion, - quizApiState, - quizLocalState + quizApiState ); const getPreviousQuestionButtonProps: GetPreviousQuestionButtonProps = diff --git a/src/hooks/usePropsGetters/useJumpToQuestionButtonProps.ts b/src/hooks/usePropsGetters/useJumpToQuestionButtonProps.ts index 027aaea2..9f8fcb15 100644 --- a/src/hooks/usePropsGetters/useJumpToQuestionButtonProps.ts +++ b/src/hooks/usePropsGetters/useJumpToQuestionButtonProps.ts @@ -1,24 +1,16 @@ import { useCallback } from 'react'; import { QuizAPIReducerState } from '../../components/CioQuiz/quizApiReducer'; import { GetJumpToQuestionButtonProps, QuizEventsReturn } from '../../types'; -import { QuizLocalReducerState } from '../../components/CioQuiz/quizLocalReducer'; export default function useJumpToQuestionButtonProps( jumpToQuestion: QuizEventsReturn.JumpToQuestion, - quizApiState: QuizAPIReducerState, - quizLocalState: QuizLocalReducerState + quizApiState: QuizAPIReducerState ): GetJumpToQuestionButtonProps { const getJumpToQuestionButtonProps: GetJumpToQuestionButtonProps = useCallback( (id: number) => { - let buttonDisabled; - const currentQuestionId = quizApiState.quizCurrentQuestion?.next_question?.id; - - const answerIds = Object.keys(quizLocalState.prevAnswerInputs); - const isInvalidQuestionId = answerIds && !answerIds.includes(String(id)); - const isCurrentOrFutureQuestionId = currentQuestionId && id >= currentQuestionId; - - if (isInvalidQuestionId || isCurrentOrFutureQuestionId) { + let buttonDisabled; + if (currentQuestionId && id >= currentQuestionId) { buttonDisabled = true; } @@ -27,18 +19,13 @@ export default function useJumpToQuestionButtonProps( tabIndex: buttonDisabled ? -1 : 0, 'aria-disabled': buttonDisabled ? 'true' : 'false', 'aria-describedby': buttonDisabled ? 'jump-to-button-help' : '', - disabled: !!buttonDisabled, type: 'button', onClick: () => { jumpToQuestion(id); }, }; }, - [ - quizLocalState.prevAnswerInputs, - quizApiState.quizCurrentQuestion?.next_question?.id, - jumpToQuestion, - ] + [quizApiState.quizCurrentQuestion, jumpToQuestion] ); return getJumpToQuestionButtonProps;