mirror of https://github.com/abpframework/abp
parent
178db0fa86
commit
ae7015daf5
@ -0,0 +1,343 @@
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { createServiceFactory, SpectatorService } from '@ngneat/spectator';
|
||||
import { NGXS_PLUGINS, NgxsModule, InitState, Store } from '@ngxs/store';
|
||||
import { environment } from '../../../../../apps/dev-app/src/environments/environment';
|
||||
import { LAYOUTS } from '../../../../theme-basic/src/public-api';
|
||||
import { ABP } from '../models';
|
||||
import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS, ABP_ROUTES } from '../plugins';
|
||||
import { RouterOutletComponent } from '../components';
|
||||
import { ConfigState } from '../states';
|
||||
import { CoreModule } from '../core.module';
|
||||
import { eLayoutType } from '../enums/common';
|
||||
|
||||
ABP_ROUTES.push(
|
||||
{
|
||||
name: 'AbpUiNavigation::Menu:Administration',
|
||||
path: '',
|
||||
order: 1,
|
||||
wrapper: true,
|
||||
},
|
||||
{
|
||||
name: 'AbpIdentity::Menu:IdentityManagement',
|
||||
path: 'identity',
|
||||
order: 1,
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: eLayoutType.application,
|
||||
iconClass: 'fa fa-id-card-o',
|
||||
children: [
|
||||
{ path: 'roles', name: 'AbpIdentity::Roles', order: 2, requiredPolicy: 'AbpIdentity.Roles' },
|
||||
{ path: 'users', name: 'AbpIdentity::Users', order: 1, requiredPolicy: 'AbpIdentity.Users' },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'AbpAccount::Menu:Account',
|
||||
path: 'account',
|
||||
invisible: true,
|
||||
layout: eLayoutType.application,
|
||||
children: [
|
||||
{ path: 'login', name: 'AbpAccount::Login', order: 1 },
|
||||
{ path: 'register', name: 'AbpAccount::Register', order: 2 },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'AbpTenantManagement::Menu:TenantManagement',
|
||||
path: 'tenant-management',
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: eLayoutType.application,
|
||||
iconClass: 'fa fa-users',
|
||||
children: [
|
||||
{
|
||||
path: 'tenants',
|
||||
name: 'AbpTenantManagement::Tenants',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpTenantManagement.Tenants',
|
||||
},
|
||||
],
|
||||
},
|
||||
);
|
||||
|
||||
const expectedState = {
|
||||
environment,
|
||||
requirements: {
|
||||
layouts: LAYOUTS,
|
||||
},
|
||||
routes: [
|
||||
{
|
||||
name: '::Menu:Home',
|
||||
path: '',
|
||||
children: [],
|
||||
url: '/',
|
||||
},
|
||||
{
|
||||
name: 'AbpAccount::Menu:Account',
|
||||
path: 'account',
|
||||
invisible: true,
|
||||
layout: 'application',
|
||||
children: [
|
||||
{
|
||||
path: 'login',
|
||||
name: 'AbpAccount::Login',
|
||||
order: 1,
|
||||
url: '/account/login',
|
||||
},
|
||||
{
|
||||
path: 'register',
|
||||
name: 'AbpAccount::Register',
|
||||
order: 2,
|
||||
url: '/account/register',
|
||||
},
|
||||
],
|
||||
url: '/account',
|
||||
},
|
||||
{
|
||||
name: 'AbpUiNavigation::Menu:Administration',
|
||||
path: '',
|
||||
order: 1,
|
||||
wrapper: true,
|
||||
children: [
|
||||
{
|
||||
name: 'AbpIdentity::Menu:IdentityManagement',
|
||||
path: 'identity',
|
||||
order: 1,
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: 'application',
|
||||
iconClass: 'fa fa-id-card-o',
|
||||
children: [
|
||||
{
|
||||
path: 'users',
|
||||
name: 'AbpIdentity::Users',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpIdentity.Users',
|
||||
url: '/identity/users',
|
||||
},
|
||||
{
|
||||
path: 'roles',
|
||||
name: 'AbpIdentity::Roles',
|
||||
order: 2,
|
||||
requiredPolicy: 'AbpIdentity.Roles',
|
||||
url: '/identity/roles',
|
||||
},
|
||||
],
|
||||
url: '/identity',
|
||||
},
|
||||
{
|
||||
name: 'AbpTenantManagement::Menu:TenantManagement',
|
||||
path: 'tenant-management',
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: 'application',
|
||||
iconClass: 'fa fa-users',
|
||||
children: [
|
||||
{
|
||||
path: 'tenants',
|
||||
name: 'AbpTenantManagement::Tenants',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpTenantManagement.Tenants',
|
||||
url: '/tenant-management/tenants',
|
||||
},
|
||||
],
|
||||
url: '/tenant-management',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
flattedRoutes: [
|
||||
{
|
||||
name: '::Menu:Home',
|
||||
path: '',
|
||||
children: [],
|
||||
url: '/',
|
||||
},
|
||||
{
|
||||
name: 'AbpAccount::Menu:Account',
|
||||
path: 'account',
|
||||
invisible: true,
|
||||
layout: 'application',
|
||||
children: [
|
||||
{
|
||||
path: 'login',
|
||||
name: 'AbpAccount::Login',
|
||||
order: 1,
|
||||
url: '/account/login',
|
||||
},
|
||||
{
|
||||
path: 'register',
|
||||
name: 'AbpAccount::Register',
|
||||
order: 2,
|
||||
url: '/account/register',
|
||||
},
|
||||
],
|
||||
url: '/account',
|
||||
},
|
||||
{
|
||||
path: 'login',
|
||||
name: 'AbpAccount::Login',
|
||||
order: 1,
|
||||
url: '/account/login',
|
||||
},
|
||||
{
|
||||
path: 'register',
|
||||
name: 'AbpAccount::Register',
|
||||
order: 2,
|
||||
url: '/account/register',
|
||||
},
|
||||
{
|
||||
name: 'AbpUiNavigation::Menu:Administration',
|
||||
path: '',
|
||||
order: 1,
|
||||
wrapper: true,
|
||||
children: [
|
||||
{
|
||||
name: 'AbpIdentity::Menu:IdentityManagement',
|
||||
path: 'identity',
|
||||
order: 1,
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: 'application',
|
||||
iconClass: 'fa fa-id-card-o',
|
||||
children: [
|
||||
{
|
||||
path: 'users',
|
||||
name: 'AbpIdentity::Users',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpIdentity.Users',
|
||||
url: '/identity/users',
|
||||
},
|
||||
{
|
||||
path: 'roles',
|
||||
name: 'AbpIdentity::Roles',
|
||||
order: 2,
|
||||
requiredPolicy: 'AbpIdentity.Roles',
|
||||
url: '/identity/roles',
|
||||
},
|
||||
],
|
||||
url: '/identity',
|
||||
},
|
||||
{
|
||||
name: 'AbpTenantManagement::Menu:TenantManagement',
|
||||
path: 'tenant-management',
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: 'application',
|
||||
iconClass: 'fa fa-users',
|
||||
children: [
|
||||
{
|
||||
path: 'tenants',
|
||||
name: 'AbpTenantManagement::Tenants',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpTenantManagement.Tenants',
|
||||
url: '/tenant-management/tenants',
|
||||
},
|
||||
],
|
||||
url: '/tenant-management',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'AbpIdentity::Menu:IdentityManagement',
|
||||
path: 'identity',
|
||||
order: 1,
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: 'application',
|
||||
iconClass: 'fa fa-id-card-o',
|
||||
children: [
|
||||
{
|
||||
path: 'users',
|
||||
name: 'AbpIdentity::Users',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpIdentity.Users',
|
||||
url: '/identity/users',
|
||||
},
|
||||
{
|
||||
path: 'roles',
|
||||
name: 'AbpIdentity::Roles',
|
||||
order: 2,
|
||||
requiredPolicy: 'AbpIdentity.Roles',
|
||||
url: '/identity/roles',
|
||||
},
|
||||
],
|
||||
url: '/identity',
|
||||
},
|
||||
{
|
||||
path: 'users',
|
||||
name: 'AbpIdentity::Users',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpIdentity.Users',
|
||||
url: '/identity/users',
|
||||
},
|
||||
{
|
||||
path: 'roles',
|
||||
name: 'AbpIdentity::Roles',
|
||||
order: 2,
|
||||
requiredPolicy: 'AbpIdentity.Roles',
|
||||
url: '/identity/roles',
|
||||
},
|
||||
{
|
||||
name: 'AbpTenantManagement::Menu:TenantManagement',
|
||||
path: 'tenant-management',
|
||||
parentName: 'AbpUiNavigation::Menu:Administration',
|
||||
layout: 'application',
|
||||
iconClass: 'fa fa-users',
|
||||
children: [
|
||||
{
|
||||
path: 'tenants',
|
||||
name: 'AbpTenantManagement::Tenants',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpTenantManagement.Tenants',
|
||||
url: '/tenant-management/tenants',
|
||||
},
|
||||
],
|
||||
url: '/tenant-management',
|
||||
},
|
||||
{
|
||||
path: 'tenants',
|
||||
name: 'AbpTenantManagement::Tenants',
|
||||
order: 1,
|
||||
requiredPolicy: 'AbpTenantManagement.Tenants',
|
||||
url: '/tenant-management/tenants',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
describe('ConfigPlugin', () => {
|
||||
let spectator: SpectatorService<ConfigPlugin>;
|
||||
const createService = createServiceFactory({
|
||||
service: ConfigPlugin,
|
||||
imports: [
|
||||
CoreModule,
|
||||
NgxsModule.forRoot([]),
|
||||
RouterTestingModule.withRoutes([
|
||||
{
|
||||
path: '',
|
||||
component: RouterOutletComponent,
|
||||
data: {
|
||||
routes: {
|
||||
name: '::Menu:Home',
|
||||
} as ABP.Route,
|
||||
},
|
||||
},
|
||||
{ path: 'identity', component: RouterOutletComponent },
|
||||
{ path: 'account', component: RouterOutletComponent },
|
||||
{ path: 'tenant-management', component: RouterOutletComponent },
|
||||
]),
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: NGXS_PLUGINS,
|
||||
useClass: ConfigPlugin,
|
||||
multi: true,
|
||||
},
|
||||
{
|
||||
provide: NGXS_CONFIG_PLUGIN_OPTIONS,
|
||||
useValue: { environment, requirements: { layouts: LAYOUTS } } as ABP.Root,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
spectator = createService();
|
||||
});
|
||||
|
||||
it('should ConfigState must be create with correct datas', () => {
|
||||
const store = spectator.get(Store);
|
||||
const state = store.selectSnapshot(ConfigState);
|
||||
expect(state).toEqual(expectedState);
|
||||
});
|
||||
});
|
||||
Loading…
Reference in new issue