import 'reflect-metadata'; jest.mock('mixpanel-browser/src/loader-module', () => ({})); import BrowserDetectorService from './browser-detector.service'; const initBrowserDetectorServiceWithUserAgentString = ( userAgentString: string, ) => { return new BrowserDetectorService({ navigator: { userAgent: userAgentString, } as Window, }); }; describe('BrowserDetectorService', () => { describe('isFirefox', () => { // tslint:disable-next-line test('If the user navigation string contains Firefox it should return true', () => { const browserDetectorService = initBrowserDetectorServiceWithUserAgentString( 'Firefox', ); expect(browserDetectorService.isFirefox()) .toBe(true); }); // tslint:disable-next-line test('If the user navigation string does not contain Firefox it should return true', () => { const browserDetectorService = initBrowserDetectorServiceWithUserAgentString( 'other', ); expect(browserDetectorService.isFirefox()) .toBe(false); }); }); describe('isSafari', () => { // tslint:disable-next-line test('If the user navigation string contains Safari it should return true', () => { const browserDetectorService = initBrowserDetectorServiceWithUserAgentString( 'Safari', ); expect(browserDetectorService.isSafari()) .toBe(true); }); // tslint:disable-next-line test('If the user navigation string contains Safari AND Chrome it should return false', () => { const browserDetectorService = initBrowserDetectorServiceWithUserAgentString( 'Safari Chrome', ); expect(browserDetectorService.isSafari()) .toBe(false); }); // tslint:disable-next-line test('If the user navigation string does not contain Safari it should return true', () => { const browserDetectorService = initBrowserDetectorServiceWithUserAgentString( 'other', ); expect(browserDetectorService.isSafari()) .toBe(false); }); }); describe('isChrome', () => { // tslint:disable-next-line test('If the user navigation string does not contain Firefox or Safari it should return true', () => { const browserDetectorService = initBrowserDetectorServiceWithUserAgentString( 'really long test value should still return default', ); expect(browserDetectorService.isChrome()) .toBe(true); }); }); });