@times-components/ts-components 1.142.3 → 1.143.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.143.0](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.142.3...@times-components/ts-components@1.143.0) (2025-11-19)
7
+
8
+
9
+ ### Features
10
+
11
+ * **TMPZ-1463:** update quizle sidebar to use TPA query and to retain… ([#4233](https://github.com/newsuk/times-components/issues/4233)) ([25dc292](https://github.com/newsuk/times-components/commit/25dc2929ad506e28311ed32d444024e1d1c24892))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [1.142.3](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.142.2...@times-components/ts-components@1.142.3) (2025-11-18)
7
18
 
8
19
 
@@ -2,5 +2,6 @@ import { FC } from 'react';
2
2
  export interface QuizleSideBarProps {
3
3
  sectionTitle: string;
4
4
  pageLink: string;
5
+ quizleQuestion?: string;
5
6
  }
6
7
  export declare const QuizleSidebar: FC<QuizleSideBarProps>;
@@ -2,46 +2,15 @@ import React, { useEffect, useState } from 'react';
2
2
  import { Container, Divider, Link, Title, TitleIconContainer, Bottom } from './styles';
3
3
  import { useTrackingContext } from '../../helpers/tracking/TrackingContextProvider';
4
4
  import { handleClick } from './tracking-helpers';
5
- export const QuizleSidebar = ({ sectionTitle, pageLink }) => {
5
+ export const QuizleSidebar = ({ sectionTitle, pageLink, quizleQuestion }) => {
6
6
  const { fireAnalyticsEvent } = useTrackingContext();
7
7
  const [currentQuestion, setCurrentQuestion] = useState(null);
8
- const backupQuestion = [
9
- {
10
- id: 0,
11
- publishDate: '2024-10-29T00:00:00.000Z',
12
- question: "Which type of dog gets its name from the Welsh words for 'dwarf' and 'dog'?",
13
- solution: 'Corgi'
14
- }
15
- ];
16
- // fetching quizle question from api
17
- const fetchQuestions = async () => {
18
- try {
19
- const response = await fetch('https://tnl-render.tools.news/production/content/puzzles/quizle/questions.json');
20
- if (!response.ok) {
21
- throw new Error('Failed to fetch');
22
- }
23
- const data = await response.json();
24
- return data;
25
- }
26
- catch (error) {
27
- return backupQuestion;
28
- }
29
- };
30
- const findTodaysQuestion = (questions) => {
31
- const today = new Date().toDateString();
32
- const todaysQuestion = questions.find(q => new Date(q.publishDate).toDateString() === today);
33
- return todaysQuestion && todaysQuestion.question
34
- ? todaysQuestion.question
35
- : backupQuestion[0].question;
36
- };
37
8
  useEffect(() => {
38
- const loadQuestion = async () => {
39
- const questions = await fetchQuestions();
40
- const question = findTodaysQuestion(questions);
41
- setCurrentQuestion(question);
42
- };
43
- loadQuestion();
44
- }, []);
9
+ // Use the quizleQuestion prop if provided (it includes fallback logic in parent)
10
+ if (quizleQuestion) {
11
+ setCurrentQuestion(quizleQuestion);
12
+ }
13
+ }, [quizleQuestion]);
45
14
  return (React.createElement(Container, { "data-testid": "quizleSidebar" },
46
15
  React.createElement(React.Fragment, null,
47
16
  React.createElement(TitleIconContainer, null,
@@ -59,4 +28,4 @@ export const QuizleSidebar = ({ sectionTitle, pageLink }) => {
59
28
  React.createElement("span", { className: "q-arrow" }))),
60
29
  React.createElement(Divider, null)));
61
30
  };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVpemxlU2lkZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3F1aXpsZS1zaWRlYmFyL1F1aXpsZVNpZGViYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQU0sU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxJQUFJLEVBQ0osS0FBSyxFQUNMLGtCQUFrQixFQUNsQixNQUFNLEVBQ1AsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT2pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMkIsQ0FBQyxFQUNwRCxZQUFZLEVBQ1osUUFBUSxFQUNULEVBQUUsRUFBRTtJQUNILE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDcEQsTUFBTSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFNUUsTUFBTSxjQUFjLEdBQUc7UUFDckI7WUFDRSxFQUFFLEVBQUUsQ0FBQztZQUNMLFdBQVcsRUFBRSwwQkFBMEI7WUFDdkMsUUFBUSxFQUNOLDZFQUE2RTtZQUMvRSxRQUFRLEVBQUUsT0FBTztTQUNsQjtLQUNGLENBQUM7SUFDRixvQ0FBb0M7SUFDcEMsTUFBTSxjQUFjLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDaEMsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUMxQixnRkFBZ0YsQ0FDakYsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDcEM7WUFDRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLGNBQWMsQ0FBQztTQUN2QjtJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxTQUFnQyxFQUFFLEVBQUU7UUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUNuQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxLQUFLLENBQ3RELENBQUM7UUFDRixPQUFPLGNBQWMsSUFBSSxjQUFjLENBQUMsUUFBUTtZQUM5QyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVE7WUFDekIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQyxDQUFDO0lBRUYsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQzlCLE1BQU0sU0FBUyxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0Msa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDO1FBRUYsWUFBWSxFQUFFLENBQUM7SUFDakIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsT0FBTyxDQUNMLG9CQUFDLFNBQVMsbUJBQWEsZUFBZTtRQUNwQztZQUNFLG9CQUFDLGtCQUFrQjtnQkFDakIsNkJBQUssU0FBUyxFQUFDLGNBQWM7b0JBQzNCLG9CQUFDLElBQUksSUFDSCxJQUFJLEVBQUUsUUFBUSxFQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixXQUFXLENBQ1Qsa0JBQWtCLEVBQ2xCLGdDQUFnQyxDQUNqQyxFQUVILFNBQVMsRUFBQyxTQUFTO3dCQUVuQixvQkFBQyxLQUFLLFFBQUUsWUFBWSxDQUFTLENBQ3hCLENBQ0g7Z0JBQ04sNkJBQ0UsR0FBRyxFQUFDLDRFQUE0RSxFQUNoRixTQUFTLEVBQUMsZUFBZSxHQUN6QixDQUNpQixDQUNwQjtRQUNILG9CQUFDLE9BQU8sT0FBRztRQUNYLG9CQUFDLE1BQU07WUFDTDtnQkFDRSw4QkFBTSxTQUFTLEVBQUMsUUFBUSxVQUFXO2dCQUNsQyxlQUFlLENBQ2Q7WUFDSixvQkFBQyxJQUFJLElBQ0gsSUFBSSxFQUFFLFFBQVEsRUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osV0FBVyxDQUNULGtCQUFrQixFQUNsQixxQ0FBcUMsQ0FDdEMsRUFFSCxTQUFTLEVBQUMsYUFBYTs7Z0JBR3ZCLDhCQUFNLFNBQVMsRUFBQyxTQUFTLEdBQUcsQ0FDdkIsQ0FDQTtRQUNULG9CQUFDLE9BQU8sT0FBRyxDQUNELENBQ2IsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVpemxlU2lkZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3F1aXpsZS1zaWRlYmFyL1F1aXpsZVNpZGViYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQU0sU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxJQUFJLEVBQ0osS0FBSyxFQUNMLGtCQUFrQixFQUNsQixNQUFNLEVBQ1AsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUWpELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBMkIsQ0FBQyxFQUNwRCxZQUFZLEVBQ1osUUFBUSxFQUNSLGNBQWMsRUFDZixFQUFFLEVBQUU7SUFDSCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRTVFLFNBQVMsQ0FDUCxHQUFHLEVBQUU7UUFDSCxpRkFBaUY7UUFDakYsSUFBSSxjQUFjLEVBQUU7WUFDbEIsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDLEVBQ0QsQ0FBQyxjQUFjLENBQUMsQ0FDakIsQ0FBQztJQUVGLE9BQU8sQ0FDTCxvQkFBQyxTQUFTLG1CQUFhLGVBQWU7UUFDcEM7WUFDRSxvQkFBQyxrQkFBa0I7Z0JBQ2pCLDZCQUFLLFNBQVMsRUFBQyxjQUFjO29CQUMzQixvQkFBQyxJQUFJLElBQ0gsSUFBSSxFQUFFLFFBQVEsRUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osV0FBVyxDQUNULGtCQUFrQixFQUNsQixnQ0FBZ0MsQ0FDakMsRUFFSCxTQUFTLEVBQUMsU0FBUzt3QkFFbkIsb0JBQUMsS0FBSyxRQUFFLFlBQVksQ0FBUyxDQUN4QixDQUNIO2dCQUNOLDZCQUNFLEdBQUcsRUFBQyw0RUFBNEUsRUFDaEYsU0FBUyxFQUFDLGVBQWUsR0FDekIsQ0FDaUIsQ0FDcEI7UUFDSCxvQkFBQyxPQUFPLE9BQUc7UUFDWCxvQkFBQyxNQUFNO1lBQ0w7Z0JBQ0UsOEJBQU0sU0FBUyxFQUFDLFFBQVEsVUFBVztnQkFDbEMsZUFBZSxDQUNkO1lBQ0osb0JBQUMsSUFBSSxJQUNILElBQUksRUFBRSxRQUFRLEVBQ2QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLFdBQVcsQ0FDVCxrQkFBa0IsRUFDbEIscUNBQXFDLENBQ3RDLEVBRUgsU0FBUyxFQUFDLGFBQWE7O2dCQUd2Qiw4QkFBTSxTQUFTLEVBQUMsU0FBUyxHQUFHLENBQ3ZCLENBQ0E7UUFDVCxvQkFBQyxPQUFPLE9BQUcsQ0FDRCxDQUNiLENBQUM7QUFDSixDQUFDLENBQUMifQ==
@@ -6,7 +6,8 @@ import analyticsStream from '../../fixtures/analytics-actions/analytics-actions'
6
6
  const getAttributes = () => {
7
7
  const sectionTitle = "Today's Quizle";
8
8
  const pageLink = 'https://www.thetimes.com/quizle';
9
- return { sectionTitle, pageLink };
9
+ const quizleQuestion = "Which type of dog gets its name from the Welsh words for 'dwarf' and 'dog'?";
10
+ return { sectionTitle, pageLink, quizleQuestion };
10
11
  };
11
12
  storiesOf('Typescript Component/Quizle Sidebar', module).add('Quizle Sidebar', () => {
12
13
  const props = getAttributes();
@@ -21,4 +22,4 @@ storiesOf('Typescript Component/Quizle Sidebar', module).add('Quizle Sidebar', (
21
22
  React.createElement("div", { style: { maxWidth: '204px' } },
22
23
  React.createElement(QuizleSidebar, Object.assign({}, props)))));
23
24
  });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVpemxlU2lkZWJhci5zdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcXVpemxlLXNpZGViYXIvUXVpemxlU2lkZWJhci5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLGVBQWUsTUFBTSxvREFBb0QsQ0FBQztBQUVqRixNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDekIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7SUFDdEMsTUFBTSxRQUFRLEdBQUcsaUNBQWlDLENBQUM7SUFFbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRixTQUFTLENBQUMscUNBQXFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUMxRCxnQkFBZ0IsRUFDaEIsR0FBRyxFQUFFO0lBQ0gsTUFBTSxLQUFLLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFFOUIsT0FBTyxDQUNMLG9CQUFDLHVCQUF1QixJQUN0QixPQUFPLEVBQUU7WUFDUCxTQUFTLEVBQUUsaUJBQWlCO1lBQzVCLE1BQU0sRUFBRSxlQUFlO1lBQ3ZCLEtBQUssRUFBRTtnQkFDTCxZQUFZLEVBQUUsaUJBQWlCO2dCQUMvQixlQUFlLEVBQUUsU0FBUzthQUMzQjtTQUNGLEVBQ0QsZUFBZSxFQUFFLGVBQWU7UUFFaEMsNkJBQUssS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtZQUMvQixvQkFBQyxhQUFhLG9CQUFLLEtBQUssRUFBSSxDQUN4QixDQUNrQixDQUMzQixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVpemxlU2lkZWJhci5zdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcXVpemxlLXNpZGViYXIvUXVpemxlU2lkZWJhci5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLGVBQWUsTUFBTSxvREFBb0QsQ0FBQztBQUVqRixNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDekIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7SUFDdEMsTUFBTSxRQUFRLEdBQUcsaUNBQWlDLENBQUM7SUFDbkQsTUFBTSxjQUFjLEdBQ2xCLDZFQUE2RSxDQUFDO0lBRWhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGLFNBQVMsQ0FBQyxxQ0FBcUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQzFELGdCQUFnQixFQUNoQixHQUFHLEVBQUU7SUFDSCxNQUFNLEtBQUssR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUU5QixPQUFPLENBQ0wsb0JBQUMsdUJBQXVCLElBQ3RCLE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsTUFBTSxFQUFFLGVBQWU7WUFDdkIsS0FBSyxFQUFFO2dCQUNMLFlBQVksRUFBRSxpQkFBaUI7Z0JBQy9CLGVBQWUsRUFBRSxTQUFTO2FBQzNCO1NBQ0YsRUFDRCxlQUFlLEVBQUUsZUFBZTtRQUVoQyw2QkFBSyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1lBQy9CLG9CQUFDLGFBQWEsb0JBQUssS0FBSyxFQUFJLENBQ3hCLENBQ2tCLENBQzNCLENBQUM7QUFDSixDQUFDLENBQ0YsQ0FBQyJ9
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { QuizleSidebar } from '../QuizleSidebar';
3
- import { render, fireEvent, waitFor } from '@testing-library/react';
3
+ import { render, fireEvent } from '@testing-library/react';
4
4
  import '@testing-library/jest-dom';
5
5
  import { useTrackingContext } from '../../../helpers/tracking/TrackingContextProvider';
6
6
  jest.mock('../../../helpers/tracking/TrackingContextProvider', () => ({
@@ -9,7 +9,8 @@ jest.mock('../../../helpers/tracking/TrackingContextProvider', () => ({
9
9
  const mockFireAnalyticsEvent = jest.fn();
10
10
  const defaultProps = {
11
11
  sectionTitle: 'Puzzles for you',
12
- pageLink: 'https://www.thetimes.com/puzzles'
12
+ pageLink: 'https://www.thetimes.com/puzzles',
13
+ quizleQuestion: "Which type of dog gets its name from the Welsh words for 'dwarf' and 'dog'?"
13
14
  };
14
15
  const renderComponent = (props) => render(React.createElement(QuizleSidebar, Object.assign({}, props)));
15
16
  describe('QuizleSidebar', () => {
@@ -18,8 +19,6 @@ describe('QuizleSidebar', () => {
18
19
  useTrackingContext.mockReturnValue({
19
20
  fireAnalyticsEvent: mockFireAnalyticsEvent
20
21
  });
21
- // Manually mock fetch before each test
22
- global.fetch = jest.fn();
23
22
  });
24
23
  afterEach(() => {
25
24
  jest.clearAllMocks();
@@ -56,38 +55,26 @@ describe('QuizleSidebar', () => {
56
55
  }
57
56
  });
58
57
  });
59
- it('should handle API failure and use the backup question', async () => {
60
- global.fetch.mockRejectedValue(new Error('Failed to fetch'));
58
+ it('should display the question from quizleQuestion prop', () => {
61
59
  const { getByText } = renderComponent(defaultProps);
62
- await waitFor(() => expect(global.fetch).toHaveBeenCalled());
63
60
  expect(getByText("Which type of dog gets its name from the Welsh words for 'dwarf' and 'dog'?")).toBeInTheDocument();
64
61
  });
65
- it('should display backup question if API returns no questions', async () => {
66
- global.fetch.mockResolvedValueOnce({
67
- ok: true,
68
- json: jest.fn().mockResolvedValue([])
69
- });
70
- const { getByText } = renderComponent(defaultProps);
71
- await waitFor(() => expect(global.fetch).toHaveBeenCalled());
72
- expect(getByText(`Which type of dog gets its name from the Welsh words for 'dwarf' and 'dog'?`)).toBeInTheDocument();
73
- });
74
- it("should display today's question if API provides a valid question", async () => {
75
- const today = new Date().toISOString(); // Get today's date in ISO format
76
- // Mock API returning a valid question for today
77
- global.fetch.mockResolvedValueOnce({
78
- ok: true,
79
- json: jest.fn().mockResolvedValue([
80
- {
81
- id: 1,
82
- publishDate: today,
83
- question: 'What is the capital of France?',
84
- solution: 'Paris'
85
- }
86
- ])
87
- });
88
- const { getByText } = renderComponent(defaultProps);
89
- await waitFor(() => expect(global.fetch).toHaveBeenCalled());
62
+ it('should display a custom question when provided', () => {
63
+ const customProps = {
64
+ ...defaultProps,
65
+ quizleQuestion: 'What is the capital of France?'
66
+ };
67
+ const { getByText } = renderComponent(customProps);
90
68
  expect(getByText('What is the capital of France?')).toBeInTheDocument();
91
69
  });
70
+ it('should handle null quizleQuestion gracefully', () => {
71
+ const propsWithoutQuestion = {
72
+ sectionTitle: 'Puzzles for you',
73
+ pageLink: 'https://www.thetimes.com/puzzles'
74
+ };
75
+ const { container } = renderComponent(propsWithoutQuestion);
76
+ // Component should still render without crashing
77
+ expect(container.querySelector('[data-testid="quizleSidebar"]')).toBeInTheDocument();
78
+ });
92
79
  });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3F1aXpsZS1zaWRlYmFyL19fdGVzdHNfXy9pbmRleC50ZXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBc0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXZGLElBQUksQ0FBQyxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0NBQzlCLENBQUMsQ0FBQyxDQUFDO0FBRUosTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFFekMsTUFBTSxZQUFZLEdBQXVCO0lBQ3ZDLFlBQVksRUFBRSxpQkFBaUI7SUFDL0IsUUFBUSxFQUFFLGtDQUFrQztDQUM3QyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUF5QixFQUFFLEVBQUUsQ0FDcEQsTUFBTSxDQUFDLG9CQUFDLGFBQWEsb0JBQUssS0FBSyxFQUFJLENBQUMsQ0FBQztBQUV2QyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BCLGtCQUFnQyxDQUFDLGVBQWUsQ0FBQztZQUNoRCxrQkFBa0IsRUFBRSxzQkFBc0I7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsdUNBQXVDO1FBQ3ZDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFB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
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3F1aXpsZS1zaWRlYmFyL19fdGVzdHNfXy9pbmRleC50ZXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBc0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFdkYsSUFBSSxDQUFDLElBQUksQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Q0FDOUIsQ0FBQyxDQUFDLENBQUM7QUFFSixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUV6QyxNQUFNLFlBQVksR0FBdUI7SUFDdkMsWUFBWSxFQUFFLGlCQUFpQjtJQUMvQixRQUFRLEVBQUUsa0NBQWtDO0lBQzVDLGNBQWMsRUFDWiw2RUFBNkU7Q0FDaEYsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQ3BELE1BQU0sQ0FBQyxvQkFBQyxhQUFhLG9CQUFLLEtBQUssRUFBSSxDQUFDLENBQUM7QUFFdkMsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7SUFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQixrQkFBZ0MsQ0FBQyxlQUFlLENBQUM7WUFDaEQsa0JBQWtCLEVBQUUsc0JBQXNCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@times-components/ts-components",
3
- "version": "1.142.3",
3
+ "version": "1.143.0",
4
4
  "description": "Reuseable Typescript React Components",
5
5
  "main": "dist/index.js",
6
6
  "dev": "dist/index.js",
@@ -50,16 +50,16 @@
50
50
  "node": ">=8.9"
51
51
  },
52
52
  "dependencies": {
53
- "@times-components/button": "2.10.98",
54
- "@times-components/date-publication": "0.31.22",
55
- "@times-components/icons": "2.23.38",
56
- "@times-components/image": "6.20.14",
57
- "@times-components/link": "3.18.22",
58
- "@times-components/provider": "1.48.15",
53
+ "@times-components/button": "2.10.99",
54
+ "@times-components/date-publication": "0.31.23",
55
+ "@times-components/icons": "2.23.39",
56
+ "@times-components/image": "6.20.15",
57
+ "@times-components/link": "3.18.23",
58
+ "@times-components/provider": "1.48.16",
59
59
  "@times-components/provider-queries": "2.29.0",
60
- "@times-components/related-articles": "6.20.38",
61
- "@times-components/ts-slices": "1.10.37",
62
- "@times-components/ts-styleguide": "1.56.16",
60
+ "@times-components/related-articles": "6.20.39",
61
+ "@times-components/ts-slices": "1.10.38",
62
+ "@times-components/ts-styleguide": "1.56.17",
63
63
  "@times-components/utils": "6.35.2",
64
64
  "algoliasearch": "4.9.0",
65
65
  "date-fns": "2.28.0",
@@ -85,7 +85,7 @@
85
85
  "@testing-library/react": "^12.1.2",
86
86
  "@testing-library/react-hooks": "8.0.1",
87
87
  "@times-components/provider-test-tools": "1.33.3",
88
- "@times-components/storybook": "4.16.15",
88
+ "@times-components/storybook": "4.16.16",
89
89
  "@times-components/test-utils": "2.4.2",
90
90
  "@types/lodash.get": "4.4.6",
91
91
  "@types/lodash.keyby": "4.6.6",
@@ -119,5 +119,5 @@
119
119
  "@testing-library/jest-dom/extend-expect"
120
120
  ]
121
121
  },
122
- "gitHead": "5af5b2c0ad33d05ad19d8433924d7899238e2277"
122
+ "gitHead": "9ef5ef70f393b8e435d1b257c292a1b036763b42"
123
123
  }