Skip to content

Commit de2d3f9

Browse files
committed
refactor(timetravel): move animation timetravel helper into a seperate file
1 parent 1de66bc commit de2d3f9

File tree

2 files changed

+29
-17
lines changed

2 files changed

+29
-17
lines changed

setupJest.js

+3-17
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';
22
require('jest-fetch-mock').enableMocks();
3-
const MockDate = require('mockdate');
43
const frameTime = 1;
54

65
jest.mock('react-native/Libraries/Alert/Alert', () => {
@@ -18,19 +17,6 @@ jest.mock('react-native/Libraries/Utilities/Dimensions', () => {
1817
};
1918
});
2019

21-
// global time travel mock for mocking "RN Animated" fram steps;
22-
global.timeTravel = (time = frameTime) => {
23-
// tick travel handler
24-
const tickTravel = () => {
25-
// move time forward by number of fram time ms
26-
const now = Date.now();
27-
MockDate.set(new Date(now + frameTime));
28-
// run the timers forward
29-
jest.advanceTimersByTime(frameTime);
30-
}
31-
// step through each of the frames
32-
const frames = time / frameTime;
33-
for (let i = 0; i < frames; i++) {
34-
tickTravel();
35-
}
36-
};
20+
global.requestAnimationFrame = cb => {
21+
setTimeout(cb, frameTime)
22+
}

timeTravel.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const MockDate = require('mockdate');
2+
export const FRAME_TIME = 1;
3+
4+
const advanceOneFrame = () => {
5+
MockDate.set(new Date(Date.now() + FRAME_TIME))
6+
jest.advanceTimersByTime(FRAME_TIME)
7+
}
8+
9+
// global time travel mock for mocking "RN Animated" fram steps;
10+
const timeTravel = (msToAdvance = FRAME_TIME) => {
11+
const numberOfFramesToRun = msToAdvance / FRAME_TIME
12+
let framesElapsed = 0
13+
14+
// Step through each of the frames until we've ran them all
15+
while (framesElapsed < numberOfFramesToRun) {
16+
advanceOneFrame()
17+
framesElapsed++
18+
}
19+
}
20+
21+
export const setupTimeTravel = () => {
22+
MockDate.set(0)
23+
jest.useFakeTimers()
24+
}
25+
26+
export default timeTravel

0 commit comments

Comments
 (0)