@times-components/ts-components 1.32.0 → 1.32.3

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,36 @@
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.32.3](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.32.2...@times-components/ts-components@1.32.3) (2022-04-22)
7
+
8
+ **Note:** Version bump only for package @times-components/ts-components
9
+
10
+
11
+
12
+
13
+
14
+ ## [1.32.2](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.32.1...@times-components/ts-components@1.32.2) (2022-04-21)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **TDP-000:** ArticleHeader date and time update ([#2924](https://github.com/newsuk/times-components/issues/2924)) ([7453ab2](https://github.com/newsuk/times-components/commit/7453ab2498cc12a6e6ea8ba1df9ee71bb4798628))
20
+
21
+
22
+
23
+
24
+
25
+ ## [1.32.1](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.32.0...@times-components/ts-components@1.32.1) (2022-04-21)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * **TDP-000:** ArticleHeader date and time update ([#2922](https://github.com/newsuk/times-components/issues/2922)) ([ca8259f](https://github.com/newsuk/times-components/commit/ca8259fd2b978f4821c8b14dedd6452dc4d8c1e2))
31
+
32
+
33
+
34
+
35
+
6
36
  # [1.32.0](https://github.com/newsuk/times-components/compare/@times-components/ts-components@1.31.1...@times-components/ts-components@1.32.0) (2022-04-21)
7
37
 
8
38
 
@@ -1,42 +1,51 @@
1
1
  import React from 'react';
2
- import { format, differenceInSeconds, differenceInCalendarDays, formatDistanceStrict } from 'date-fns';
3
- import { Container, Divider, Headline, TimeSincePublishing, TimeSincePublishingContainer, UpdatedDate, UpdatedTime, UpdatedTimeItems, UpdatesContainer, FlagContainer } from './styles';
2
+ import {
3
+ // parse,
4
+ format, differenceInSeconds, differenceInCalendarDays, formatDistanceStrict } from 'date-fns';
5
+ import {
6
+ // zonedTimeToUtc,
7
+ utcToZonedTime } from 'date-fns-tz';
4
8
  import { BreakingArticleFlag } from '../article-flag/LiveArticleFlag';
5
9
  import safeDecodeURIComponent from '../../utils/safeDecodeURIComponent';
10
+ import { Container, Divider, Headline, TimeSincePublishing, TimeSincePublishingContainer, UpdatedDate, UpdatedTime, UpdatedTimeItems, UpdatesContainer, FlagContainer } from './styles';
11
+ const anchorString = (updateTxt = '', headlineTxt = '') => {
12
+ const onlyNumbersReg = /\D+/g;
13
+ const onlyNumbers = updateTxt.replace(onlyNumbersReg, '');
14
+ const acronymReg = /\b(\w)/g;
15
+ const acronymMatch = headlineTxt.match(acronymReg);
16
+ const acronym = acronymMatch === null ? '' : acronymMatch.join('');
17
+ return `u_${onlyNumbers}${acronym}`;
18
+ };
6
19
  const ArticleHeader = ({ updated, breaking, headline }) => {
7
20
  const currentDateTime = new Date();
21
+ // const updated = `${date} ${time}`;
22
+ // const parsedDate = parse(updated, 'dd/MM/yyyy HH:mm', new Date());
23
+ // const updatedDate = zonedTimeToUtc(parsedDate, 'Europe/London');
8
24
  const updatedDate = new Date(updated);
25
+ const parsedDate = utcToZonedTime(updatedDate, 'Europe/London');
9
26
  const timeSincePublishing = formatDistanceStrict(updatedDate, currentDateTime, {
10
27
  roundingMethod: 'floor'
11
28
  }) + ' ago';
12
29
  const diffInSeconds = differenceInSeconds(currentDateTime, updatedDate);
13
- const anchorString = (updateTxt = '', headlineTxt = '') => {
14
- const onlyNumbersReg = /\D+/g;
15
- const onlyNumbers = updateTxt.replace(onlyNumbersReg, '');
16
- const acronymReg = /\b(\w)/g;
17
- const acronymMatch = headlineTxt.match(acronymReg);
18
- const acronym = acronymMatch === null ? '' : acronymMatch.join('');
19
- return `u_${onlyNumbers}${acronym}`;
20
- };
21
30
  const isLessThan1Minute = diffInSeconds < 60;
22
31
  const isLessThan1Hour = diffInSeconds < 60 * 60;
23
32
  const isLessThan13Hours = diffInSeconds < 60 * 60 * 13;
24
- const isDaysAgo = differenceInCalendarDays(currentDateTime, updatedDate) >= 1;
25
- const anchorPoint = anchorString(updated, headline);
33
+ const isDaysAgo = differenceInCalendarDays(currentDateTime, parsedDate) >= 1;
26
34
  const isBreaking = breaking
27
35
  ? Boolean(breaking.toLowerCase() === 'true')
28
36
  : false;
37
+ const anchorPoint = anchorString(updated, headline);
29
38
  return (React.createElement(Container, { isBreaking: isBreaking && isLessThan1Hour, id: anchorPoint },
30
39
  React.createElement(UpdatesContainer, null,
31
40
  React.createElement(UpdatedTimeItems, null,
32
41
  isBreaking && isLessThan1Hour ? (React.createElement(FlagContainer, null,
33
42
  React.createElement(BreakingArticleFlag, null))) : null,
34
43
  !isLessThan1Minute && isLessThan13Hours ? (React.createElement(TimeSincePublishingContainer, null,
35
- React.createElement(TimeSincePublishing, { isBreaking: isBreaking, "data-testId": "TimeSincePublishing" }, timeSincePublishing),
44
+ React.createElement(TimeSincePublishing, { "data-testId": "TimeSincePublishing" }, timeSincePublishing),
36
45
  React.createElement(Divider, null))) : null,
37
- React.createElement(UpdatedTime, { isLessThan13Hours: !isLessThan1Minute && isLessThan13Hours, "data-testId": "UpdatedTime" }, format(updatedDate, 'h.mmaaa'))),
38
- isDaysAgo ? (React.createElement(UpdatedDate, { "data-testid": "UpdatedDate" }, format(updatedDate, 'MMMM d yyyy'))) : null),
46
+ React.createElement(UpdatedTime, { isLessThan13Hours: !isLessThan1Minute && isLessThan13Hours }, format(parsedDate, 'h.mmaaa'))),
47
+ isDaysAgo ? (React.createElement(UpdatedDate, null, format(parsedDate, 'MMMM d yyyy'))) : null),
39
48
  headline && React.createElement(Headline, null, safeDecodeURIComponent(headline))));
40
49
  };
41
50
  export default ArticleHeader;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FydGljbGUtaGVhZGVyL0FydGljbGVIZWFkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQ0wsTUFBTSxFQUNOLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3JCLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2QsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxzQkFBc0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxNQUFNLGFBQWEsR0FJZCxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sZUFBZSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsTUFBTSxtQkFBbUIsR0FDdkIsb0JBQW9CLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRTtRQUNqRCxjQUFjLEVBQUUsT0FBTztLQUN4QixDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ2QsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBUyxHQUFHLEVBQUUsRUFBRSxXQUFXLEdBQUcsRUFBRSxFQUFFLEVBQUU7UUFDeEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQzlCLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM3QixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sT0FBTyxHQUFHLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxPQUFPLEtBQUssV0FBVyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3RDLENBQUMsQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM3QyxNQUFNLGVBQWUsR0FBRyxhQUFhLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoRCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlFLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsTUFBTSxVQUFVLEdBQUcsUUFBUTtRQUN6QixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUM7UUFDNUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUVWLE9BQU8sQ0FDTCxvQkFBQyxTQUFTLElBQUMsVUFBVSxFQUFFLFVBQVUsSUFBSSxlQUFlLEVBQUUsRUFBRSxFQUFFLFdBQVc7UUFDbkUsb0JBQUMsZ0JBQWdCO1lBQ2Ysb0JBQUMsZ0JBQWdCO2dCQUNkLFVBQVUsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQy9CLG9CQUFDLGFBQWE7b0JBQ1osb0JBQUMsbUJBQW1CLE9BQUcsQ0FDVCxDQUNqQixDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNQLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQ3pDLG9CQUFDLDRCQUE0QjtvQkFDM0Isb0JBQUMsbUJBQW1CLElBQ2xCLFVBQVUsRUFBRSxVQUFVLGlCQUNWLHFCQUFxQixJQUVoQyxtQkFBbUIsQ0FDQTtvQkFDdEIsb0JBQUMsT0FBTyxPQUFHLENBQ2tCLENBQ2hDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ1Isb0JBQUMsV0FBVyxJQUNWLGlCQUFpQixFQUFFLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLGlCQUM5QyxhQUFhLElBRXhCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQ25CLENBQ0c7WUFDbEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUNYLG9CQUFDLFdBQVcsbUJBQWEsYUFBYSxJQUNuQyxNQUFNLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUN2QixDQUNmLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDUztRQUNsQixRQUFRLElBQUksb0JBQUMsUUFBUSxRQUFFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFZLENBQzFELENBQ2IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsYUFBYSxDQUFDIn0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FydGljbGUtaGVhZGVyL0FydGljbGVIZWFkZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPO0FBQ0wsU0FBUztBQUNULE1BQU0sRUFDTixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNyQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPO0FBQ0wsa0JBQWtCO0FBQ2xCLGNBQWMsRUFDZixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLHNCQUFzQixNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2QsTUFBTSxVQUFVLENBQUM7QUFFbEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDOUIsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzdCLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsTUFBTSxPQUFPLEdBQUcsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FB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
@@ -1,33 +1,38 @@
1
1
  import React from 'react';
2
2
  import { storiesOf } from '@storybook/react';
3
- import { date, select, text } from '@storybook/addon-knobs';
3
+ import { select, text } from '@storybook/addon-knobs';
4
+ import {
5
+ // format,
6
+ addMinutes } from 'date-fns';
7
+ // import { utcToZonedTime } from 'date-fns-tz';
4
8
  import { ArticleHarness } from '../../fixtures/article-harness/ArticleHarness';
5
9
  import ArticleHeader from './ArticleHeader';
10
+ const getAttributes = () => {
11
+ const id = 'Options';
12
+ const now = new Date();
13
+ const updated = text('Updated', addMinutes(now, -10).toISOString(), id);
14
+ // const now = utcToZonedTime(new Date(), 'Europe/London');
15
+ // const date = text('Date', format(now, 'dd/MM/yyyy'), id);
16
+ // const time = text('Time', format(addMinutes(now, -10), 'HH:mm'), id);
17
+ const options = { True: 'true', False: undefined };
18
+ const breaking = select('Breaking', options, 'true', id);
19
+ const headline = text('Headline', 'This is the headline', id);
20
+ return { updated, breaking, headline };
21
+ };
6
22
  storiesOf('Typescript Component/Article Header', module)
7
23
  .addDecorator((storyFn) => (React.createElement(ArticleHarness, null, storyFn())))
8
24
  .add('Article Header with headline', () => {
9
- const label = 'Updated Date/Time';
10
- const defaultValue = new Date();
11
- const groupId = 'Options';
12
- const value = date(label, defaultValue, groupId);
13
- const breakingOptions = {
14
- True: 'true',
15
- False: undefined
16
- };
17
- const updated = new Date(value).toISOString();
18
- const headline = text('Headline', 'This is the headline', groupId);
19
- return (React.createElement(ArticleHeader, { updated: updated, breaking: select('Breaking', breakingOptions, undefined, groupId), headline: encodeURIComponent(headline) }));
25
+ const props = getAttributes();
26
+ return (React.createElement(ArticleHeader, { updated: props.updated,
27
+ // date={props.date}
28
+ // time={props.time}
29
+ breaking: props.breaking, headline: encodeURIComponent(props.headline) }));
20
30
  })
21
31
  .add('Article Header without headline', () => {
22
- const label = 'Updated Date/Time';
23
- const defaultValue = new Date();
24
- const groupId = 'Options';
25
- const value = date(label, defaultValue, groupId);
26
- const breakingOptions = {
27
- True: 'true',
28
- False: undefined
29
- };
30
- const updated = new Date(value).toISOString();
31
- return (React.createElement(ArticleHeader, { updated: updated, breaking: select('Breaking', breakingOptions, undefined, groupId) }));
32
+ const props = getAttributes();
33
+ return (React.createElement(ArticleHeader, { updated: props.updated,
34
+ // date={props.date}
35
+ // time={props.time}
36
+ breaking: props.breaking }));
32
37
  });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci5zdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvQXJ0aWNsZUhlYWRlci5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRSxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxTQUFTLENBQUMscUNBQXFDLEVBQUUsTUFBTSxDQUFDO0tBQ3JELFlBQVksQ0FBQyxDQUFDLE9BQThCLEVBQUUsRUFBRSxDQUFDLENBQ2hELG9CQUFDLGNBQWMsUUFBRSxPQUFPLEVBQUUsQ0FBa0IsQ0FDN0MsQ0FBQztLQUNELEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUM7SUFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNoQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsTUFBTSxlQUFlLEdBQUc7UUFDdEIsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVuRSxPQUFPLENBQ0wsb0JBQUMsYUFBYSxJQUNaLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQ2pFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FDdEMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0tBQ0QsR0FBRyxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMzQyxNQUFNLEtBQUssR0FBRyxtQkFBbUIsQ0FBQztJQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxNQUFNLGVBQWUsR0FBRztRQUN0QixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxTQUFTO0tBQ2pCLENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU5QyxPQUFPLENBQ0wsb0JBQUMsYUFBYSxJQUNaLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQ2pFLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDIn0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci5zdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvQXJ0aWNsZUhlYWRlci5zdG9yaWVzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTztBQUNMLFVBQVU7QUFDVixVQUFVLEVBQ1gsTUFBTSxVQUFVLENBQUM7QUFDbEIsZ0RBQWdEO0FBRWhELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRSxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDekIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBRXJCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFeEUsMkRBQTJEO0lBQzNELDREQUE0RDtJQUM1RCx3RUFBd0U7SUFFeEUsTUFBTSxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUNuRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRixTQUFTLENBQUMscUNBQXFDLEVBQUUsTUFBTSxDQUFDO0tBQ3JELFlBQVksQ0FBQyxDQUFDLE9BQThCLEVBQUUsRUFBRSxDQUFDLENBQ2hELG9CQUFDLGNBQWMsUUFBRSxPQUFPLEVBQUUsQ0FBa0IsQ0FDN0MsQ0FBQztLQUNELEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsTUFBTSxLQUFLLEdBQUcsYUFBYSxFQUFFLENBQUM7SUFDOUIsT0FBTyxDQUNMLG9CQUFDLGFBQWEsSUFDWixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsb0JBQW9CO1FBQ3BCLG9CQUFvQjtRQUNwQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFDeEIsUUFBUSxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FDNUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0tBQ0QsR0FBRyxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMzQyxNQUFNLEtBQUssR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUM5QixPQUFPLENBQ0wsb0JBQUMsYUFBYSxJQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixvQkFBb0I7UUFDcEIsb0JBQW9CO1FBQ3BCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxHQUN4QixDQUNILENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyJ9
@@ -1,126 +1,237 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
  import '@testing-library/jest-dom';
4
- import ArticleHeader from '../ArticleHeader';
5
4
  import MockDate from 'mockdate';
5
+ import ArticleHeader from '../ArticleHeader';
6
6
  describe('ArticleHeader', () => {
7
- describe('In one calendar day', () => {
8
- const updated = '2021-12-31T06:30:00Z';
7
+ describe('Same calendar day during GMT', () => {
9
8
  afterEach(() => MockDate.reset());
10
- it('Within the first minute of update - Breaking', () => {
11
- MockDate.set('2021-12-31T06:30:00Z');
12
- const { baseElement, getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
13
- expect(baseElement).toMatchSnapshot();
14
- expect(getByText('BREAKING')).toBeVisible();
15
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
9
+ const updated = '2021-12-31T06:30:00Z';
10
+ it('Within a minute of updating', () => {
11
+ MockDate.set('2021-12-31T06:30:10Z');
12
+ const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
16
13
  expect(getByText('6.30am')).toBeVisible();
17
14
  expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
18
- expect(queryByTestId('UpdatedDate')).toBeFalsy();
19
- expect(getByText('This is the headline')).toBeVisible();
20
15
  });
21
- it('Within the first minute of update - Not Breaking', () => {
22
- MockDate.set('2021-12-31T06:30:00Z');
23
- const { baseElement, getByText, queryByTestId, queryByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "false", headline: "This%20is%20the%20headline" }));
24
- expect(baseElement).toMatchSnapshot();
25
- expect(queryByText('BREAKING')).toBeFalsy();
26
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
16
+ it('Within an hour of updating', () => {
17
+ MockDate.set('2021-12-31T07:00:00Z');
18
+ const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
27
19
  expect(getByText('6.30am')).toBeVisible();
28
- expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
29
- expect(queryByTestId('UpdatedDate')).toBeFalsy();
30
- expect(getByText('This is the headline')).toBeVisible();
20
+ expect(getByText('30 minutes ago')).toBeVisible();
31
21
  });
32
- it('Within the first minute of update - No headline not breaking', () => {
33
- MockDate.set('2021-12-31T06:30:00Z');
34
- const { baseElement, getByText, queryByTestId, queryByText } = render(React.createElement(ArticleHeader, { updated: updated }));
35
- expect(baseElement).toMatchSnapshot();
36
- expect(queryByText('This is the headline')).toBeFalsy();
37
- expect(queryByText('BREAKING')).toBeFalsy();
38
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
22
+ it('Between 1 and 12 hours after updating', () => {
23
+ MockDate.set('2021-12-31T08:30:00Z');
24
+ const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
25
+ expect(getByText('6.30am')).toBeVisible();
26
+ expect(getByText('2 hours ago')).toBeVisible();
27
+ });
28
+ it('After 12 hours but same calendar day', () => {
29
+ MockDate.set('2021-12-20T20:30:00Z');
30
+ const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
39
31
  expect(getByText('6.30am')).toBeVisible();
40
32
  expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
41
- expect(queryByTestId('UpdatedDate')).toBeFalsy();
42
33
  });
43
- it('within an hour of updating', () => {
34
+ it('With breaking flag and headline', () => {
44
35
  MockDate.set('2021-12-31T07:00:00Z');
45
- const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
46
- expect(getByText('BREAKING')).toBeVisible();
47
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
36
+ const { baseElement, getByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
48
37
  expect(getByText('6.30am')).toBeVisible();
49
- expect(queryByTestId('TimeSincePublishing')).toBeTruthy();
50
38
  expect(getByText('30 minutes ago')).toBeVisible();
51
- expect(queryByTestId('UpdatedDate')).toBeFalsy();
39
+ expect(getByText('BREAKING')).toBeVisible();
52
40
  expect(getByText('This is the headline')).toBeVisible();
41
+ expect(baseElement).toMatchSnapshot();
53
42
  });
54
- it('between 1 and 12 hours after update time', () => {
43
+ it('With breaking flag expired', () => {
55
44
  MockDate.set('2021-12-31T08:30:00Z');
56
- const { getByText, queryByTestId, queryByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
57
- expect(queryByText('BREAKING')).toBeFalsy();
58
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
45
+ const { getByText, queryByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true" }));
59
46
  expect(getByText('6.30am')).toBeVisible();
60
- expect(queryByTestId('TimeSincePublishing')).toBeTruthy();
61
47
  expect(getByText('2 hours ago')).toBeVisible();
62
- expect(queryByTestId('UpdatedDate')).toBeFalsy();
63
- expect(getByText('This is the headline')).toBeVisible();
64
- });
65
- it('after 12 hours but on the same calendar day', () => {
66
- MockDate.set('2021-12-31T19:30:00Z');
67
- const { getByText, queryByTestId, queryByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
68
48
  expect(queryByText('BREAKING')).toBeFalsy();
69
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
70
- expect(getByText('6.30am')).toBeVisible();
71
- expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
72
- expect(queryByTestId('UpdatedDate')).toBeFalsy();
73
- expect(getByText('This is the headline')).toBeVisible();
74
49
  });
75
50
  });
76
- describe('Across calendar days', () => {
77
- const updated = '2021-12-31T23:30:00Z';
51
+ describe('Same calendar day during BST', () => {
78
52
  afterEach(() => MockDate.reset());
79
- it('within an hour of updating but on a different calendar day', () => {
80
- MockDate.set('2022-01-01T00:29:00Z');
81
- const { getByTestId, queryByTestId, getByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
82
- expect(getByText('BREAKING')).toBeVisible();
83
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
84
- expect(getByText('11.30pm')).toBeVisible();
85
- expect(getByTestId('TimeSincePublishing')).toBeTruthy();
86
- expect(getByTestId('UpdatedDate')).toBeVisible();
87
- expect(getByText('December 31 2021')).toBeVisible();
88
- expect(getByText('This is the headline')).toBeVisible();
53
+ const updated = '2022-04-20T06:30:00+01:00';
54
+ it('Within a minute of updating', () => {
55
+ MockDate.set('2022-04-20T06:30:10+01:00');
56
+ const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
57
+ expect(getByText('6.30am')).toBeVisible();
58
+ expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
89
59
  });
90
- it('between 1-12 hours of updating but on a different calendar day', () => {
91
- MockDate.set('2022-01-01T02:00:00Z');
92
- const { getByTestId, queryByText, queryByTestId, getByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
93
- expect(queryByText('BREAKING')).toBeFalsy();
94
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
95
- expect(getByText('11.30pm')).toBeVisible();
96
- expect(getByTestId('TimeSincePublishing')).toBeTruthy();
60
+ it('Within an hour of updating', () => {
61
+ MockDate.set('2022-04-20T07:00:00+01:00');
62
+ const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
63
+ expect(getByText('6.30am')).toBeVisible();
64
+ expect(getByText('30 minutes ago')).toBeVisible();
65
+ });
66
+ it('Between 1 and 12 hours after updating', () => {
67
+ MockDate.set('2022-04-20T08:30:00+01:00');
68
+ const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
69
+ expect(getByText('6.30am')).toBeVisible();
97
70
  expect(getByText('2 hours ago')).toBeVisible();
98
- expect(getByTestId('UpdatedDate')).toBeVisible();
99
- expect(getByText('December 31 2021')).toBeVisible();
100
- expect(getByText('This is the headline')).toBeVisible();
101
71
  });
102
- it('after 12 hours but on a different calendar day', () => {
103
- MockDate.set('2022-01-01T14:30:00Z');
104
- const { getByTestId, queryByText, queryByTestId, getByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
105
- expect(queryByText('BREAKING')).toBeFalsy();
106
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
107
- expect(getByText('11.30pm')).toBeVisible();
72
+ it('After 12 hours but same calendar day', () => {
73
+ MockDate.set('2022-04-20T20:30:00+01:00');
74
+ const { getByText, queryByTestId } = render(React.createElement(ArticleHeader, { updated: updated }));
75
+ expect(getByText('6.30am')).toBeVisible();
108
76
  expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
109
- expect(getByTestId('UpdatedDate')).toBeVisible();
110
- expect(getByText('December 31 2021')).toBeVisible();
111
- expect(getByText('This is the headline')).toBeVisible();
112
77
  });
113
- it('after multiple calendar days', () => {
114
- MockDate.set('2022-01-03T14:30:00Z');
115
- const { getByTestId, queryByText, queryByTestId, getByText } = render(React.createElement(ArticleHeader, { updated: updated, breaking: "true", headline: "This%20is%20the%20headline" }));
116
- expect(queryByText('BREAKING')).toBeFalsy();
117
- expect(queryByTestId('UpdatedTime')).toBeTruthy();
118
- expect(getByText('11.30pm')).toBeVisible();
119
- expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
120
- expect(getByTestId('UpdatedDate')).toBeVisible();
78
+ });
79
+ describe('Different calendar days', () => {
80
+ afterEach(() => MockDate.reset());
81
+ const updated = '2021-12-31T22:30:00Z';
82
+ it('Between 1 and 12 hours after updating', () => {
83
+ MockDate.set('2022-01-01T02:30:00Z');
84
+ const { getByText } = render(React.createElement(ArticleHeader, { updated: updated }));
85
+ expect(getByText('10.30pm')).toBeVisible();
86
+ expect(getByText('4 hours ago')).toBeVisible();
121
87
  expect(getByText('December 31 2021')).toBeVisible();
122
- expect(getByText('This is the headline')).toBeVisible();
123
88
  });
124
89
  });
125
90
  });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvX190ZXN0c19fL0FydGljbGVIZWFkZXIudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO1FBQ25DLE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsQyxFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1lBQ3RELFFBQVEsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNyQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQ3RELG9CQUFDLGFBQWEsSUFDWixPQUFPLEVBQUUsT0FBTyxFQUNoQixRQUFRLEVBQUMsTUFBTSxFQUNmLFFBQVEsRUFBQyw0QkFBNEIsR0FDckMsQ0FDSCxDQUFDO1lBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7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
91
+ /*
92
+ describe('ArticleHeader', () => {
93
+ describe('Same calendar day during GMT', () => {
94
+ afterEach(() => MockDate.reset());
95
+
96
+ const date = '31/12/2021';
97
+ const time = '06:30';
98
+
99
+ it('Within a minute of updating', () => {
100
+ MockDate.set('2021-12-31T06:30:10Z');
101
+
102
+ const { getByText, queryByTestId } = render(
103
+ <ArticleHeader date={date} time={time} />
104
+ );
105
+
106
+ expect(getByText('6.30am')).toBeVisible();
107
+ expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
108
+ });
109
+
110
+ it('Within an hour of updating', () => {
111
+ MockDate.set('2021-12-31T07:00:00Z');
112
+
113
+ const { getByText } = render(<ArticleHeader date={date} time={time} />);
114
+
115
+ expect(getByText('6.30am')).toBeVisible();
116
+ expect(getByText('30 minutes ago')).toBeVisible();
117
+ });
118
+
119
+ it('Between 1 and 12 hours after updating', () => {
120
+ MockDate.set('2021-12-31T08:30:00Z');
121
+
122
+ const { getByText } = render(<ArticleHeader date={date} time={time} />);
123
+
124
+ expect(getByText('6.30am')).toBeVisible();
125
+ expect(getByText('2 hours ago')).toBeVisible();
126
+ });
127
+
128
+ it('After 12 hours but same calendar day', () => {
129
+ MockDate.set('2021-12-20T20:30:00Z');
130
+
131
+ const { getByText, queryByTestId } = render(
132
+ <ArticleHeader date={date} time={time} />
133
+ );
134
+
135
+ expect(getByText('6.30am')).toBeVisible();
136
+ expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
137
+ });
138
+
139
+ it('With breaking flag and headline', () => {
140
+ MockDate.set('2021-12-31T07:00:00Z');
141
+
142
+ const { baseElement, getByText } = render(
143
+ <ArticleHeader
144
+ date={date}
145
+ time={time}
146
+ breaking="true"
147
+ headline="This%20is%20the%20headline"
148
+ />
149
+ );
150
+
151
+ expect(getByText('6.30am')).toBeVisible();
152
+ expect(getByText('30 minutes ago')).toBeVisible();
153
+ expect(getByText('BREAKING')).toBeVisible();
154
+ expect(getByText('This is the headline')).toBeVisible();
155
+
156
+ expect(baseElement).toMatchSnapshot();
157
+ });
158
+
159
+ it('With breaking flag expired', () => {
160
+ MockDate.set('2021-12-31T08:30:00Z');
161
+
162
+ const { getByText, queryByText } = render(
163
+ <ArticleHeader date={date} time={time} breaking="true" />
164
+ );
165
+
166
+ expect(getByText('6.30am')).toBeVisible();
167
+ expect(getByText('2 hours ago')).toBeVisible();
168
+ expect(queryByText('BREAKING')).toBeFalsy();
169
+ });
170
+ });
171
+
172
+ describe('Same calendar day during BST', () => {
173
+ afterEach(() => MockDate.reset());
174
+
175
+ const date = '20/04/2022';
176
+ const time = '06:30';
177
+
178
+ it('Within a minute of updating', () => {
179
+ MockDate.set('2022-04-20T06:30:10+01:00');
180
+
181
+ const { getByText, queryByTestId } = render(
182
+ <ArticleHeader date={date} time={time} />
183
+ );
184
+
185
+ expect(getByText('6.30am')).toBeVisible();
186
+ expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
187
+ });
188
+
189
+ it('Within an hour of updating', () => {
190
+ MockDate.set('2022-04-20T07:00:00+01:00');
191
+
192
+ const { getByText } = render(<ArticleHeader date={date} time={time} />);
193
+
194
+ expect(getByText('6.30am')).toBeVisible();
195
+ expect(getByText('30 minutes ago')).toBeVisible();
196
+ });
197
+
198
+ it('Between 1 and 12 hours after updating', () => {
199
+ MockDate.set('2022-04-20T08:30:00+01:00');
200
+
201
+ const { getByText } = render(<ArticleHeader date={date} time={time} />);
202
+
203
+ expect(getByText('6.30am')).toBeVisible();
204
+ expect(getByText('2 hours ago')).toBeVisible();
205
+ });
206
+
207
+ it('After 12 hours but same calendar day', () => {
208
+ MockDate.set('2022-04-20T20:30:00+01:00');
209
+
210
+ const { getByText, queryByTestId } = render(
211
+ <ArticleHeader date={date} time={time} />
212
+ );
213
+
214
+ expect(getByText('6.30am')).toBeVisible();
215
+ expect(queryByTestId('TimeSincePublishing')).toBeFalsy();
216
+ });
217
+ });
218
+
219
+ describe('Different calendar days', () => {
220
+ afterEach(() => MockDate.reset());
221
+
222
+ const date = '31/12/2021';
223
+ const time = '22:30';
224
+
225
+ it('Between 1 and 12 hours after updating', () => {
226
+ MockDate.set('2022-01-01T02:30:00Z');
227
+
228
+ const { getByText } = render(<ArticleHeader date={date} time={time} />);
229
+
230
+ expect(getByText('10.30pm')).toBeVisible();
231
+ expect(getByText('4 hours ago')).toBeVisible();
232
+ expect(getByText('December 31 2021')).toBeVisible();
233
+ });
234
+ });
235
+ });
236
+ */
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aWNsZUhlYWRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvX190ZXN0c19fL0FydGljbGVIZWFkZXIudGVzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUU3QyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1FBQzVDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVsQyxNQUFNLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQztRQUV2QyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUVyQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FDekMsb0JBQUMsYUFBYSxJQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUksQ0FDcEMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxNQUFNLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7WUFDcEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxD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
@@ -3,9 +3,7 @@ export declare const Container: import("styled-components").StyledComponent<"div
3
3
  }, never>;
4
4
  export declare const UpdatesContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
5
5
  export declare const TimeSincePublishingContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
6
- export declare const TimeSincePublishing: import("styled-components").StyledComponent<"div", any, {
7
- isBreaking?: boolean | undefined;
8
- }, never>;
6
+ export declare const TimeSincePublishing: import("styled-components").StyledComponent<"div", any, {}, never>;
9
7
  export declare const UpdatedTimeItems: import("styled-components").StyledComponent<"div", any, {}, never>;
10
8
  export declare const UpdatedTime: import("styled-components").StyledComponent<"div", any, {
11
9
  isLessThan13Hours?: boolean | undefined;
@@ -54,7 +54,7 @@ export const UpdatedDate = styled.div `
54
54
  export const Divider = styled.div `
55
55
  background-color: ${colours.functional.greyLabel};
56
56
  width: 1px;
57
- margin: 2px 8px 6px 12px;
57
+ margin: 2px 8px 6px 8px;
58
58
  `;
59
59
  export const Headline = styled.h2 `
60
60
  color: ${colours.functional.brandColour};
@@ -75,4 +75,4 @@ export const Headline = styled.h2 `
75
75
  export const FlagContainer = styled.div `
76
76
  margin-right: 8px;
77
77
  `;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQXlCOzs7OztpQkFLM0MsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Ozt1QkFHMUMsV0FBVyxDQUFDLE1BQU07Ozs7O3VCQUtsQixXQUFXLENBQUMsSUFBSTs7OztDQUl0QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7OztDQUl6QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7O0NBR3JELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUEwQjtXQUM1RCxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVc7aUJBQ3hCLEtBQUssQ0FBQyxVQUFVOzs7Q0FHaEMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQTtXQUNiLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUztpQkFDdEIsS0FBSyxDQUFDLFVBQVU7OztDQUdoQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7OztDQUl6QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQWlDO0lBQ2xFLFlBQVk7Q0FDZixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUE7SUFDakMsWUFBWTs7Q0FFZixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUE7c0JBQ1gsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTOzs7Q0FHakQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFBO1dBQ3RCLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVztpQkFDeEIsS0FBSyxDQUFDLFFBQVE7Ozs7Ozs7dUJBT1IsV0FBVyxDQUFDLE1BQU07Ozs7OztDQU14QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUE7O0NBRXRDLENBQUMifQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXJ0aWNsZS1oZWFkZXIvc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQXlCOzs7OztpQkFLM0MsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Ozt1QkFHMUMsV0FBVyxDQUFDLE1BQU07Ozs7O3VCQUtsQixXQUFXLENBQUMsSUFBSTs7OztDQUl0QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7OztDQUl6QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7O0NBR3JELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBO1dBQ2xDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVztpQkFDeEIsS0FBSyxDQUFDLFVBQVU7OztDQUdoQyxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBO1dBQ2IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTO2lCQUN0QixLQUFLLENBQUMsVUFBVTs7O0NBR2hDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBOzs7O0NBSXpDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBaUM7SUFDbEUsWUFBWTtDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTtJQUNqQyxZQUFZOztDQUVmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTtzQkFDWCxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVM7OztDQUdqRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7V0FDdEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXO2lCQUN4QixLQUFLLENBQUMsUUFBUTs7Ozs7Ozt1QkFPUixXQUFXLENBQUMsTUFBTTs7Ozs7O0NBTXhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7Q0FFdEMsQ0FBQyJ9