mirror of https://github.com/abpframework/abp
parent
03bf9389a1
commit
3ad26bfafb
@ -1 +0,0 @@
|
||||
export * from './permission-management.actions';
|
@ -1,11 +0,0 @@
|
||||
import { ProviderInfoDto, UpdatePermissionsDto } from '../proxy/models';
|
||||
|
||||
export class GetPermissions {
|
||||
static readonly type = '[PermissionManagement] Get Permissions';
|
||||
constructor(public payload: ProviderInfoDto) {}
|
||||
}
|
||||
|
||||
export class UpdatePermissions {
|
||||
static readonly type = '[PermissionManagement] Update Permissions';
|
||||
constructor(public payload: ProviderInfoDto & UpdatePermissionsDto) {}
|
||||
}
|
@ -1,13 +1,11 @@
|
||||
import { CoreModule } from '@abp/ng.core';
|
||||
import { ThemeSharedModule } from '@abp/ng.theme.shared';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { NgxsModule } from '@ngxs/store';
|
||||
import { PermissionManagementComponent } from './components/permission-management.component';
|
||||
import { PermissionManagementState } from './states/permission-management.state';
|
||||
|
||||
@NgModule({
|
||||
declarations: [PermissionManagementComponent],
|
||||
imports: [CoreModule, ThemeSharedModule, NgxsModule.forFeature([PermissionManagementState])],
|
||||
imports: [CoreModule, ThemeSharedModule],
|
||||
exports: [PermissionManagementComponent],
|
||||
})
|
||||
export class PermissionManagementModule {}
|
||||
|
@ -1 +0,0 @@
|
||||
export * from './permission-management-state.service';
|
@ -1,27 +0,0 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Store } from '@ngxs/store';
|
||||
import { PermissionManagementState } from '../states/permission-management.state';
|
||||
import { PermissionManagement } from '../models';
|
||||
import { GetPermissions, UpdatePermissions } from '../actions';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class PermissionManagementStateService {
|
||||
constructor(private store: Store) {}
|
||||
|
||||
getPermissionGroups() {
|
||||
return this.store.selectSnapshot(PermissionManagementState.getPermissionGroups);
|
||||
}
|
||||
getEntityDisplayName() {
|
||||
return this.store.selectSnapshot(PermissionManagementState.getEntityDisplayName);
|
||||
}
|
||||
|
||||
dispatchGetPermissions(...args: ConstructorParameters<typeof GetPermissions>) {
|
||||
return this.store.dispatch(new GetPermissions(...args));
|
||||
}
|
||||
|
||||
dispatchUpdatePermissions(...args: ConstructorParameters<typeof UpdatePermissions>) {
|
||||
return this.store.dispatch(new UpdatePermissions(...args));
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
export * from './permission-management.state';
|
@ -1,47 +0,0 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Action, Selector, State, StateContext } from '@ngxs/store';
|
||||
import { tap } from 'rxjs/operators';
|
||||
import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions';
|
||||
import { PermissionManagement } from '../models/permission-management';
|
||||
import { ProviderInfoDto } from '../proxy/models';
|
||||
import { PermissionsService } from '../proxy/permissions.service';
|
||||
|
||||
@State<PermissionManagement.State>({
|
||||
name: 'PermissionManagementState',
|
||||
defaults: { permissionRes: {} } as PermissionManagement.State,
|
||||
})
|
||||
@Injectable()
|
||||
export class PermissionManagementState {
|
||||
@Selector()
|
||||
static getPermissionGroups({ permissionRes }: PermissionManagement.State) {
|
||||
return permissionRes.groups || [];
|
||||
}
|
||||
|
||||
@Selector()
|
||||
static getEntityDisplayName({ permissionRes }: PermissionManagement.State): string {
|
||||
return permissionRes.entityDisplayName;
|
||||
}
|
||||
|
||||
constructor(private service: PermissionsService) {}
|
||||
|
||||
@Action(GetPermissions)
|
||||
permissionManagementGet(
|
||||
{ patchState }: StateContext<PermissionManagement.State>,
|
||||
{ payload: { providerKey, providerName } = {} as ProviderInfoDto }: GetPermissions,
|
||||
) {
|
||||
return this.service.get(providerName, providerKey).pipe(
|
||||
tap(permissionResponse =>
|
||||
patchState({
|
||||
permissionRes: permissionResponse,
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@Action(UpdatePermissions)
|
||||
permissionManagementUpdate(_, { payload }: UpdatePermissions) {
|
||||
return this.service.update(payload.providerName, payload.providerKey, {
|
||||
permissions: payload.permissions,
|
||||
});
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
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));
|
||||
});
|
||||
});
|
||||
});
|
@ -1,12 +1,5 @@
|
||||
/*
|
||||
* Public API Surface of permission-management
|
||||
*/
|
||||
|
||||
export * from './lib/permission-management.module';
|
||||
export * from './lib/actions';
|
||||
export * from './lib/components';
|
||||
export * from './lib/enums/components';
|
||||
export * from './lib/models';
|
||||
export * from './lib/services';
|
||||
export * from './lib/states';
|
||||
export * from './lib/permission-management.module';
|
||||
export * from './lib/proxy';
|
||||
|
Loading…
Reference in new issue