Browse Source

test: resolve initial-utils.spec errors

pull/6343/head
mehmet-erim 6 years ago
parent
commit
acf08e364b
  1. 76
      npm/ng-packs/packages/core/src/lib/tests/initial-utils.spec.ts

76
npm/ng-packs/packages/core/src/lib/tests/initial-utils.spec.ts

@ -1,16 +1,23 @@
import { Component, Injector } from '@angular/core'; import { Component, Injector } from '@angular/core';
import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; import { createComponentFactory, Spectator } from '@ngneat/spectator/jest';
import { Store } from '@ngxs/store';
import { OAuthService } from 'angular-oauth2-oidc'; import { OAuthService } from 'angular-oauth2-oidc';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { GetAppConfiguration } from '../actions'; import { ApplicationConfiguration } from '../models';
import { SessionStateService } from '../services'; import {
ApplicationConfigurationService,
AuthService,
ConfigStateService,
EnvironmentService,
SessionStateService,
} from '../services';
import * as AuthFlowStrategy from '../strategies/auth-flow.strategy'; import * as AuthFlowStrategy from '../strategies/auth-flow.strategy';
import { CORE_OPTIONS } from '../tokens/options.token'; import { CORE_OPTIONS } from '../tokens/options.token';
import { checkAccessToken, getInitialData, localeInitializer } from '../utils'; import { checkAccessToken, getInitialData, localeInitializer } from '../utils';
import * as environmentUtils from '../utils/environment-utils'; import * as environmentUtils from '../utils/environment-utils';
import * as multiTenancyUtils from '../utils/multi-tenancy-utils'; import * as multiTenancyUtils from '../utils/multi-tenancy-utils';
const environment = { oAuthConfig: { issuer: 'test' } };
@Component({ @Component({
selector: 'abp-dummy', selector: 'abp-dummy',
template: '', template: '',
@ -21,12 +28,19 @@ describe('InitialUtils', () => {
let spectator: Spectator<DummyComponent>; let spectator: Spectator<DummyComponent>;
const createComponent = createComponentFactory({ const createComponent = createComponentFactory({
component: DummyComponent, component: DummyComponent,
mocks: [Store, OAuthService], mocks: [
EnvironmentService,
ConfigStateService,
ApplicationConfigurationService,
AuthService,
OAuthService,
SessionStateService,
],
providers: [ providers: [
{ {
provide: CORE_OPTIONS, provide: CORE_OPTIONS,
useValue: { useValue: {
environment: { oAuthConfig: { issuer: 'test' } }, environment,
registerLocaleFn: () => Promise.resolve(), registerLocaleFn: () => Promise.resolve(),
}, },
}, },
@ -36,25 +50,41 @@ describe('InitialUtils', () => {
beforeEach(() => (spectator = createComponent())); beforeEach(() => (spectator = createComponent()));
describe('#getInitialData', () => { describe('#getInitialData', () => {
test('should dispatch GetAppConfiguration and return', async () => { test('should call the getConfiguration method of ApplicationConfigurationService and set states', async () => {
const injector = spectator.inject(Injector); const environmentService = spectator.inject(EnvironmentService);
const injectorSpy = jest.spyOn(injector, 'get'); const configStateService = spectator.inject(ConfigStateService);
const store = spectator.inject(Store); const sessionStateService = spectator.inject(SessionStateService);
const dispatchSpy = jest.spyOn(store, 'dispatch'); const applicationConfigurationService = spectator.inject(ApplicationConfigurationService);
const parseTenantFromUrlSpy = jest.spyOn(multiTenancyUtils, 'parseTenantFromUrl'); const parseTenantFromUrlSpy = jest.spyOn(multiTenancyUtils, 'parseTenantFromUrl');
const getRemoteEnvSpy = jest.spyOn(environmentUtils, 'getRemoteEnv'); const getRemoteEnvSpy = jest.spyOn(environmentUtils, 'getRemoteEnv');
parseTenantFromUrlSpy.mockReturnValue(Promise.resolve()); parseTenantFromUrlSpy.mockReturnValue(Promise.resolve());
getRemoteEnvSpy.mockReturnValue(Promise.resolve()); getRemoteEnvSpy.mockReturnValue(Promise.resolve());
injectorSpy.mockReturnValueOnce(store); const appConfigRes = {
injectorSpy.mockReturnValueOnce({ skipGetAppConfiguration: false }); currentTenant: { id: 'test', name: 'testing' },
injectorSpy.mockReturnValueOnce({ init: () => null }); } as ApplicationConfiguration.Response;
injectorSpy.mockReturnValueOnce({ hasValidAccessToken: () => false });
dispatchSpy.mockReturnValue(of('test')); const getConfigurationSpy = jest.spyOn(applicationConfigurationService, 'getConfiguration');
getConfigurationSpy.mockReturnValue(of(appConfigRes));
const environmentSetStateSpy = jest.spyOn(environmentService, 'setState');
const configSetStateSpy = jest.spyOn(configStateService, 'setState');
const sessionSetTenantSpy = jest.spyOn(sessionStateService, 'setTenant');
const configStateGetOneSpy = jest.spyOn(configStateService, 'getOne');
configStateGetOneSpy.mockReturnValue(appConfigRes.currentTenant);
const mockInjector = {
get: spectator.inject,
};
await getInitialData(mockInjector)();
expect(typeof getInitialData(injector)).toBe('function'); expect(typeof getInitialData(mockInjector)).toBe('function');
expect(await getInitialData(injector)()).toBe('test'); expect(environmentSetStateSpy).toHaveBeenCalledWith(environment);
expect(dispatchSpy.mock.calls[0][0] instanceof GetAppConfiguration).toBeTruthy(); expect(getConfigurationSpy).toHaveBeenCalled();
expect(configSetStateSpy).toHaveBeenCalledWith(appConfigRes);
expect(sessionSetTenantSpy).toHaveBeenCalledWith(appConfigRes.currentTenant);
}); });
}); });
@ -64,14 +94,10 @@ describe('InitialUtils', () => {
const injectorSpy = jest.spyOn(injector, 'get'); const injectorSpy = jest.spyOn(injector, 'get');
const clearOAuthStorageSpy = jest.spyOn(AuthFlowStrategy, 'clearOAuthStorage'); const clearOAuthStorageSpy = jest.spyOn(AuthFlowStrategy, 'clearOAuthStorage');
injectorSpy.mockReturnValue({ hasValidAccessToken: () => true }); injectorSpy.mockReturnValueOnce({ getDeep: () => false });
injectorSpy.mockReturnValueOnce({ hasValidAccessToken: () => true });
checkAccessToken( checkAccessToken(injector);
{
selectSnapshot: () => false,
} as any,
injector,
);
expect(clearOAuthStorageSpy).toHaveBeenCalled(); expect(clearOAuthStorageSpy).toHaveBeenCalled();
}); });
}); });

Loading…
Cancel
Save