geo.getCurrentPosition and some testing helpers (#8150)

Signed-off-by: Kerry Archibald <kerrya@element.io>
This commit is contained in:
Kerry 2022-03-25 12:30:50 +01:00 committed by GitHub
parent f229ad6407
commit 0d513b3a2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 99 additions and 4 deletions

View file

@ -141,3 +141,27 @@ export const mockGeolocation = (): MockedObject<Geolocation> => {
return mockGeolocation;
};
/**
* Creates a mock watchPosition implementation
* that calls success callback at the provided delays
* ```
* geolocation.watchPosition.mockImplementation([0, 1000, 5000, 50])
* ```
* will call the provided handler with a mock position at
* next tick, 1000ms, 6000ms, 6050ms
*/
export const watchPositionMockImplementation = (delays: number[]) => {
return (callback: PositionCallback) => {
const position = makeGeolocationPosition({});
let totalDelay = 0;
delays.map(delayMs => {
totalDelay += delayMs;
const timeout = setTimeout(() => {
callback({ ...position, timestamp: position.timestamp + totalDelay });
}, totalDelay);
return timeout;
});
};
};