UNPKG

@shopify/jest-dom-mocks

Version:
42 lines (39 loc) 1.15 kB
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 };