TSK-1349: Added unit test for Workbasket-Overview, -List and -ListToolbar (#1236)
* TSK-1349: added test for workbasket overview * TSK-1349: moved animations ts files to shared * TSK-1349: added unit test for workbasket list toolbar * TSK-1349: added unit tests for workbasket-list * TSK-1349: improved tests for workbasket-overview * TSK-1349: Updated test for workbasket list, workbasket-list-toolbar * TSK-1349: added more test variants for workbasket overview * TSK-1349: removed console log * TSK-1349: removed CUSTOM_ELEMENTS_SCHEMA * TSK-1349: improved tests * TSK-1349: further optimized tests
This commit is contained in:
parent
8a6e68d0b9
commit
008c1aec20
|
@ -2,7 +2,7 @@ import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
|||
import { Select, Store } from '@ngxs/store';
|
||||
import { combineLatest, Observable, Subject, Subscription, timer } from 'rxjs';
|
||||
|
||||
import { highlight } from 'theme/animations/validation.animation';
|
||||
import { highlight } from 'app/shared/animations/validation.animation';
|
||||
|
||||
import { RequestInProgressService } from 'app/shared/services/request-in-progress/request-in-progress.service';
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import { ACTION } from 'app/shared/models/action';
|
|||
import { SavingInformation, SavingWorkbasketService } from 'app/administration/services/saving-workbaskets.service';
|
||||
import { WorkbasketService } from 'app/shared/services/workbasket/workbasket.service';
|
||||
import { RequestInProgressService } from 'app/shared/services/request-in-progress/request-in-progress.service';
|
||||
import { highlight } from 'theme/animations/validation.animation';
|
||||
import { highlight } from 'app/shared/animations/validation.animation';
|
||||
import { FormsValidatorService } from 'app/shared/services/forms-validator/forms-validator.service';
|
||||
import { AccessIdDefinition } from 'app/shared/models/access-id';
|
||||
import { EngineConfigurationSelectors } from 'app/shared/store/engine-configuration-store/engine-configuration.selectors';
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
||||
import { WorkbasketSummary } from 'app/shared/models/workbasket-summary';
|
||||
import { Filter } from 'app/shared/models/filter';
|
||||
import { expandDown } from 'theme/animations/expand.animation';
|
||||
import { expandDown } from 'app/shared/animations/expand.animation';
|
||||
import { Side } from '../workbasket-distribution-targets/workbasket-distribution-targets.component';
|
||||
|
||||
@Component({
|
||||
|
|
|
@ -0,0 +1,113 @@
|
|||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { WorkbasketListToolbarComponent } from './workbasket-list-toolbar.component';
|
||||
import { Component, DebugElement, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { Actions, NgxsModule, ofActionDispatched, Store } from '@ngxs/store';
|
||||
import { Observable } from 'rxjs';
|
||||
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
||||
import { WorkbasketState } from '../../../shared/store/workbasket-store/workbasket.state';
|
||||
import { WorkbasketService } from '../../../shared/services/workbasket/workbasket.service';
|
||||
import { DomainService } from '../../../shared/services/domain/domain.service';
|
||||
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
||||
import { MatDialogModule } from '@angular/material/dialog';
|
||||
import { CreateWorkbasket } from '../../../shared/store/workbasket-store/workbasket.actions';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { Filter } from '../../../shared/models/filter';
|
||||
import { Sorting } from '../../../shared/models/sorting';
|
||||
import { ACTION } from '../../../shared/models/action';
|
||||
import { TaskanaType } from '../../../shared/models/taskana-type';
|
||||
|
||||
const getDomainFn = jest.fn().mockReturnValue(true);
|
||||
const domainServiceMock = jest.fn().mockImplementation(
|
||||
(): Partial<DomainService> => ({
|
||||
getDomains: getDomainFn
|
||||
})
|
||||
);
|
||||
|
||||
@Component({ selector: 'taskana-administration-import-export', template: '' })
|
||||
class ImportExportStub {
|
||||
@Input() currentSelection: TaskanaType;
|
||||
}
|
||||
|
||||
@Component({ selector: 'taskana-shared-sort', template: '' })
|
||||
class SortStub {
|
||||
@Input() sortingFields: Map<string, string>;
|
||||
@Input() defaultSortBy = 'key';
|
||||
@Output() performSorting = new EventEmitter<Sorting>();
|
||||
}
|
||||
|
||||
@Component({ selector: 'taskana-shared-filter', template: '' })
|
||||
class FilterStub {
|
||||
@Output() performFilter = new EventEmitter<Filter>();
|
||||
}
|
||||
|
||||
describe('WorkbasketListToolbarComponent', () => {
|
||||
let fixture: ComponentFixture<WorkbasketListToolbarComponent>;
|
||||
let debugElement: DebugElement;
|
||||
let component: WorkbasketListToolbarComponent;
|
||||
let store: Store;
|
||||
let actions$: Observable<any>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [
|
||||
HttpClientTestingModule,
|
||||
NgxsModule.forRoot([WorkbasketState]),
|
||||
MatSnackBarModule,
|
||||
MatDialogModule,
|
||||
BrowserAnimationsModule
|
||||
],
|
||||
declarations: [WorkbasketListToolbarComponent, ImportExportStub, SortStub, FilterStub],
|
||||
providers: [{ provide: DomainService, useClass: domainServiceMock }, WorkbasketService]
|
||||
}).compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(WorkbasketListToolbarComponent);
|
||||
debugElement = fixture.debugElement;
|
||||
component = fixture.debugElement.componentInstance;
|
||||
store = TestBed.inject(Store);
|
||||
actions$ = TestBed.inject(Actions);
|
||||
component.action = ACTION.COPY;
|
||||
fixture.detectChanges();
|
||||
}));
|
||||
|
||||
it('should create the component', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should dispatch CreateWorkbasket when addWorkbasket is called', async((done) => {
|
||||
component.action = ACTION.COPY;
|
||||
let actionDispatched = false;
|
||||
actions$.pipe(ofActionDispatched(CreateWorkbasket)).subscribe(() => (actionDispatched = true));
|
||||
component.addWorkbasket();
|
||||
expect(actionDispatched).toBe(true);
|
||||
}));
|
||||
|
||||
it('should not dispatch action in addWorkbasket when action is CREATE', async((done) => {
|
||||
component.action = ACTION.CREATE;
|
||||
let actionDispatched = false;
|
||||
actions$.pipe(ofActionDispatched(CreateWorkbasket)).subscribe(() => (actionDispatched = true));
|
||||
component.addWorkbasket();
|
||||
expect(actionDispatched).toBe(false);
|
||||
}));
|
||||
|
||||
it('should emit value when sorting is called', (done) => {
|
||||
const mockSort: Sorting = { sortBy: '123', sortDirection: 'asc' };
|
||||
let sort: Sorting = { sortBy: '123', sortDirection: 'asc' };
|
||||
component.performSorting.subscribe((sortBy: Sorting) => {
|
||||
sort = sortBy;
|
||||
done();
|
||||
});
|
||||
component.sorting(sort);
|
||||
expect(sort).toMatchObject(mockSort);
|
||||
});
|
||||
|
||||
it('should emit value when filtering is called', (done) => {
|
||||
const mockFilter: Filter = { filterParams: 'abc' };
|
||||
let filterBy: Filter = { filterParams: 'abc' };
|
||||
component.performFilter.subscribe((filter: Filter) => {
|
||||
filterBy = filter;
|
||||
done();
|
||||
});
|
||||
component.filtering(filterBy);
|
||||
expect(filterBy).toMatchObject(mockFilter);
|
||||
});
|
||||
});
|
|
@ -1,19 +1,14 @@
|
|||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
|
||||
import { Sorting } from 'app/shared/models/sorting';
|
||||
import { Filter } from 'app/shared/models/filter';
|
||||
import { WorkbasketSummary } from 'app/shared/models/workbasket-summary';
|
||||
|
||||
import { WorkbasketService } from 'app/shared/services/workbasket/workbasket.service';
|
||||
import { TaskanaType } from 'app/shared/models/taskana-type';
|
||||
import { expandDown } from 'theme/animations/expand.animation';
|
||||
import { expandDown } from 'app/shared/animations/expand.animation';
|
||||
import { Select, Store } from '@ngxs/store';
|
||||
import { Location } from '@angular/common';
|
||||
import { Observable, Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
import { ACTION } from '../../../shared/models/action';
|
||||
import { CreateWorkbasket, SetActiveAction } from '../../../shared/store/workbasket-store/workbasket.actions';
|
||||
import { CreateWorkbasket } from '../../../shared/store/workbasket-store/workbasket.actions';
|
||||
import { WorkbasketSelectors } from '../../../shared/store/workbasket-store/workbasket.selectors';
|
||||
|
||||
@Component({
|
||||
|
@ -54,13 +49,7 @@ export class WorkbasketListToolbarComponent implements OnInit {
|
|||
destroy$ = new Subject<void>();
|
||||
action: ACTION;
|
||||
|
||||
constructor(
|
||||
private workbasketService: WorkbasketService,
|
||||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private store: Store,
|
||||
private location: Location
|
||||
) {}
|
||||
constructor(private store: Store) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.workbasketActiveAction$.pipe(takeUntil(this.destroy$)).subscribe((action) => {
|
||||
|
@ -77,12 +66,9 @@ export class WorkbasketListToolbarComponent implements OnInit {
|
|||
}
|
||||
|
||||
addWorkbasket() {
|
||||
// this.store.dispatch(new SetActiveAction(ACTION.CREATE));
|
||||
if (this.action !== ACTION.CREATE) {
|
||||
this.store.dispatch(new CreateWorkbasket());
|
||||
}
|
||||
// this.workbasketService.selectWorkBasket();
|
||||
// this.router.navigate([{ outlets: { detail: ['new-workbasket'] } }], { relativeTo: this.route });
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
|
|
|
@ -0,0 +1,150 @@
|
|||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { WorkbasketListComponent } from './workbasket-list.component';
|
||||
import { Component, DebugElement, EventEmitter, Input, Output } from '@angular/core';
|
||||
import { Actions, NgxsModule, ofActionDispatched, Store } from '@ngxs/store';
|
||||
import { Observable, of } from 'rxjs';
|
||||
import { WorkbasketState } from '../../../shared/store/workbasket-store/workbasket.state';
|
||||
import { WorkbasketService } from '../../../shared/services/workbasket/workbasket.service';
|
||||
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
||||
import { MatDialogModule } from '@angular/material/dialog';
|
||||
import { OrientationService } from '../../../shared/services/orientation/orientation.service';
|
||||
import { ImportExportService } from '../../services/import-export.service';
|
||||
import { DeselectWorkbasket, SelectWorkbasket } from '../../../shared/store/workbasket-store/workbasket.actions';
|
||||
import { TaskanaQueryParameters } from '../../../shared/util/query-parameters';
|
||||
import { WorkbasketSummary } from '../../../shared/models/workbasket-summary';
|
||||
import { Sorting } from '../../../shared/models/sorting';
|
||||
import { Filter } from '../../../shared/models/filter';
|
||||
import { ICONTYPES } from '../../../shared/models/icon-types';
|
||||
import { Page } from '../../../shared/models/page';
|
||||
|
||||
const workbasketSavedTriggeredFn = jest.fn().mockReturnValue(of(1));
|
||||
const workbasketSummaryFn = jest.fn().mockReturnValue(of({}));
|
||||
const getWorkbasketFn = jest.fn().mockReturnValue(of({ workbasketId: '1' }));
|
||||
const workbasketServiceMock = jest.fn().mockImplementation(
|
||||
(): Partial<WorkbasketService> => ({
|
||||
workbasketSavedTriggered: workbasketSavedTriggeredFn,
|
||||
getWorkBasketsSummary: workbasketSummaryFn,
|
||||
getWorkBasket: getWorkbasketFn
|
||||
})
|
||||
);
|
||||
|
||||
const getOrientationFn = jest.fn().mockReturnValue(of('landscape'));
|
||||
const orientationServiceMock = jest.fn().mockImplementation(
|
||||
(): Partial<OrientationService> => ({
|
||||
getOrientation: getOrientationFn,
|
||||
calculateNumberItemsList: jest.fn().mockReturnValue(1920)
|
||||
})
|
||||
);
|
||||
|
||||
const getImportingFinishedFn = jest.fn().mockReturnValue(of(true));
|
||||
const importExportServiceMock = jest.fn().mockImplementation(
|
||||
(): Partial<ImportExportService> => ({
|
||||
getImportingFinished: getImportingFinishedFn
|
||||
})
|
||||
);
|
||||
|
||||
@Component({ selector: 'taskana-administration-workbasket-list-toolbar', template: '' })
|
||||
class WorkbasketListToolbarStub {
|
||||
@Input() workbaskets: Array<WorkbasketSummary>;
|
||||
@Input() workbasketDefaultSortBy: string;
|
||||
@Output() performSorting = new EventEmitter<Sorting>();
|
||||
@Output() performFilter = new EventEmitter<Filter>();
|
||||
}
|
||||
|
||||
@Component({ selector: 'taskana-administration-icon-type', template: '' })
|
||||
class IconTypeStub {
|
||||
@Input() type: ICONTYPES = ICONTYPES.ALL;
|
||||
@Input() selected = false;
|
||||
}
|
||||
|
||||
@Component({ selector: 'taskana-shared-spinner', template: '' })
|
||||
class SpinnerStub {
|
||||
@Input() isRunning: boolean;
|
||||
}
|
||||
|
||||
@Component({ selector: 'taskana-shared-pagination', template: '' })
|
||||
class PaginationStub {
|
||||
@Input() page: Page;
|
||||
@Input() type: String;
|
||||
@Output() changePage = new EventEmitter<number>();
|
||||
@Input() numberOfItems: number;
|
||||
}
|
||||
|
||||
@Component({ selector: 'svg-icon', template: '' })
|
||||
class SvgIconStub {}
|
||||
|
||||
describe('WorkbasketListComponent', () => {
|
||||
let fixture: ComponentFixture<WorkbasketListComponent>;
|
||||
let debugElement: DebugElement;
|
||||
let component: WorkbasketListComponent;
|
||||
let store: Store;
|
||||
let actions$: Observable<any>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [NgxsModule.forRoot([WorkbasketState]), MatSnackBarModule, MatDialogModule],
|
||||
declarations: [
|
||||
WorkbasketListComponent,
|
||||
WorkbasketListToolbarStub,
|
||||
IconTypeStub,
|
||||
SpinnerStub,
|
||||
PaginationStub,
|
||||
SvgIconStub
|
||||
],
|
||||
providers: [
|
||||
{ provide: WorkbasketService, useClass: workbasketServiceMock },
|
||||
{ provide: OrientationService, useClass: orientationServiceMock },
|
||||
{ provide: ImportExportService, useClass: importExportServiceMock }
|
||||
]
|
||||
}).compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(WorkbasketListComponent);
|
||||
debugElement = fixture.debugElement;
|
||||
component = fixture.componentInstance;
|
||||
store = TestBed.inject(Store);
|
||||
actions$ = TestBed.inject(Actions);
|
||||
fixture.detectChanges();
|
||||
}));
|
||||
|
||||
it('should create component', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should dispatch SelectWorkbasket when selecting a workbasket', async((done) => {
|
||||
component.selectedId = undefined;
|
||||
fixture.detectChanges();
|
||||
let actionDispatched = false;
|
||||
actions$.pipe(ofActionDispatched(SelectWorkbasket)).subscribe(() => (actionDispatched = true));
|
||||
component.selectWorkbasket('1');
|
||||
expect(actionDispatched).toBe(true);
|
||||
}));
|
||||
|
||||
it('should dispatch DeselectWorkbasket when selecting a workbasket again', async((done) => {
|
||||
component.selectedId = '123';
|
||||
fixture.detectChanges();
|
||||
let actionDispatched = false;
|
||||
actions$.pipe(ofActionDispatched(DeselectWorkbasket)).subscribe(() => (actionDispatched = true));
|
||||
const mockId = '123';
|
||||
component.selectWorkbasket(mockId);
|
||||
expect(actionDispatched).toBe(true);
|
||||
expect(component.selectedId).toEqual(undefined); //because Deselect action sets selectedId to undefined
|
||||
}));
|
||||
|
||||
it('should set sort value when performSorting is called', () => {
|
||||
const sort = { sortBy: '1', sortDirection: 'asc' };
|
||||
component.performSorting(sort);
|
||||
expect(component.sort).toMatchObject(sort);
|
||||
});
|
||||
|
||||
it('should set filter value when performFilter is called', () => {
|
||||
const filter = { filterParams: '123' };
|
||||
component.performFilter(filter);
|
||||
expect(component.filterBy).toMatchObject(filter);
|
||||
});
|
||||
|
||||
it('should change page value when change page function is called ', () => {
|
||||
const page = 2;
|
||||
component.changePage(page);
|
||||
expect(TaskanaQueryParameters.page).toBe(page);
|
||||
});
|
||||
});
|
|
@ -1,5 +1,5 @@
|
|||
import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';
|
||||
import { Observable, pipe, Subject, Subscription } from 'rxjs';
|
||||
import { Observable, Subject } from 'rxjs';
|
||||
|
||||
import { WorkbasketSummaryRepresentation } from 'app/shared/models/workbasket-summary-representation';
|
||||
import { WorkbasketSummary } from 'app/shared/models/workbasket-summary';
|
||||
|
@ -93,6 +93,7 @@ export class WorkbasketListComponent implements OnInit, OnDestroy {
|
|||
.subscribe((orientation: Orientation) => {
|
||||
this.refreshWorkbasketList();
|
||||
});
|
||||
|
||||
this.importExportService
|
||||
.getImportingFinished()
|
||||
.pipe(takeUntil(this.destroy$))
|
||||
|
@ -134,7 +135,7 @@ export class WorkbasketListComponent implements OnInit, OnDestroy {
|
|||
this.performRequest();
|
||||
}
|
||||
|
||||
private performRequest(): void {
|
||||
performRequest(): void {
|
||||
this.store.dispatch(
|
||||
new GetWorkbasketsSummary(
|
||||
true,
|
||||
|
|
|
@ -0,0 +1,170 @@
|
|||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { WorkbasketOverviewComponent } from './workbasket-overview.component';
|
||||
import { Component, DebugElement } from '@angular/core';
|
||||
import { Actions, NgxsModule, ofActionDispatched, Store } from '@ngxs/store';
|
||||
import { Observable, of } from 'rxjs';
|
||||
import { WorkbasketState } from '../../../shared/store/workbasket-store/workbasket.state';
|
||||
import { WorkbasketService } from '../../../shared/services/workbasket/workbasket.service';
|
||||
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
||||
import { DomainService } from '../../../shared/services/domain/domain.service';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { RequestInProgressService } from '../../../shared/services/request-in-progress/request-in-progress.service';
|
||||
import { SelectedRouteService } from '../../../shared/services/selected-route/selected-route';
|
||||
import { NotificationService } from '../../../shared/services/notifications/notification.service';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { CreateWorkbasket, SelectWorkbasket } from '../../../shared/store/workbasket-store/workbasket.actions';
|
||||
|
||||
const showDialogFn = jest.fn().mockReturnValue(true);
|
||||
const NotificationServiceSpy = jest.fn().mockImplementation(
|
||||
(): Partial<NotificationService> => ({
|
||||
triggerError: showDialogFn,
|
||||
showToast: showDialogFn
|
||||
})
|
||||
);
|
||||
|
||||
const mockActivatedRoute = {
|
||||
firstChild: {
|
||||
params: of({
|
||||
id: 'new-workbasket'
|
||||
})
|
||||
}
|
||||
};
|
||||
|
||||
const mockActivatedRouteAlternative = {
|
||||
firstChild: {
|
||||
params: of({
|
||||
id: '101'
|
||||
})
|
||||
}
|
||||
};
|
||||
|
||||
const mockActivatedRouteNoParams = {};
|
||||
|
||||
@Component({ selector: 'taskana-administration-workbasket-list', template: '' })
|
||||
class WorkbasketListStub {}
|
||||
|
||||
@Component({ selector: 'taskana-administration-workbasket-details', template: '' })
|
||||
class WorkbasketDetailsStub {}
|
||||
|
||||
@Component({ selector: 'svg-icon', template: '' })
|
||||
class SvgIconStub {}
|
||||
|
||||
describe('WorkbasketOverviewComponent', () => {
|
||||
let fixture: ComponentFixture<WorkbasketOverviewComponent>;
|
||||
let debugElement: DebugElement;
|
||||
let component: WorkbasketOverviewComponent;
|
||||
let store: Store;
|
||||
let actions$: Observable<any>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [HttpClientTestingModule, RouterTestingModule.withRoutes([]), NgxsModule.forRoot([WorkbasketState])],
|
||||
declarations: [WorkbasketOverviewComponent, WorkbasketListStub, WorkbasketDetailsStub, SvgIconStub],
|
||||
providers: [
|
||||
WorkbasketService,
|
||||
{ provide: NotificationService, useClass: NotificationServiceSpy },
|
||||
{ provide: ActivatedRoute, useValue: mockActivatedRoute },
|
||||
DomainService,
|
||||
RequestInProgressService,
|
||||
SelectedRouteService
|
||||
]
|
||||
}).compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(WorkbasketOverviewComponent);
|
||||
debugElement = fixture.debugElement;
|
||||
component = fixture.debugElement.componentInstance;
|
||||
store = TestBed.inject(Store);
|
||||
actions$ = TestBed.inject(Actions);
|
||||
fixture.detectChanges();
|
||||
}));
|
||||
|
||||
it('should create the component', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should always displays workbasket-list', () => {
|
||||
expect(debugElement.nativeElement.querySelector('taskana-administration-workbasket-list')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should display workbasket-details correctly', () => {
|
||||
component.showDetail = false;
|
||||
fixture.detectChanges();
|
||||
expect(debugElement.nativeElement.querySelector('taskana-administration-workbasket-details')).toBeNull();
|
||||
|
||||
component.showDetail = true;
|
||||
fixture.detectChanges();
|
||||
expect(debugElement.nativeElement.querySelector('taskana-administration-workbasket-details')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should display details when params id exists', async((done) => {
|
||||
let actionDispatched = false;
|
||||
actions$.pipe(ofActionDispatched(CreateWorkbasket)).subscribe(() => (actionDispatched = true));
|
||||
component.ngOnInit();
|
||||
expect(actionDispatched).toBe(true);
|
||||
expect(component.routerParams.id).toMatch('new-workbasket');
|
||||
expect(component.showDetail).toBeTruthy();
|
||||
expect(debugElement.nativeElement.querySelector('taskana-administration-workbasket-details')).toBeTruthy();
|
||||
}));
|
||||
});
|
||||
|
||||
describe('WorkbasketOverviewComponent Alternative Params ID', () => {
|
||||
let fixture: ComponentFixture<WorkbasketOverviewComponent>;
|
||||
let component: WorkbasketOverviewComponent;
|
||||
let store: Store;
|
||||
let actions$: Observable<any>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [HttpClientTestingModule, RouterTestingModule.withRoutes([]), NgxsModule.forRoot([WorkbasketState])],
|
||||
declarations: [WorkbasketOverviewComponent, WorkbasketListStub, WorkbasketDetailsStub, SvgIconStub],
|
||||
providers: [
|
||||
WorkbasketService,
|
||||
{ provide: NotificationService, useClass: NotificationServiceSpy },
|
||||
{ provide: ActivatedRoute, useValue: mockActivatedRouteAlternative },
|
||||
DomainService,
|
||||
RequestInProgressService,
|
||||
SelectedRouteService
|
||||
]
|
||||
}).compileComponents();
|
||||
fixture = TestBed.createComponent(WorkbasketOverviewComponent);
|
||||
component = fixture.debugElement.componentInstance;
|
||||
store = TestBed.inject(Store);
|
||||
actions$ = TestBed.inject(Actions);
|
||||
fixture.detectChanges();
|
||||
}));
|
||||
|
||||
it('should display details when params id exists', async((done) => {
|
||||
expect(component.routerParams.id).toBeTruthy();
|
||||
let actionDispatched = false;
|
||||
actions$.pipe(ofActionDispatched(SelectWorkbasket)).subscribe(() => (actionDispatched = true));
|
||||
component.ngOnInit();
|
||||
expect(actionDispatched).toBe(true);
|
||||
}));
|
||||
});
|
||||
|
||||
describe('WorkbasketOverviewComponent No Params', () => {
|
||||
let fixture: ComponentFixture<WorkbasketOverviewComponent>;
|
||||
let component: WorkbasketOverviewComponent;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [HttpClientTestingModule, RouterTestingModule.withRoutes([]), NgxsModule.forRoot([WorkbasketState])],
|
||||
declarations: [WorkbasketOverviewComponent, WorkbasketListStub, WorkbasketDetailsStub, SvgIconStub],
|
||||
providers: [
|
||||
WorkbasketService,
|
||||
{ provide: NotificationService, useClass: NotificationServiceSpy },
|
||||
{ provide: ActivatedRoute, useValue: mockActivatedRouteNoParams },
|
||||
DomainService,
|
||||
RequestInProgressService,
|
||||
SelectedRouteService
|
||||
]
|
||||
}).compileComponents();
|
||||
fixture = TestBed.createComponent(WorkbasketOverviewComponent);
|
||||
component = fixture.debugElement.componentInstance;
|
||||
fixture.detectChanges();
|
||||
}));
|
||||
|
||||
it('should create the component', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -26,7 +26,7 @@ export class WorkbasketOverviewComponent implements OnInit {
|
|||
|
||||
ngOnInit() {
|
||||
if (this.route.firstChild) {
|
||||
this.route.firstChild.params.pipe(takeUntil(this.destroy$)).subscribe((params) => {
|
||||
this.route.firstChild.params.subscribe((params) => {
|
||||
this.routerParams = params;
|
||||
if (this.routerParams.id) {
|
||||
this.showDetail = true;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Component, OnInit, Input } from '@angular/core';
|
||||
import { highlight } from 'theme/animations/validation.animation';
|
||||
import { highlight } from 'app/shared/animations/validation.animation';
|
||||
|
||||
@Component({
|
||||
selector: 'taskana-shared-field-error-display',
|
||||
|
|
|
@ -7,7 +7,7 @@ import { BusinessAdminGuard } from 'app/shared/guards/business-admin.guard';
|
|||
import { MonitorGuard } from 'app/shared/guards/monitor.guard';
|
||||
import { WindowRefService } from 'app/shared/services/window/window.service';
|
||||
import { UserGuard } from 'app/shared/guards/user.guard';
|
||||
import { expandRight } from 'theme/animations/expand.animation';
|
||||
import { expandRight } from 'app/shared/animations/expand.animation';
|
||||
import { TaskanaEngineService } from '../../services/taskana-engine/taskana-engine.service';
|
||||
@Component({
|
||||
selector: 'taskana-shared-nav-bar',
|
||||
|
|
|
@ -13,7 +13,7 @@ import { TypeaheadMatch } from 'ngx-bootstrap/typeahead';
|
|||
|
||||
import { AccessIdsService } from 'app/shared/services/access-ids/access-ids.service';
|
||||
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
|
||||
import { highlight } from 'theme/animations/validation.animation';
|
||||
import { highlight } from 'app/shared/animations/validation.animation';
|
||||
import { mergeMap } from 'rxjs/operators';
|
||||
import { AccessIdDefinition } from 'app/shared/models/access-id';
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
import { TaskanaEngineService } from 'app/shared/services/taskana-engine/taskana-engine.service';
|
||||
import { UserInfo } from 'app/shared/models/user-info';
|
||||
import { expandDown } from '../../../../theme/animations/expand.animation';
|
||||
import { expandDown } from '../../animations/expand.animation';
|
||||
|
||||
@Component({
|
||||
selector: 'taskana-shared-user-information',
|
||||
|
|
|
@ -22,7 +22,6 @@ import {
|
|||
} from './workbasket.actions';
|
||||
import { WorkbasketSummaryRepresentation } from '../../models/workbasket-summary-representation';
|
||||
import { ACTION } from '../../models/action';
|
||||
import { DomainService } from '../../services/domain/domain.service';
|
||||
import { NOTIFICATION_TYPES } from '../../models/notifications';
|
||||
import { NotificationService } from '../../services/notifications/notification.service';
|
||||
import { WorkbasketAccessItemsRepresentation } from '../../models/workbasket-access-items-representation';
|
||||
|
@ -37,7 +36,6 @@ class InitializeStore {
|
|||
export class WorkbasketState implements NgxsAfterBootstrap {
|
||||
constructor(
|
||||
private workbasketService: WorkbasketService,
|
||||
private domainService: DomainService,
|
||||
private location: Location,
|
||||
private notificationService: NotificationService
|
||||
) {}
|
||||
|
|
|
@ -6,7 +6,7 @@ import { WorkbasketService } from 'app/shared/services/workbasket/workbasket.ser
|
|||
import { Sorting } from 'app/shared/models/sorting';
|
||||
import { Filter } from 'app/shared/models/filter';
|
||||
import { TaskanaType } from 'app/shared/models/taskana-type';
|
||||
import { expandDown } from 'theme/animations/expand.animation';
|
||||
import { expandDown } from 'app/shared/animations/expand.animation';
|
||||
import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
|
||||
import { WorkplaceService } from 'app/workplace/services/workplace.service';
|
||||
import { ObjectReference } from 'app/workplace/models/object-reference';
|
||||
|
|
Loading…
Reference in New Issue