From ad392ab1b2d4575aaf18111ada34255aa4b78d7d Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 6 Aug 2020 10:55:42 +0300 Subject: [PATCH] test: add environment-utils.spec --- .../src/lib/tests/environment-utils.spec.ts | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/tests/environment-utils.spec.ts diff --git a/npm/ng-packs/packages/core/src/lib/tests/environment-utils.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/environment-utils.spec.ts new file mode 100644 index 0000000000..ab7cc0df0c --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/environment-utils.spec.ts @@ -0,0 +1,71 @@ +import { HttpClient } from '@angular/common/http'; +import { Component, Injector } from '@angular/core'; +import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; +import { Store } from '@ngxs/store'; +import { BehaviorSubject, of } from 'rxjs'; +import { getRemoteEnv } from '../utils/environment-utils'; +import { SetEnvironment } from '../actions/config.actions'; + +const environment = { + production: false, + hmr: false, + application: { + baseUrl: 'https://volosoft.com', + name: 'MyProjectName', + logoUrl: '', + }, + oAuthConfig: { + issuer: 'https://api.volosoft.com', + clientId: 'MyProjectName_App', + dummyClientSecret: '1q2w3e*', + scope: 'MyProjectName', + oidc: false, + requireHttps: true, + }, + apis: { + default: { + url: 'https://api.volosoft.com', + }, + }, +}; + +@Component({ + selector: 'abp-dummy', + template: '', +}) +export class DummyComponent {} + +describe('EnvironmentUtils', () => { + let spectator: Spectator; + const createComponent = createComponentFactory({ + component: DummyComponent, + mocks: [Store, HttpClient], + }); + + beforeEach(() => (spectator = createComponent())); + + describe('#getRemoteEnv', async () => { + test('should call the remoteEnv URL and dispatch the SetEnvironment action ', async () => { + const injector = spectator.inject(Injector); + const injectorSpy = jest.spyOn(injector, 'get'); + const store = spectator.inject(Store); + const dispatchSpy = jest.spyOn(store, 'dispatch'); + const http = spectator.inject(HttpClient); + const requestSpy = jest.spyOn(http, 'request'); + + injectorSpy.mockReturnValueOnce(http); + injectorSpy.mockReturnValueOnce(store); + + requestSpy.mockReturnValue(new BehaviorSubject(environment)); + dispatchSpy.mockReturnValue(of(true)); + + const partialEnv = { remoteEnv: { url: '/assets/appsettings.json' } }; + getRemoteEnv(injector, partialEnv); + + expect(requestSpy).toHaveBeenCalledWith('GET', '/assets/appsettings.json', { headers: {} }); + expect(dispatchSpy).toHaveBeenCalledWith( + new SetEnvironment({ ...environment, ...partialEnv }), + ); + }); + }); +});