remove all ngxs imports

pull/10010/head
mehmet-erim 4 years ago
parent 03bf9389a1
commit 3ad26bfafb

@ -9,7 +9,6 @@ import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NgxsModule } from '@ngxs/store';
import { environment } from '../environments/environment';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

@ -70,7 +70,6 @@
"@ng-bootstrap/ng-bootstrap": "^7.0.0",
"@ngneat/spectator": "^8.0.3",
"@ngx-validate/core": "^0.0.13",
"@ngxs/store": "^3.7.0",
"@nrwl/angular": "12.6.5",
"@nrwl/cli": "12.6.5",
"@nrwl/cypress": "12.6.5",

@ -3,7 +3,6 @@ import { HttpClientTestingModule } from '@angular/common/http/testing';
import { Component } from '@angular/core';
import { RouterModule } from '@angular/router';
import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spectator/jest';
import { Actions, Store } from '@ngxs/store';
import { of } from 'rxjs';
import { PermissionGuard } from '../guards/permission.guard';
import { HttpErrorReporterService, PermissionService } from '../services';
@ -44,14 +43,6 @@ describe('PermissionGuard', () => {
provide: APP_BASE_HREF,
useValue: '/',
},
{
provide: Actions,
useValue: {
pipe() {
return of(null);
},
},
},
{ provide: CORE_OPTIONS, useValue: { skipGetAppConfiguration: true } },
],
});

@ -1,5 +1,4 @@
import { createHttpFactory, HttpMethod, SpectatorHttp, SpyObject } from '@ngneat/spectator/jest';
import { Store } from '@ngxs/store';
import { EnvironmentService, ProfileService, RestService } from '../services';
import { CORE_OPTIONS } from '../tokens';
@ -9,11 +8,7 @@ describe('ProfileService', () => {
const createHttp = createHttpFactory({
service: ProfileService,
providers: [
RestService,
{ provide: CORE_OPTIONS, useValue: {} },
{ provide: Store, useValue: {} },
],
providers: [RestService, { provide: CORE_OPTIONS, useValue: {} }],
mocks: [EnvironmentService],
});

@ -1,29 +1,28 @@
import { createHttpFactory, HttpMethod, SpectatorHttp, SpyObject } from '@ngneat/spectator/jest';
import { Store } from '@ngxs/store';
import { OAuthService } from 'angular-oauth2-oidc';
import { of, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
import { Rest } from '../models';
import { EnvironmentService } from '../services';
import { EnvironmentService, HttpErrorReporterService } from '../services';
import { RestService } from '../services/rest.service';
import { CORE_OPTIONS } from '../tokens';
describe('HttpClient testing', () => {
let spectator: SpectatorHttp<RestService>;
let environmentService: SpyObject<EnvironmentService>;
let store: SpyObject<Store>;
let httpErrorReporter: SpyObject<HttpErrorReporterService>;
const api = 'https://abp.io';
const createHttp = createHttpFactory({
service: RestService,
providers: [EnvironmentService, { provide: CORE_OPTIONS, useValue: { environment: {} } }],
mocks: [OAuthService, Store],
mocks: [OAuthService, HttpErrorReporterService],
});
beforeEach(() => {
spectator = createHttp();
environmentService = spectator.inject(EnvironmentService);
store = spectator.inject(Store);
httpErrorReporter = spectator.inject(HttpErrorReporterService);
environmentService.setState({
apis: {
default: {
@ -80,7 +79,7 @@ describe('HttpClient testing', () => {
});
test('should handle the error', () => {
const spy = jest.spyOn(store, 'dispatch');
const spy = jest.spyOn(httpErrorReporter, 'reportError');
spectator.service
.request({ method: HttpMethod.GET, url: '/test' }, { observe: Rest.Observe.Events })
@ -98,7 +97,7 @@ describe('HttpClient testing', () => {
});
test('should not handle the error when skipHandleError is true', () => {
const spy = jest.spyOn(store, 'dispatch');
const spy = jest.spyOn(httpErrorReporter, 'reportError');
spectator.service
.request(

@ -1,16 +1,7 @@
import { Observable, of, Subject } from 'rxjs';
import { Store } from '@ngxs/store';
import { AbstractType, InjectFlags, InjectionToken, Injector, Type } from '@angular/core';
import { Subject } from 'rxjs';
export const mockActions = new Subject();
export const mockStore = {
selectSnapshot() {
return true;
},
select(): Observable<any> {
return of(null);
},
} as unknown as Store;
export class DummyInjector extends Injector {
constructor(public payload: { [key: string]: any }) {

@ -1,8 +1,7 @@
import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spectator/jest';
import * as IdentityActions from '../actions/identity.actions';
import { IdentityStateService } from '../services/identity-state.service';
import { IdentityState } from '../states/identity.state';
import { Store } from '@ngxs/store';
import * as IdentityActions from '../actions/identity.actions';
describe('IdentityStateService', () => {
let service: IdentityStateService;

@ -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,7 +1,6 @@
import { ConfigStateService, CurrentUserDto } from '@abp/ng.core';
import { LocaleDirection } from '@abp/ng.theme.shared';
import { Component, EventEmitter, Input, Output, TrackByFunction } from '@angular/core';
import { Select, Store } from '@ngxs/store';
import { Observable, of } from 'rxjs';
import { finalize, map, pluck, switchMap, take, tap } from 'rxjs/operators';
import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions';

@ -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';

@ -1,6 +1,5 @@
import { ReplaceableComponentsService, CONTENT_STRATEGY, DomInsertionService } from '@abp/ng.core';
import { CONTENT_STRATEGY, DomInsertionService, ReplaceableComponentsService } from '@abp/ng.core';
import { APP_INITIALIZER } from '@angular/core';
import { Store } from '@ngxs/store';
import { AccountLayoutComponent } from '../components/account-layout/account-layout.component';
import { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';
import { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';

@ -7,10 +7,7 @@ import {
} from '@abp/ng.core';
import { HttpClient } from '@angular/common/http';
import { RouterModule } from '@angular/router';
import { createRoutingFactory, SpectatorRouting, SpyObject } from '@ngneat/spectator/jest';
import { Store } from '@ngxs/store';
// eslint-disable-next-line @nrwl/nx/enforce-module-boundaries
import { mockRoutesService } from '../../../../core/src/lib/tests/routes.service.spec';
import { createRoutingFactory, SpectatorRouting } from '@ngneat/spectator/jest';
import { BreadcrumbComponent } from '../components/breadcrumb/breadcrumb.component';
const mockRoutes: ABP.Route[] = [
@ -21,13 +18,12 @@ const mockRoutes: ABP.Route[] = [
describe('BreadcrumbComponent', () => {
let spectator: SpectatorRouting<RouterOutletComponent>;
let routes: RoutesService;
let store: SpyObject<Store>;
const createRouting = createRoutingFactory({
component: RouterOutletComponent,
stubsEnabled: false,
detectChanges: false,
mocks: [Store, HttpClient],
mocks: [HttpClient],
providers: [
{ provide: CORE_OPTIONS, useValue: {} },
{
@ -58,15 +54,11 @@ describe('BreadcrumbComponent', () => {
beforeEach(() => {
spectator = createRouting();
routes = spectator.inject(RoutesService);
store = spectator.inject(Store);
});
it('should display the breadcrumb', async () => {
routes.add(mockRoutes);
await spectator.router.navigateByUrl('/identity/users');
// for abpLocalization
store.selectSnapshot.mockReturnValueOnce('Identity');
store.selectSnapshot.mockReturnValueOnce('Users');
spectator.detectChanges();
const elements = spectator.queryAll('li');
@ -83,3 +75,6 @@ describe('BreadcrumbComponent', () => {
expect(spectator.query('ol.breadcrumb')).toBeFalsy();
});
});
function mockRoutesService() {
throw new Error('Function not implemented.');
}

@ -2,7 +2,6 @@ import { CoreTestingModule } from '@abp/ng.core/testing';
import { NgModule } from '@angular/core';
import { fakeAsync, tick } from '@angular/core/testing';
import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest';
import { NgxsModule } from '@ngxs/store';
import { timer } from 'rxjs';
import { ConfirmationComponent } from '../components';
import { Confirmation } from '../models';
@ -21,7 +20,7 @@ describe('ConfirmationService', () => {
let service: ConfirmationService;
const createService = createServiceFactory({
service: ConfirmationService,
imports: [NgxsModule.forRoot(), CoreTestingModule.withConfig(), MockModule],
imports: [CoreTestingModule.withConfig(), MockModule],
});
beforeEach(() => {

@ -2,7 +2,6 @@ import { CORE_OPTIONS, LocalizationPipe } from '@abp/ng.core';
import { HttpClient } from '@angular/common/http';
import { ElementRef, Renderer2 } from '@angular/core';
import { createHostFactory, SpectatorHost } from '@ngneat/spectator/jest';
import { Store } from '@ngxs/store';
import { Subject } from 'rxjs';
import { HttpErrorWrapperComponent } from '../components/http-error-wrapper/http-error-wrapper.component';
@ -11,7 +10,7 @@ describe('ErrorComponent', () => {
const createHost = createHostFactory({
component: HttpErrorWrapperComponent,
declarations: [LocalizationPipe],
mocks: [Store, HttpClient],
mocks: [HttpClient],
providers: [
{ provide: CORE_OPTIONS, useValue: {} },
{ provide: Renderer2, useValue: { removeChild: () => null } },

@ -2,7 +2,6 @@ import { LocalizationPipe } from '@abp/ng.core';
import { RouterTestingModule } from '@angular/router/testing';
import { NgbModal, NgbModalModule } from '@ng-bootstrap/ng-bootstrap';
import { createHostFactory, SpectatorHost } from '@ngneat/spectator/jest';
import { Store } from '@ngxs/store';
import { fromEvent, Subject, timer } from 'rxjs';
import { delay, reduce, take } from 'rxjs/operators';
import { ButtonComponent, ConfirmationComponent, ModalComponent } from '../components';
@ -32,7 +31,6 @@ describe('ModalComponent', () => {
},
},
],
mocks: [Store],
});
beforeEach(async () => {

@ -1,7 +1,6 @@
import { CoreTestingModule } from '@abp/ng.core/testing';
import { NgModule } from '@angular/core';
import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest';
import { NgxsModule } from '@ngxs/store';
import { timer } from 'rxjs';
import { ToastContainerComponent } from '../components/toast-container/toast-container.component';
import { ToastComponent } from '../components/toast/toast.component';
@ -21,7 +20,7 @@ describe('ToasterService', () => {
let service: ToasterService;
const createService = createServiceFactory({
service: ToasterService,
imports: [NgxsModule.forRoot(), CoreTestingModule.withConfig(), MockModule],
imports: [CoreTestingModule.withConfig(), MockModule],
});
beforeEach(() => {

Loading…
Cancel
Save