@times-components/ts-components 1.36.2 → 1.38.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/components/article-header/__tests__/ArticleHeader.test.js +12 -12
  3. package/dist/components/recommended-articles/RecommendedArticles.d.ts +4 -5
  4. package/dist/components/recommended-articles/RecommendedArticles.js +15 -26
  5. package/dist/components/recommended-articles/RecommendedArticles.stories.d.ts +5 -1
  6. package/dist/components/recommended-articles/RecommendedArticles.stories.js +26 -52
  7. package/dist/components/recommended-articles/RecommendedFetch.d.ts +6 -0
  8. package/dist/components/recommended-articles/RecommendedFetch.js +12 -0
  9. package/dist/components/recommended-articles/__tests__/RecommendedArticles.test.js +26 -60
  10. package/dist/components/recommended-articles/__tests__/RecommendedFetch.test.d.ts +1 -0
  11. package/dist/components/recommended-articles/__tests__/RecommendedFetch.test.js +14 -0
  12. package/dist/components/recommended-articles/formatters.d.ts +41 -0
  13. package/dist/components/recommended-articles/formatters.js +57 -0
  14. package/dist/fixtures/preview-data/recommended-articles.d.ts +84 -0
  15. package/dist/fixtures/preview-data/recommended-articles.js +351 -0
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +2 -2
  18. package/package.json +6 -6
  19. package/rnw.js +1 -1
  20. package/src/components/article-header/__tests__/ArticleHeader.test.tsx +11 -11
  21. package/src/components/recommended-articles/RecommendedArticles.stories.tsx +41 -58
  22. package/src/components/recommended-articles/RecommendedArticles.tsx +28 -54
  23. package/src/components/recommended-articles/RecommendedFetch.tsx +25 -0
  24. package/src/components/recommended-articles/__tests__/RecommendedArticles.test.tsx +45 -75
  25. package/src/components/recommended-articles/__tests__/RecommendedFetch.test.tsx +23 -0
  26. package/src/components/recommended-articles/__tests__/__snapshots__/RecommendedArticles.test.tsx.snap +11 -55
  27. package/src/components/recommended-articles/__tests__/__snapshots__/RecommendedFetch.test.tsx.snap +9 -0
  28. package/src/components/recommended-articles/formatters.ts +100 -0
  29. package/src/fixtures/preview-data/recommended-articles.ts +385 -0
  30. package/src/index.ts +2 -2
  31. package/src/types/externs.d.ts +0 -7
package/CHANGELOG.md CHANGED
@@ -3,6 +3,39 @@
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.38.0](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.37.0...@times-components/ts-components@1.38.0) (2022-06-08)
7
+
8
+
9
+ ### Features
10
+
11
+ * **TDP-1935:** Recommended Articles ([#2971](https://github.com/newsuk/times-components/issues/2971)) ([d3c873e](https://github.com/newsuk/times-components/commit/d3c873e4c13b030159ef4caa78740206fa8f6f98))
12
+
13
+
14
+
15
+
16
+
17
+ # [1.37.0](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.36.3...@times-components/ts-components@1.37.0) (2022-06-08)
18
+
19
+
20
+ ### Features
21
+
22
+ * **TDP-1935:** Recommended articles ([#2969](https://github.com/newsuk/times-components/issues/2969)) ([9b6b9b0](https://github.com/newsuk/times-components/commit/9b6b9b09c918433ad5b2945d5fe2fc4c13002c13))
23
+
24
+
25
+
26
+
27
+
28
+ ## [1.36.3](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.36.2...@times-components/ts-components@1.36.3) (2022-06-07)
29
+
30
+
31
+ ### Bug Fixes
32
+
33
+ * **TDP-1825:** timezone tests ([#2968](https://github.com/newsuk/times-components/issues/2968)) ([bb09b71](https://github.com/newsuk/times-components/commit/bb09b713793c254cfc7e3ff9c69592060097baf4))
34
+
35
+
36
+
37
+
38
+
6
39
  ## [1.36.2](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.36.1...@times-components/ts-components@1.36.2) (2022-06-07)
7
40
 
8
41
 
@@ -10,31 +10,31 @@ describe('ArticleHeader', () => {
10
10
  it('Within a minute of updating', () => {
11
11
  MockDate.set('2021-12-31T06:30:10+00:00');
12
12
  const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
13
- expect(getByText('6.30am GMT')).toBeVisible();
13
+ expect(getByText(/6.30am/i)).toBeVisible();
14
14
  expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
15
15
  });
16
16
  it('Within an hour of updating', () => {
17
17
  MockDate.set('2021-12-31T07:00:00+00:00');
18
18
  const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
19
- expect(getByText('6.30am GMT')).toBeVisible();
19
+ expect(getByText(/6.30am/i)).toBeVisible();
20
20
  expect(getByText('30 minutes ago')).toBeVisible();
21
21
  });
22
22
  it('Between 1 and 12 hours after updating', () => {
23
23
  MockDate.set('2021-12-31T08:30:00+00:00');
24
24
  const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
25
- expect(getByText('6.30am GMT')).toBeVisible();
25
+ expect(getByText(/6.30am/i)).toBeVisible();
26
26
  expect(getByText('2 hours ago')).toBeVisible();
27
27
  });
28
28
  it('After 12 hours but same calendar day', () => {
29
29
  MockDate.set('2021-12-20T20:30:00+00:00');
30
30
  const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
31
- expect(getByText('6.30am GMT')).toBeVisible();
31
+ expect(getByText(/6.30am/i)).toBeVisible();
32
32
  expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
33
33
  });
34
34
  it('With breaking flag and headline', () => {
35
35
  MockDate.set('2021-12-31T07:00:00+00:00');
36
36
  const { getByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
37
- expect(getByText('6.30am GMT')).toBeVisible();
37
+ expect(getByText(/6.30am/i)).toBeVisible();
38
38
  expect(getByText('30 minutes ago')).toBeVisible();
39
39
  expect(getByText('BREAKING')).toBeVisible();
40
40
  expect(getByText('This is the headline')).toBeVisible();
@@ -43,7 +43,7 @@ describe('ArticleHeader', () => {
43
43
  it('With breaking flag expired', () => {
44
44
  MockDate.set('2021-12-31T08:30:00+00:00');
45
45
  const { getByText, queryByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true" }));
46
- expect(getByText('6.30am GMT')).toBeVisible();
46
+ expect(getByText(/6.30am/i)).toBeVisible();
47
47
  expect(getByText('2 hours ago')).toBeVisible();
48
48
  expect(queryByText('BREAKING')).toBeFalsy();
49
49
  });
@@ -54,25 +54,25 @@ describe('ArticleHeader', () => {
54
54
  it('Within a minute of updating', () => {
55
55
  MockDate.set('2022-04-20T06:30:10+01:00');
56
56
  const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
57
- expect(getByText('6.30am GMT+1')).toBeVisible();
57
+ expect(getByText(/6.30am/i)).toBeVisible();
58
58
  expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
59
59
  });
60
60
  it('Within an hour of updating', () => {
61
61
  MockDate.set('2022-04-20T07:00:00+01:00');
62
62
  const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
63
- expect(getByText('6.30am GMT+1')).toBeVisible();
63
+ expect(getByText(/6.30am/i)).toBeVisible();
64
64
  expect(getByText('30 minutes ago')).toBeVisible();
65
65
  });
66
66
  it('Between 1 and 12 hours after updating', () => {
67
67
  MockDate.set('2022-04-20T08:30:00+01:00');
68
68
  const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
69
- expect(getByText('6.30am GMT+1')).toBeVisible();
69
+ expect(getByText(/6.30am/i)).toBeVisible();
70
70
  expect(getByText('2 hours ago')).toBeVisible();
71
71
  });
72
72
  it('After 12 hours but same calendar day', () => {
73
73
  MockDate.set('2022-04-20T20:30:00+01:00');
74
74
  const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
75
- expect(getByText('6.30am GMT+1')).toBeVisible();
75
+ expect(getByText(/6.30am/i)).toBeVisible();
76
76
  expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
77
77
  });
78
78
  });
@@ -82,10 +82,10 @@ describe('ArticleHeader', () => {
82
82
  it('Between 1 and 12 hours after updating', () => {
83
83
  MockDate.set('2022-01-01T02:30:00+00:00');
84
84
  const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
85
- expect(getByText('10.30pm GMT')).toBeVisible();
85
+ expect(getByText(/10.30pm/i)).toBeVisible();
86
86
  expect(getByText('4 hours ago')).toBeVisible();
87
87
  expect(getByText('December 31')).toBeVisible();
88
88
  });
89
89
  });
90
90
  });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvX190ZXN0c19fL0FydGljbGVIZWFkZXIudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1FBQzVDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVsQyxNQUFNLE9BQU8sR0FBRywyQkFBMkIsQ0FBQztRQUU1QyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUUxQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FDekMsb0JBQUMsYUFBYSxJQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUksQ0FDcEMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxNQUFNLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7WUFDcEMsUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxD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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvX190ZXN0c19fL0FydGljbGVIZWFkZXIudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1FBQzVDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVsQyxNQUFNLE9BQU8sR0FBRywyQkFBMkIsQ0FBQztRQUU1QyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUUxQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FDekMsb0JBQUMsYUFBYSxJQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUksQ0FDcEMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7WUFDcEMsUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxD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
@@ -1,7 +1,6 @@
1
- declare type RecommendedArticlesProps = {
2
- articleId: string;
1
+ import React from 'react';
2
+ export declare const RecommendedArticles: React.FC<{
3
3
  section: string;
4
+ isVisible?: boolean;
4
5
  analyticsStream?: (evt: any) => void;
5
- };
6
- export declare const RecommendedArticles: ({ articleId, section, analyticsStream }: RecommendedArticlesProps) => JSX.Element | null;
7
- export {};
6
+ }>;
@@ -1,30 +1,19 @@
1
- import React, { useEffect, useState } from 'react';
2
- import RelatedArticles from '@times-components/related-articles';
3
- import { GetRecommendedArticles } from '@times-components/provider';
1
+ import React from 'react';
4
2
  import { Placeholder } from '@times-components/image';
5
- export const RecommendedArticles = ({ articleId, section, analyticsStream }) => {
6
- const [isReady, setIsReady] = useState(false);
7
- useEffect(() => {
8
- setIsReady(true);
9
- }, []);
10
- if (!isReady) {
3
+ import RelatedArticles from '@times-components/related-articles';
4
+ import { useFetch } from '../../helpers/fetch/FetchProvider';
5
+ import { getRelatedArticlesSlice } from './formatters';
6
+ import { PlaceholderContainer } from '../common-styles';
7
+ export const RecommendedArticles = ({ section, isVisible, analyticsStream }) => {
8
+ const { loading, error, data } = useFetch();
9
+ if (loading && isVisible) {
10
+ return (React.createElement(PlaceholderContainer, null,
11
+ React.createElement(Placeholder, null)));
12
+ }
13
+ if (error || data === undefined) {
11
14
  return null;
12
15
  }
13
- return (React.createElement(GetRecommendedArticles, { publisher: 'TIMES', recomArgs: { userId: '1234', articleId }, ssr: false, debounceTimeMs: 0 }, ({ isLoading, error, recommendations }) => {
14
- if (error) {
15
- return null;
16
- }
17
- if (isLoading || !recommendations) {
18
- return (React.createElement("div", { className: "placeholder" },
19
- React.createElement(Placeholder, null)));
20
- }
21
- const slice = {
22
- sliceName: 'StandardSlice',
23
- items: recommendations
24
- ? recommendations.articles.map((article) => ({ article }))
25
- : []
26
- };
27
- return (React.createElement(RelatedArticles, { heading: `Today's ${section}`, slice: slice, isVisible: true, analyticsStream: analyticsStream }));
28
- }));
16
+ return (React.createElement("div", { id: "recommended-articles", style: { display: isVisible ? 'block' : 'none' } },
17
+ React.createElement(RelatedArticles, { heading: `Today's ${section}`, slice: getRelatedArticlesSlice(data.recommendations), isVisible: true, analyticsStream: analyticsStream })));
29
18
  };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRBcnRpY2xlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlY29tbWVuZGVkLWFydGljbGVzL1JlY29tbWVuZGVkQXJ0aWNsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVuRCxPQUFPLGVBQWUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUlwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRdEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxFQUNsQyxTQUFTLEVBQ1QsT0FBTyxFQUNQLGVBQWUsRUFDVSxFQUFFLEVBQUU7SUFDN0IsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxRQUFRLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFdkQsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE9BQU8sQ0FDTCxvQkFBQyxzQkFBc0IsSUFDckIsU0FBUyxFQUFFLE9BQU8sRUFDbEIsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFDeEMsR0FBRyxFQUFFLEtBQUssRUFDVixjQUFjLEVBQUUsQ0FBQyxJQUVoQixDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQU8sRUFBRSxFQUFFO1FBQzlDLElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksU0FBUyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ2pDLE9BQU8sQ0FDTCw2QkFBSyxTQUFTLEVBQUMsYUFBYTtnQkFDMUIsb0JBQUMsV0FBVyxPQUFHLENBQ1gsQ0FDUCxDQUFDO1NBQ0g7UUFFRCxNQUFNLEtBQUssR0FBNEI7WUFDckMsU0FBUyxFQUFFLGVBQWU7WUFDMUIsS0FBSyxFQUFFLGVBQWU7Z0JBQ3BCLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQy9ELENBQUMsQ0FBQyxFQUFFO1NBQ1AsQ0FBQztRQUVGLE9BQU8sQ0FDTCxvQkFBQyxlQUFlLElBQ2QsT0FBTyxFQUFFLFdBQVcsT0FBTyxFQUFFLEVBQzdCLEtBQUssRUFBRSxLQUFLLEVBQ1osU0FBUyxRQUNULGVBQWUsRUFBRSxlQUFlLEdBQ2hDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FDc0IsQ0FDMUIsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRBcnRpY2xlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlY29tbWVuZGVkLWFydGljbGVzL1JlY29tbWVuZGVkQXJ0aWNsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxlQUFlLE1BQU0sb0NBQW9DLENBQUM7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FJM0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtJQUMvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQU8sQ0FBQztJQUVqRCxJQUFJLE9BQU8sSUFBSSxTQUFTLEVBQUU7UUFDeEIsT0FBTyxDQUNMLG9CQUFDLG9CQUFvQjtZQUNuQixvQkFBQyxXQUFXLE9BQUcsQ0FDTSxDQUN4QixDQUFDO0tBQ0g7SUFFRCxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLENBQ0wsNkJBQ0UsRUFBRSxFQUFDLHNCQUFzQixFQUN6QixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtRQUVoRCxvQkFBQyxlQUFlLElBQ2QsT0FBTyxFQUFFLFdBQVcsT0FBTyxFQUFFLEVBQzdCLEtBQUssRUFBRSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQ3BELFNBQVMsUUFDVCxlQUFlLEVBQUUsZUFBZSxHQUNoQyxDQUNFLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
@@ -1 +1,5 @@
1
- export {};
1
+ export declare const getArticles: (data: any, numOfArticles: number) => {
2
+ recommendations: {
3
+ articles: any;
4
+ };
5
+ };
@@ -1,65 +1,39 @@
1
1
  import React from 'react';
2
2
  import { showcaseConverter } from '@times-components/storybook';
3
- import { MockedProvider } from '@times-components/provider-test-tools';
4
- import { recommendations } from '@times-components/provider-queries';
3
+ import { FetchProvider } from '../../helpers/fetch/FetchProvider';
4
+ import previewData from '../../fixtures/preview-data/recommended-articles';
5
5
  import analyticsStream from '../../fixtures/analytics-actions/analytics-actions';
6
6
  import { RecommendedArticles } from './RecommendedArticles';
7
- const mocks = [
8
- {
9
- delay: 1000,
10
- request: {
11
- query: recommendations,
12
- variables: {
13
- publisher: 'TIMES',
14
- recomArgs: {
15
- userId: '1234',
16
- articleId: '94a01926-719a-11ec-aacf-0736e08b15cd'
17
- }
18
- }
19
- },
20
- result: {
21
- data: {
22
- recommendations: {
23
- __typename: 'Recommendations',
24
- leadAsset: 'null',
25
- articles: [
26
- {
27
- __typename: 'UniversalArticle',
28
- headline: 'Whole world is against us, says top Russian strategist',
29
- id: 'a9ffb7cc-d5d1-11ec-bb99-1bcd45646516',
30
- media: {
31
- __typename: 'Image'
32
- },
33
- slug: 'were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel',
34
- url: 'https://www.staging-thetimes.co.uk/article/were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel-lhnvsfj33'
35
- },
36
- {
37
- __typename: 'UniversalArticle',
38
- headline: 'Vardys leave court with swipe at Wayne Rooney',
39
- id: 'f3d730a0-d5c2-11ec-8585-951ab3afb4d2',
40
- media: {
41
- __typename: 'Image'
42
- },
43
- slug: 'wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time',
44
- url: 'https://www.staging-thetimes.co.uk/article/wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time-wlzvxklc6'
45
- }
46
- ]
47
- }
48
- }
49
- }
7
+ export const getArticles = (data, numOfArticles) => ({
8
+ recommendations: {
9
+ articles: data.recommendations.articles.slice(0, numOfArticles)
50
10
  }
51
- ];
52
- const recarticles = {
11
+ });
12
+ const recommArticles = {
53
13
  children: [
54
14
  {
55
- component: () => (React.createElement(MockedProvider, { mocks: mocks },
56
- React.createElement(RecommendedArticles, { articleId: "94a01926-719a-11ec-aacf-0736e08b15cd", section: "News", analyticsStream: analyticsStream }))),
57
- name: 'Recommended Articles',
15
+ component: () => (React.createElement(FetchProvider, { previewData: getArticles(previewData, 1) },
16
+ React.createElement(RecommendedArticles, { section: "News", isVisible: true, analyticsStream: analyticsStream }))),
17
+ name: 'Recommended Articles - 1 Article',
18
+ platform: 'web',
19
+ type: 'story'
20
+ },
21
+ {
22
+ component: () => (React.createElement(FetchProvider, { previewData: getArticles(previewData, 2) },
23
+ React.createElement(RecommendedArticles, { section: "Business", isVisible: true, analyticsStream: analyticsStream }))),
24
+ name: 'Recommended Articles - 2 Article',
25
+ platform: 'web',
26
+ type: 'story'
27
+ },
28
+ {
29
+ component: () => (React.createElement(FetchProvider, { previewData: previewData },
30
+ React.createElement(RecommendedArticles, { section: "Sport", isVisible: true, analyticsStream: analyticsStream }))),
31
+ name: 'Recommended Articles - 3 Article',
58
32
  platform: 'web',
59
33
  type: 'story'
60
34
  }
61
35
  ],
62
36
  name: 'Typescript Component/Recommended Articles'
63
37
  };
64
- showcaseConverter(module, recarticles);
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRBcnRpY2xlcy5zdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVjb21tZW5kZWQtYXJ0aWNsZXMvUmVjb21tZW5kZWRBcnRpY2xlcy5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRSxPQUFPLGVBQWUsTUFBTSxvREFBb0QsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCxNQUFNLEtBQUssR0FBRztJQUNaO1FBQ0UsS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUU7WUFDUCxLQUFLLEVBQUUsZUFBZTtZQUN0QixTQUFTLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsTUFBTTtvQkFDZCxTQUFTLEVBQUUsc0NBQXNDO2lCQUNsRDthQUNGO1NBQ0Y7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUU7Z0JBQ0osZUFBZSxFQUFFO29CQUNmLFVBQVUsRUFBRSxpQkFBaUI7b0JBQzdCLFNBQVMsRUFBRSxNQUFNO29CQUNqQixRQUFRLEVBQUU7d0JBQ1I7NEJBQ0UsVUFBVSxFQUFFLGtCQUFrQjs0QkFDOUIsUUFBUSxFQUNOLHdEQUF3RDs0QkFDMUQsRUFBRSxFQUFFLHNDQUFzQzs0QkFDMUMsS0FBSyxFQUFFO2dDQUNMLFVBQVUsRUFBRSxPQUFPOzZCQUNwQjs0QkFDRCxJQUFJLEVBQ0YsNkVBQTZFOzRCQUMvRSxHQUFHLEVBQ0Qsa0lBQWtJO3lCQUNySTt3QkFDRDs0QkFDRSxVQUFVLEVBQUUsa0JBQWtCOzRCQUM5QixRQUFRLEVBQUUsK0NBQStDOzRCQUN6RCxFQUFFLEVBQUUsc0NBQXNDOzRCQUMxQyxLQUFLLEVBQUU7Z0NBQ0wsVUFBVSxFQUFFLE9BQU87NkJBQ3BCOzRCQUNELElBQUksRUFDRixxR0FBcUc7NEJBQ3ZHLEdBQUcsRUFDRCwwSkFBMEo7eUJBQzdKO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLFFBQVEsRUFBRTtRQUNSO1lBQ0UsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQ2Ysb0JBQUMsY0FBYyxJQUFDLEtBQUssRUFBRSxLQUFLO2dCQUMxQixvQkFBQyxtQkFBbUIsSUFDbEIsU0FBUyxFQUFDLHNDQUFzQyxFQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUNkLGVBQWUsRUFBRSxlQUFlLEdBQ2hDLENBQ2EsQ0FDbEI7WUFFRCxJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsSUFBSSxFQUFFLE9BQU87U0FDZDtLQUNGO0lBQ0QsSUFBSSxFQUFFLDJDQUEyQztDQUNsRCxDQUFDO0FBRUYsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDIn0=
38
+ showcaseConverter(module, recommArticles);
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRBcnRpY2xlcy5zdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVjb21tZW5kZWQtYXJ0aWNsZXMvUmVjb21tZW5kZWRBcnRpY2xlcy5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sV0FBVyxNQUFNLGtEQUFrRCxDQUFDO0FBQzNFLE9BQU8sZUFBZSxNQUFNLG9EQUFvRCxDQUFDO0FBRWpGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQVMsRUFBRSxhQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLGVBQWUsRUFBRTtRQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQztLQUNoRTtDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sY0FBYyxHQUFHO0lBQ3JCLFFBQVEsRUFBRTtRQUNSO1lBQ0UsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQ2Ysb0JBQUMsYUFBYSxJQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDckQsb0JBQUMsbUJBQW1CLElBQ2xCLE9BQU8sRUFBQyxNQUFNLEVBQ2QsU0FBUyxRQUNULGVBQWUsRUFBRSxlQUFlLEdBQ2hDLENBQ1ksQ0FDakI7WUFDRCxJQUFJLEVBQUUsa0NBQWtDO1lBQ3hDLFFBQVEsRUFBRSxLQUFLO1lBQ2YsSUFBSSxFQUFFLE9BQU87U0FDZDtRQUNEO1lBQ0UsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQ2Ysb0JBQUMsYUFBYSxJQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDckQsb0JBQUMsbUJBQW1CLElBQ2xCLE9BQU8sRUFBQyxVQUFVLEVBQ2xCLFNBQVMsUUFDVCxlQUFlLEVBQUUsZUFBZSxHQUNoQyxDQUNZLENBQ2pCO1lBQ0QsSUFBSSxFQUFFLGtDQUFrQztZQUN4QyxRQUFRLEVBQUUsS0FBSztZQUNmLElBQUksRUFBRSxPQUFPO1NBQ2Q7UUFDRDtZQUNFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUNmLG9CQUFDLGFBQWEsSUFBQyxXQUFXLEVBQUUsV0FBVztnQkFDckMsb0JBQUMsbUJBQW1CLElBQ2xCLE9BQU8sRUFBQyxPQUFPLEVBQ2YsU0FBUyxRQUNULGVBQWUsRUFBRSxlQUFlLEdBQ2hDLENBQ1ksQ0FDakI7WUFDRCxJQUFJLEVBQUUsa0NBQWtDO1lBQ3hDLFFBQVEsRUFBRSxLQUFLO1lBQ2YsSUFBSSxFQUFFLE9BQU87U0FDZDtLQUNGO0lBQ0QsSUFBSSxFQUFFLDJDQUEyQztDQUNsRCxDQUFDO0FBRUYsaUJBQWlCLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const RecommendedFetch: React.FC<{
3
+ articleId: string;
4
+ section: string;
5
+ analyticsStream?: (evt: any) => void;
6
+ }>;
@@ -0,0 +1,12 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { FetchProvider } from '../../helpers/fetch/FetchProvider';
3
+ import { RecommendedArticles } from './RecommendedArticles';
4
+ export const RecommendedFetch = ({ articleId, section, analyticsStream }) => {
5
+ const [isClientSide, setIsClientSide] = useState(false);
6
+ useEffect(() => {
7
+ setIsClientSide(true);
8
+ });
9
+ return isClientSide ? (React.createElement(FetchProvider, { url: `/api/recommended-articles/${articleId}` },
10
+ React.createElement(RecommendedArticles, { section: section, analyticsStream: analyticsStream }))) : null;
11
+ };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRGZXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlY29tbWVuZGVkLWFydGljbGVzL1JlY29tbWVuZGVkRmV0Y2gudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBSXhCLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsR0FBRyxRQUFRLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFakUsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUNwQixvQkFBQyxhQUFhLElBQUMsR0FBRyxFQUFFLDZCQUE2QixTQUFTLEVBQUU7UUFDMUQsb0JBQUMsbUJBQW1CLElBQ2xCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLGVBQWUsRUFBRSxlQUFlLEdBQ2hDLENBQ1ksQ0FDakIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQyxDQUFDIn0=
@@ -1,67 +1,33 @@
1
1
  import React from 'react';
2
- import { render, cleanup } from '@testing-library/react';
2
+ import { render } from '@testing-library/react';
3
+ import { useFetch } from '../../../helpers/fetch/FetchProvider';
4
+ import previewData from '../../../fixtures/preview-data/recommended-articles';
3
5
  import { RecommendedArticles } from '../RecommendedArticles';
4
- import { MockedProvider } from '@times-components/provider-test-tools';
5
- import { recommendations } from '@times-components/provider-queries';
6
- const mocks = [
7
- {
8
- delay: 1000,
9
- request: {
10
- query: recommendations,
11
- variables: {
12
- publisher: 'TIMES',
13
- recomArgs: {
14
- userId: '1234',
15
- articleId: '94a01926-719a-11ec-aacf-0736e08b15cd'
16
- }
17
- }
18
- },
19
- result: {
20
- data: {
21
- recommendations: {
22
- __typename: 'Recommendations',
23
- leadAsset: 'null',
24
- articles: [
25
- {
26
- __typename: 'UniversalArticle',
27
- headline: 'Whole world is against us, says top Russian strategist',
28
- id: 'a9ffb7cc-d5d1-11ec-bb99-1bcd45646516',
29
- media: {
30
- __typename: 'Image'
31
- },
32
- slug: 'were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel',
33
- url: 'https://www.staging-thetimes.co.uk/article/were-no-match-for-ukrainian-grit-and-firepower-says-retired-russian-colonel-lhnvsfj33'
34
- },
35
- {
36
- __typename: 'UniversalArticle',
37
- headline: 'Vardys leave court with swipe at Wayne Rooney',
38
- id: 'f3d730a0-d5c2-11ec-8585-951ab3afb4d2',
39
- media: {
40
- __typename: 'Image'
41
- },
42
- slug: 'wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time',
43
- url: 'https://www.staging-thetimes.co.uk/article/wayne-rooney-to-give-evidence-in-wagatha-christie-trial-as-jamie-vardy-attends-court-for-first-time-wlzvxklc6'
44
- }
45
- ]
46
- }
47
- }
48
- }
49
- }
50
- ];
51
- describe('Recommended Articles', () => {
52
- afterEach(() => {
53
- jest.clearAllMocks();
54
- cleanup();
55
- });
56
- it('it renders', () => {
57
- const { asFragment } = render(React.createElement(MockedProvider, { mocks: mocks },
58
- React.createElement(RecommendedArticles, { articleId: "94a01926-719a-11ec-aacf-0736e08b15cd", section: "News", analyticsStream: jest.fn() })));
6
+ jest.mock('@times-components/image', () => ({
7
+ Placeholder: () => React.createElement("div", null, "Placeholder")
8
+ }));
9
+ jest.mock('@times-components/related-articles', () => 'RelatedArticles');
10
+ jest.mock('../../../helpers/fetch/FetchProvider', () => ({
11
+ useFetch: jest.fn()
12
+ }));
13
+ describe('<RecommendedArticles>', () => {
14
+ it('should render the initial loading state correctly', () => {
15
+ useFetch.mockReturnValue({ loading: true });
16
+ const { asFragment, getByText } = render(React.createElement(RecommendedArticles, { section: "News", isVisible: true, analyticsStream: () => ({}) }));
17
+ expect(getByText('Placeholder'));
59
18
  expect(asFragment()).toMatchSnapshot();
60
19
  });
61
- it('degrades gracefully', () => {
62
- const { asFragment } = render(React.createElement(MockedProvider, { mocks: mocks },
63
- React.createElement(RecommendedArticles, { articleId: "", section: "News", analyticsStream: jest.fn() })));
20
+ it('should render the error state correctly', () => {
21
+ useFetch.mockReturnValue({ error: 'Some error occurred' });
22
+ const { asFragment } = render(React.createElement(RecommendedArticles, { section: "News", analyticsStream: () => ({}) }));
23
+ expect(asFragment().firstChild).toBeNull();
24
+ });
25
+ it('should render RelatedArticles correctly', () => {
26
+ useFetch.mockReturnValue({ data: previewData });
27
+ const { container, asFragment } = render(React.createElement(RecommendedArticles, { section: "News", isVisible: true, analyticsStream: () => ({}) }));
28
+ const related = container.querySelector('relatedarticles');
29
+ expect(related.getAttribute('heading')).toEqual("Today's News");
64
30
  expect(asFragment()).toMatchSnapshot();
65
31
  });
66
32
  });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRBcnRpY2xlcy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVjb21tZW5kZWQtYXJ0aWNsZXMvX190ZXN0c19fL1JlY29tbWVuZGVkQXJ0aWNsZXMudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRSxNQUFNLEtBQUssR0FBRztJQUNaO1FBQ0UsS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUU7WUFDUCxLQUFLLEVBQUUsZUFBZTtZQUN0QixTQUFTLEVBQUU7Z0JBQ1QsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxNQUFNLEVBQUUsTUFBTTtvQkFDZCxTQUFTLEVBQUUsc0NBQXNDO2lCQUNsRDthQUNGO1NBQ0Y7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUU7Z0JBQ0osZUFBZSxFQUFFO29CQUNmLFVBQVUsRUFBRSxpQkFBaUI7b0JBQzdCLFNBQVMsRUFBRSxNQUFNO29CQUNqQixRQUFRLEVBQUU7d0JBQ1I7NEJBQ0UsVUFBVSxFQUFFLGtCQUFrQjs0QkFDOUIsUUFBUSxFQUNOLHdEQUF3RDs0QkFDMUQsRUFBRSxFQUFFLHNDQUFzQzs0QkFDMUMsS0FBSyxFQUFFO2dDQUNMLFVBQVUsRUFBRSxPQUFPOzZCQUNwQjs0QkFDRCxJQUFJLEVBQ0YsNkVBQTZFOzRCQUMvRSxHQUFHLEVBQ0Qsa0lBQWtJO3lCQUNySTt3QkFDRDs0QkFDRSxVQUFVLEVBQUUsa0JBQWtCOzRCQUM5QixRQUFRLEVBQUUsK0NBQStDOzRCQUN6RCxFQUFFLEVBQUUsc0NBQXNDOzRCQUMxQyxLQUFLLEVBQUU7Z0NBQ0wsVUFBVSxFQUFFLE9BQU87NkJBQ3BCOzRCQUNELElBQUksRUFDRixxR0FBcUc7NEJBQ3ZHLEdBQUcsRUFDRCwwSkFBMEo7eUJBQzdKO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7SUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDcEIsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FDM0Isb0JBQUMsY0FBYyxJQUFDLEtBQUssRUFBRSxLQUFLO1lBQzFCLG9CQUFDLG1CQUFtQixJQUNsQixTQUFTLEVBQUMsc0NBQXNDLEVBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQ2QsZUFBZSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FDMUIsQ0FDYSxDQUNsQixDQUFDO1FBQ0YsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQzdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQzNCLG9CQUFDLGNBQWMsSUFBQyxLQUFLLEVBQUUsS0FBSztZQUMxQixvQkFBQyxtQkFBbUIsSUFDbEIsU0FBUyxFQUFDLEVBQUUsRUFDWixPQUFPLEVBQUMsTUFBTSxFQUNkLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQzFCLENBQ2EsQ0FDbEIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRBcnRpY2xlcy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVjb21tZW5kZWQtYXJ0aWNsZXMvX190ZXN0c19fL1JlY29tbWVuZGVkQXJ0aWNsZXMudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDaEUsT0FBTyxXQUFXLE1BQU0scURBQXFELENBQUM7QUFFOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQywrQ0FBc0I7Q0FDMUMsQ0FBQyxDQUFDLENBQUM7QUFFSixJQUFJLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFekUsSUFBSSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO0NBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBRUosUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxFQUFFLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1FBQzFELFFBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFM0QsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQ3RDLG9CQUFDLG1CQUFtQixJQUNsQixPQUFPLEVBQUMsTUFBTSxFQUNkLFNBQVMsUUFDVCxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FDM0IsQ0FDSCxDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxRQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFFMUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FDM0Isb0JBQUMsbUJBQW1CLElBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBSSxDQUNwRSxDQUFDO1FBRUYsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxRQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUN0QyxvQkFBQyxtQkFBbUIsSUFDbEIsT0FBTyxFQUFDLE1BQU0sRUFDZCxTQUFTLFFBQ1QsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQzNCLENBQ0gsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQWdCLENBQUM7UUFDMUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFaEUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import { RecommendedFetch } from '../RecommendedFetch';
4
+ jest.mock('../../../helpers/fetch/FetchProvider', () => ({
5
+ FetchProvider: () => React.createElement("div", null, "FetchProvider")
6
+ }));
7
+ describe('<RecommendedFetch>', () => {
8
+ it('should render correctly', () => {
9
+ const { asFragment, getByText } = render(React.createElement(RecommendedFetch, { articleId: "1234", section: "News", analyticsStream: () => ({}) }));
10
+ expect(getByText('FetchProvider'));
11
+ expect(asFragment()).toMatchSnapshot();
12
+ });
13
+ });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21tZW5kZWRGZXRjaC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVjb21tZW5kZWQtYXJ0aWNsZXMvX190ZXN0c19fL1JlY29tbWVuZGVkRmV0Y2gudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdkQsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLGlEQUF3QjtDQUM5QyxDQUFDLENBQUMsQ0FBQztBQUVKLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7SUFDbEMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FDdEMsb0JBQUMsZ0JBQWdCLElBQ2YsU0FBUyxFQUFDLE1BQU0sRUFDaEIsT0FBTyxFQUFDLE1BQU0sRUFDZCxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FDM0IsQ0FDSCxDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
@@ -0,0 +1,41 @@
1
+ import { RelatedArticleSliceType } from '../../types/related-article-slice';
2
+ export declare type Byline = {
3
+ __typename: string;
4
+ type: 'author';
5
+ name: string;
6
+ } | {
7
+ __typename: string;
8
+ type: 'inline';
9
+ value: string;
10
+ };
11
+ declare type MediaCrop = {
12
+ __typename: string;
13
+ url: string;
14
+ alt?: string;
15
+ aspectRatio: string;
16
+ };
17
+ declare type Media = {
18
+ __typename: string;
19
+ crops: MediaCrop[];
20
+ };
21
+ export declare type SummaryText = {
22
+ __typename: string;
23
+ text: string;
24
+ };
25
+ declare type Summary = {
26
+ __typename: string;
27
+ children: SummaryText[];
28
+ };
29
+ export declare type Article = {
30
+ __typename: string;
31
+ url: string;
32
+ slug: string;
33
+ label: string;
34
+ headline: string;
35
+ publishedDateTime: string;
36
+ bylines?: Byline[];
37
+ summary?: Summary;
38
+ media?: Media;
39
+ };
40
+ export declare const getRelatedArticlesSlice: (recommendations: any) => RelatedArticleSliceType;
41
+ export {};
@@ -0,0 +1,57 @@
1
+ // HELPERS
2
+ const getBylineAttr = (byline) => ({
3
+ value: byline.type === 'author' ? byline.name : byline.value
4
+ });
5
+ const getByline = (byline) => ({
6
+ name: byline.type,
7
+ children: [{ name: 'text', attributes: getBylineAttr(byline), children: [] }]
8
+ });
9
+ const getBylines = (bylines) => {
10
+ if (bylines) {
11
+ return bylines.map((byline) => ({ byline: [getByline(byline)] }));
12
+ }
13
+ return undefined;
14
+ };
15
+ const getSummaryText = (summary) => {
16
+ const text = summary.children
17
+ .map((child) => child.text)
18
+ .join('');
19
+ return { value: text.slice(0, text.slice(0, 125).lastIndexOf(' ')) };
20
+ };
21
+ const getSummaryParagraph = (summary) => [
22
+ { name: 'text', attributes: getSummaryText(summary), children: [] }
23
+ ];
24
+ const getSummary = (summary) => {
25
+ if (summary && summary.children) {
26
+ return [{ name: 'paragraph', children: getSummaryParagraph(summary) }];
27
+ }
28
+ return [];
29
+ };
30
+ const getImage = (media) => {
31
+ if (media && media.crops) {
32
+ const image = media.crops.find((crop) => crop.aspectRatio === '16:9');
33
+ return image ? { crop169: { url: image.url }, title: image.alt } : null;
34
+ }
35
+ return {};
36
+ };
37
+ // MAIN
38
+ export const getRelatedArticlesSlice = (recommendations) => ({
39
+ sliceName: 'StandardSlice',
40
+ items: recommendations
41
+ ? recommendations.articles
42
+ .map((article) => ({
43
+ article: {
44
+ slug: article.slug,
45
+ shortIdentifier: article.url.slice(-9),
46
+ label: article.label,
47
+ headline: article.headline,
48
+ publishedTime: article.publishedDateTime,
49
+ bylines: getBylines(article.bylines),
50
+ summary125: getSummary(article.summary),
51
+ leadAsset: getImage(article.media)
52
+ }
53
+ }))
54
+ .slice(0, 3)
55
+ : []
56
+ });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlY29tbWVuZGVkLWFydGljbGVzL2Zvcm1hdHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JBLFVBQVU7QUFFVixNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0NBQzdELENBQUMsQ0FBQztBQUVILE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtJQUNqQixRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7Q0FDOUUsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFrQixFQUFFLEVBQUU7SUFDeEMsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMzRTtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO0lBQzFDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRO1NBQzFCLEdBQUcsQ0FBQyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FD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