You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/npm/ng-packs/packages/permission-management/src/lib/tests/permission-management-state...

61 lines
2.2 KiB

import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spectator/jest';
import { PermissionManagementStateService } from '../services/permission-management-state.service';
import { PermissionManagementState } from '../states/permission-management.state';
import { Store } from '@ngxs/store';
import * as PermissionManagementActions from '../actions';
describe('PermissionManagementStateService', () => {
let service: PermissionManagementStateService;
let spectator: SpectatorService<PermissionManagementStateService>;
let store: SpyObject<Store>;
const createService = createServiceFactory({
service: PermissionManagementStateService,
mocks: [Store],
});
beforeEach(() => {
spectator = createService();
service = spectator.service;
store = spectator.inject(Store);
});
test('should have the all PermissionManagementState static methods', () => {
const reg = /(?<=static )(.*)(?=\()/gm;
PermissionManagementState.toString()
.match(reg)
.forEach(fnName => {
expect(service[fnName]).toBeTruthy();
const spy = jest.spyOn(store, 'selectSnapshot');
spy.mockClear();
const isDynamicSelector = PermissionManagementState[fnName].name !== 'memoized';
if (isDynamicSelector) {
PermissionManagementState[fnName] = jest.fn((...args) => args);
service[fnName]('test', 0, {});
expect(PermissionManagementState[fnName]).toHaveBeenCalledWith('test', 0, {});
} else {
service[fnName]();
expect(spy).toHaveBeenCalledWith(PermissionManagementState[fnName]);
}
});
});
test('should have a dispatch method for every PermissionManagementState action', () => {
const reg = /(?<=dispatch)(\w+)(?=\()/gm;
PermissionManagementStateService.toString()
.match(reg)
.forEach(fnName => {
expect(PermissionManagementActions[fnName]).toBeTruthy();
const spy = jest.spyOn(store, 'dispatch');
spy.mockClear();
const params = Array.from(new Array(PermissionManagementActions[fnName].length));
service[`dispatch${fnName}`](...params);
expect(spy).toHaveBeenCalledWith(new PermissionManagementActions[fnName](...params));
});
});
});