copay-crown
Version:
A Secure Crown Wallet
128 lines (115 loc) • 3.5 kB
text/typescript
import { PlatformProvider } from './platform';
import { TestBed, getTestBed, inject, async } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { NgLoggerModule, Level } from '@nsalaun/ng-logger';
import { Logger } from '../../providers/logger/logger';
import {
TranslateModule,
TranslateService,
TranslateLoader,
TranslateFakeLoader
} from '@ngx-translate/core';
import { Platform } from 'ionic-angular';
describe('PlatformProvider', () => {
let injector: TestBed;
let service: PlatformProvider;
let httpMock: HttpTestingController;
let userAgent;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule,
NgLoggerModule.forRoot(Level.LOG),
TranslateModule.forRoot({
loader: { provide: TranslateLoader, useClass: TranslateFakeLoader }
})
],
providers: [
PlatformProvider,
Logger,
Platform
]
});
injector = getTestBed();
service = injector.get(PlatformProvider);
httpMock = injector.get(HttpTestingController);
});
it('should get browser name', () => {
let name = service.getBrowserName();
expect(name).toBe('chrome');
});
it('should return "unknown" if browser is unknown', () => {
// change userAgent
userAgent = window.navigator.userAgent;
console.log('before changing userAgent', window.navigator.userAgent);
Object.defineProperties(window.navigator, {
userAgent: {
value: 'someUnknownCoolBrowser v1.0',
writable: true
}
});
console.log('after changing userAgent', window.navigator.userAgent);
let name = service.getBrowserName();
expect(name).toBe('unknown');
// restore userAgent
console.log('before restoring userAgent', window.navigator.userAgent);
Object.defineProperties(window.navigator, {
userAgent: {
value: userAgent,
writable: false
}
});
console.log('after restoring userAgent', window.navigator.userAgent);
});
});
describe('PlatformProvider without navigator', () => {
let injector: TestBed;
let service: PlatformProvider;
let httpMock: HttpTestingController;
let navi;
beforeEach(() => {
navi = window.navigator;
console.log('before changing navigator', window.navigator);
// change navigator
Object.defineProperties(window, {
navigator: {
value: null,
writable: true
}
});
console.log('after changing navigator', window.navigator);
});
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule,
NgLoggerModule.forRoot(Level.LOG),
TranslateModule.forRoot({
loader: { provide: TranslateLoader, useClass: TranslateFakeLoader }
})
],
providers: [
PlatformProvider,
Logger,
Platform
]
});
injector = getTestBed();
service = injector.get(PlatformProvider);
httpMock = injector.get(HttpTestingController);
});
afterEach(() => {
console.log('before restoring navigator', window.navigator);
Object.defineProperties(window, {
navigator: {
value: navi,
writable: false
}
});
console.log('after restoring navigator', window.navigator);
});
it('should have a dummy user agent', () => {
let ua = service.ua;
expect(ua).toBe('dummy user-agent');
});
});