@shopify/jest-dom-mocks
Version:
Jest mocking utilities for working with the DOM
42 lines (39 loc) • 1.15 kB
JavaScript
import { set } from './utilities.mjs';
class Connection {
constructor() {
this.isUsingMockConnection = false;
}
mock(timing = {}) {
const globalNavigator = navigator;
if (this.isUsingMockConnection) {
throw new Error('You tried to mock navigator.connection when it was already mocked.');
}
this.originalConnection = globalNavigator.connection;
const mockConnection = {
addEventListener: () => {},
removeEventListener: () => {},
dispatchEvent: () => false,
type: 'unknown',
downlink: 0,
effectiveType: '3g',
onchange: null,
rtt: 100,
saveData: false,
...timing
};
set(globalNavigator, 'connection', mockConnection);
this.isUsingMockConnection = true;
}
restore() {
const globalNavigator = navigator;
if (!this.isUsingMockConnection) {
throw new Error('You tried to restore navigator.connection when it was already restored.');
}
set(globalNavigator, 'connection', this.originalConnection);
this.isUsingMockConnection = false;
}
isMocked() {
return this.isUsingMockConnection;
}
}
export { Connection };