Skip to content

Commit a53e9a1

Browse files
committed
wrote test to test async change time
1 parent a7063d0 commit a53e9a1

File tree

8 files changed

+145
-14
lines changed

8 files changed

+145
-14
lines changed

__tests__/__snapshots__/react-pure-time.tests.js.snap renamed to __tests__/__snapshots__/react-pure-time.test.tsx.snap

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,19 @@ exports[`Time component behavior Renders right with string 1990-06-16 13:22:17 1
143143
16.06.1990 13:22:17
144144
</span>
145145
`;
146+
147+
exports[`test async behavior of the Time component 1 minute change to hour 1`] = `
148+
<span
149+
className=""
150+
>
151+
1 hour ago
152+
</span>
153+
`;
154+
155+
exports[`test async behavior of the Time component Render Time component with relative time 1`] = `
156+
<span
157+
className=""
158+
>
159+
45 minutes ago
160+
</span>
161+
`;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
it("", () => {
2+
expect(1).toBe(1);
3+
});
4+
5+
const monthNames = [
6+
"January",
7+
"February",
8+
"March",
9+
"April",
10+
"May",
11+
"June",
12+
"July",
13+
"August",
14+
"September",
15+
"October",
16+
"November",
17+
"December",
18+
];
19+
20+
const CurrentTimeStamp = new Date();
21+
const TimeStampHour = new Date(CurrentTimeStamp);
22+
TimeStampHour.setHours(CurrentTimeStamp.getHours() - 1);
23+
TimeStampHour.setMinutes(Math.abs(CurrentTimeStamp.getMinutes() + 1));
24+
25+
const TimeStampMinutes = new Date(CurrentTimeStamp);
26+
TimeStampMinutes.setHours(CurrentTimeStamp.getHours() - 1);
27+
TimeStampMinutes.setMinutes(Math.abs(CurrentTimeStamp.getMinutes() + 15));
28+
29+
const mockedStringHour = `${
30+
monthNames[TimeStampHour.getMonth()]
31+
} ${TimeStampHour.getDate()}, ${TimeStampHour.getFullYear()}, ${TimeStampHour.getHours()}:${TimeStampHour.getMinutes()}`;
32+
33+
const mockedStringMinutes = `${
34+
monthNames[TimeStampMinutes.getMonth()]
35+
} ${TimeStampMinutes.getDate()}, ${TimeStampMinutes.getFullYear()}, ${TimeStampMinutes.getHours()}:${TimeStampMinutes.getMinutes()}`;
36+
37+
export { mockedStringHour, mockedStringMinutes };

__tests__/react-pure-time.tests.js renamed to __tests__/react-pure-time.test.tsx

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,42 @@
1-
/* global describe expect it */
2-
import React from "react";
3-
import Time from "../src/react-pure-time.tsx";
4-
import renderer from "react-test-renderer";
1+
/**
2+
* @jest-environment jsdom
3+
*/
4+
5+
import * as React from "react";
6+
import * as renderer from "react-test-renderer";
7+
import Time from "../src/react-pure-time";
8+
9+
import {
10+
mockedStringHour,
11+
mockedStringMinutes,
12+
} from "./helpers/data-mocked.const";
13+
14+
jest.setTimeout(100000);
15+
describe("test async behavior of the Time component", () => {
16+
it("Render Time component with relative time", (done) => {
17+
const TimeComponent = renderer.create(
18+
<Time value={mockedStringMinutes} relativeTime />
19+
);
20+
renderer.act(() => {
21+
setTimeout(() => {
22+
expect(TimeComponent.toJSON()).toMatchSnapshot();
23+
done();
24+
}, 1000);
25+
});
26+
});
27+
28+
it("1 minute change to hour", (done) => {
29+
const TimeComponent = renderer.create(
30+
<Time value={mockedStringHour} relativeTime />
31+
);
32+
renderer.act(() => {
33+
setTimeout(() => {
34+
expect(TimeComponent.toJSON()).toMatchSnapshot();
35+
done();
36+
}, 61000);
37+
});
38+
});
39+
});
540

641
describe("Time component behavior", () => {
742
it("Renders default placeholder with empty props", () => {

example/example.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/example.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ const ModalContainer = () => (
100100
<td>September 2, 2003, 2:26 am</td>
101101
<td>relativeTime</td>
102102
<td>
103-
<Time value="September 2, 2003, 2:26 am" relativeTime />
103+
<Time value="October 29, 2021, 08:40 am" relativeTime />
104104
</td>
105105
<td>
106106
<Time

package-lock.json

Lines changed: 47 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@
3838
"@babel/preset-es2015": "^7.0.0-beta.53",
3939
"@babel/preset-react": "^7.0.0-beta.40",
4040
"@babel/preset-typescript": "7.15.0",
41-
"@types/react": "^17.0.31",
41+
"@types/jest": "^27.0.2",
42+
"@types/react": "^17.0.33",
4243
"@types/react-dom": "^17.0.10",
44+
"@types/react-test-renderer": "^17.0.1",
4345
"babel-loader": "^8.0.0-beta.0",
4446
"babel-plugin-react-transform": "^3.0.0",
4547
"conventional-changelog": "^1.1.7",

src/react-pure-time.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ const Time = (props: Props) => {
153153
});
154154
interval = window.setInterval(() => {
155155
const date = new Date(props.value);
156+
const diff = getRelativeTimeDiff(date);
156157
setState({
157158
currentUnit: props.unit || bestFit(diff),
158159
relativeTime: calculateRelativeTime(

0 commit comments

Comments
 (0)