From 2f3c43bb26cf0a3c4763c626bb8f4b441eee7dce Mon Sep 17 00:00:00 2001 From: TheDiaval Date: Tue, 24 Dec 2019 10:47:20 +0300 Subject: [PATCH] test(core): add missing tests for state services --- .../lib/tests/config-state.service.spec.ts | 18 ++++++++++++++++++ .../lib/tests/profile-state.service.spec.ts | 19 +++++++++++++++++++ .../lib/tests/session-state.service.spec.ts | 19 +++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts index 1b20a2889b..ec8fb3ce67 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts @@ -3,6 +3,7 @@ import { ConfigStateService } from '../services/config-state.service'; import { ConfigState } from '../states'; import { Store } from '@ngxs/store'; import { Config } from '../models/config'; +import * as ConfigActions from '../actions'; const CONFIG_STATE_DATA = { environment: { @@ -140,4 +141,21 @@ describe('ConfigStateService', () => { } }); }); + + test('should have a dispatch method for every ConfigState action', () => { + const reg = /(?<=dispatch)(\w+)(?=\()/gm; + ConfigStateService.toString() + .match(reg) + .forEach(fnName => { + expect(ConfigActions[fnName]).toBeTruthy(); + + const spy = jest.spyOn(store, 'dispatch'); + spy.mockClear(); + + const params = Array.from(new Array(ConfigActions[fnName].length)); + + service[`dispatch${fnName}`](...params); + expect(spy).toHaveBeenCalledWith(new ConfigActions[fnName](...params)); + }); + }); }); diff --git a/npm/ng-packs/packages/core/src/lib/tests/profile-state.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/profile-state.service.spec.ts index 3732d8000c..10db71f6c6 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/profile-state.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/profile-state.service.spec.ts @@ -2,6 +2,8 @@ import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spect import { ProfileStateService } from '../services/profile-state.service'; import { ProfileState } from '../states/profile.state'; import { Store } from '@ngxs/store'; +import * as ProfileActions from '../actions'; + describe('ProfileStateService', () => { let service: ProfileStateService; let spectator: SpectatorService; @@ -35,4 +37,21 @@ describe('ProfileStateService', () => { } }); }); + + test('should have a dispatch method for every ProfileState action', () => { + const reg = /(?<=dispatch)(\w+)(?=\()/gm; + ProfileStateService.toString() + .match(reg) + .forEach(fnName => { + expect(ProfileActions[fnName]).toBeTruthy(); + + const spy = jest.spyOn(store, 'dispatch'); + spy.mockClear(); + + const params = Array.from(new Array(ProfileActions[fnName].length)); + + service[`dispatch${fnName}`](...params); + expect(spy).toHaveBeenCalledWith(new ProfileActions[fnName](...params)); + }); + }); }); diff --git a/npm/ng-packs/packages/core/src/lib/tests/session-state.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/session-state.service.spec.ts index 40664f29b5..8bca7d1ae3 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/session-state.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/session-state.service.spec.ts @@ -2,6 +2,8 @@ import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spect import { SessionStateService } from '../services/session-state.service'; import { SessionState } from '../states/session.state'; import { Store } from '@ngxs/store'; +import * as SessionActions from '../actions'; + describe('SessionStateService', () => { let service: SessionStateService; let spectator: SpectatorService; @@ -35,4 +37,21 @@ describe('SessionStateService', () => { } }); }); + + test('should have a dispatch method for every sessionState action', () => { + const reg = /(?<=dispatch)(\w+)(?=\()/gm; + SessionStateService.toString() + .match(reg) + .forEach(fnName => { + expect(SessionActions[fnName]).toBeTruthy(); + + const spy = jest.spyOn(store, 'dispatch'); + spy.mockClear(); + + const params = Array.from(new Array(SessionActions[fnName].length)); + + service[`dispatch${fnName}`](...params); + expect(spy).toHaveBeenCalledWith(new SessionActions[fnName](...params)); + }); + }); });