Skip to content
Snippets Groups Projects
Commit 5b37cbed authored by OZGCloud's avatar OZGCloud
Browse files

OZG-130 improve vorgang service test

parent bd80307f
Branches
Tags
No related merge requests found
......@@ -6,3 +6,7 @@ export enum VorgangListLinkRel {
export enum VorgangHeaderLinkRel {
VORGANG_MIT_EINGANG = 'vorgang-mit-eingang'
}
export enum VorgangHeaderLinkRel {
VORGANG_MIG_EINGANG = 'vorgang-mit-eingang'
}
\ No newline at end of file
import { NavigationEnd, Router } from '@angular/router';
import { ApiRootResource } from '@goofy-client/api-root-shared';
import { createEmptyStateResource, createStateResource } from '@goofy-client/tech-shared';
import { Mock, mock, useFromMock } from '@goofy-client/test-utils';
import { getEmbeddedResource, getUrl } from '@ngxp/rest';
import { ApiRootService } from 'libs/api-root-shared/src/lib/api-root.service';
import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
import { createVorgangListResource, createVorgangMitEingangResource } from 'libs/vorgang-shared/test/vorgang';
import { createVorgangListResource, createVorgangMitEingangResource, createVorgangResource } from 'libs/vorgang-shared/test/vorgang';
import { BehaviorSubject, of } from 'rxjs';
import { VorgangListLinkRel } from './vorgang.linkrels';
import { VorgangListResource, VorgangResource } from './vorgang.model';
import { VorgangRepository } from './vorgang.repository';
import { VorgangService } from './vorgang.service';
import { NavigationEnd, Router } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';
describe('VorgangService', () => {
let service: VorgangService;
......@@ -20,6 +19,9 @@ describe('VorgangService', () => {
let router: Mock<Router>
let events: BehaviorSubject<Event>;
const vorgangListResource: VorgangListResource = createVorgangListResource();
const vorgaengeOfVorgangList: VorgangResource[] = getEmbeddedResource(vorgangListResource, VorgangListLinkRel.VORGANG_HEADER_LIST);
beforeEach(() => {
repository = mock(VorgangRepository);
apiRootService = mock(ApiRootService);
......@@ -31,7 +33,6 @@ describe('VorgangService', () => {
describe('getCurrentVorgangList', () => {
const apiRootResource: ApiRootResource = createApiRootResource();
const vorgangListResource: VorgangListResource = createVorgangListResource();
beforeEach(() => {
(<any>apiRootService).getApiRoot.mockReturnValue(of(createStateResource(apiRootResource)));
......@@ -92,7 +93,6 @@ describe('VorgangService', () => {
})
describe('check vorgaenge after load', () => {
const expected: VorgangResource[] = getEmbeddedResource(vorgangListResource, VorgangListLinkRel.VORGANG_HEADER_LIST);
beforeEach(() => {
repository.loadVorgangList.mockReturnValue(of(vorgangListResource));
......@@ -101,8 +101,8 @@ describe('VorgangService', () => {
it('should set vorgaenge to loaded vorgaenge', () => {
service.getCurrentVorgangList();
expect((<any>service).vorgaenge$.value).toHaveLength(expected.length);
expect((<any>service).vorgaenge$.value).toBe(expected);
expect((<any>service).vorgaenge$.value).toHaveLength(vorgaengeOfVorgangList.length);
expect((<any>service).vorgaenge$.value).toBe(vorgaengeOfVorgangList);
})
})
......@@ -133,6 +133,14 @@ describe('VorgangService', () => {
repository.getNextVorgangListPage.mockReturnValue(of(vorgangListResource));
})
it('should not call repository while currentList is loading', () => {
(<any>service).currentList$.next(createEmptyStateResource(true));
service.loadNextPage();
expect(repository.getNextVorgangListPage).not.toHaveBeenCalled();
})
it('should call repository', () => {
(<any>service).currentList$.next(createStateResource(vorgangListResource));
......@@ -179,30 +187,6 @@ describe('VorgangService', () => {
});
})
describe('check vorgaenge after load', () => {
const vorgaenge: VorgangResource[] = getEmbeddedResource(vorgangListResource, VorgangListLinkRel.VORGANG_HEADER_LIST);
const additionalVorgangList: VorgangListResource = createVorgangListResource();
const additionalVorgaenge: VorgangResource[] = getEmbeddedResource(additionalVorgangList, VorgangListLinkRel.VORGANG_HEADER_LIST);
beforeEach(() => {
(<any>service).vorgaenge$.next([]);
repository.getNextVorgangListPage.mockReturnValue(of(additionalVorgangList));
})
it('should add vorgaenge to exist vorgaenge', () => {
(<any>service).vorgaenge$.next(vorgaenge);
const expectedVorgaenge: VorgangResource[] = [];
expectedVorgaenge.push.apply(expectedVorgaenge, vorgaenge);
expectedVorgaenge.push.apply(expectedVorgaenge, additionalVorgaenge);
service.loadNextPage();
expect((<any>service).vorgaenge$.value).toHaveLength(20);
expect((<any>service).vorgaenge$.value).toEqual(expectedVorgaenge);
})
})
describe('check hasNextPage after load', () => {
it('should be true if link exists', () => {
......@@ -241,4 +225,23 @@ describe('VorgangService', () => {
})
})
})
describe('addVorgangListToVorgaenge', () => {
const vorgangResource: VorgangResource = createVorgangResource();
const additionalVorgangResource: VorgangResource = createVorgangResource();
beforeEach(() => {
(<any>service).vorgaenge$.next([vorgangResource]);
})
it('should add vorgaenge to existing vorgaenge', () => {
const expectedVorgaenge: VorgangResource[] = [vorgangResource, additionalVorgangResource];
service.addVorgangListToVorgaenge([additionalVorgangResource]);
expect((<any>service).vorgaenge$.value).toHaveLength(2);
expect((<any>service).vorgaenge$.value).toEqual(expectedVorgaenge);
})
})
})
\ No newline at end of file
......@@ -51,9 +51,9 @@ export class VorgangService {
}
public loadNextPage(): void {
//if (!this.isCurrenListResourceLoading()) {
if (!this.isCurrenListResourceLoading()) {
this.loadNextListPage();
//}
}
}
public getVorgaenge(): Observable<VorgangResource[]> {
......@@ -80,13 +80,13 @@ export class VorgangService {
this.vorgangRepository.loadVorgangList(apiRootResource).subscribe(vorgangList => {
if (vorgangList !== null) {
this.updateCurrentList(vorgangList);
this.vorgaenge$.next(getEmbeddedResource(vorgangList, VorgangListLinkRel.VORGANG_HEADER_LIST));
this.updateVorgaenge(this.getVorgaengeFromList(vorgangList));
}
})
}
private isCurrenListResourceLoading(): boolean {
return this.currentList$.value.loaded;
return this.currentList$.value.loading;
}
private loadNextListPage(): void {
......@@ -95,7 +95,7 @@ export class VorgangService {
this.vorgangRepository.getNextVorgangListPage(this.currentList$.value.resource).subscribe(vorgangList => {
if (vorgangList !== null) {
this.updateCurrentList(vorgangList);
this.addVorgangListToVorgaenge(vorgangList);
this.addVorgangListToVorgaenge(this.getVorgaengeFromList(vorgangList));
}
})
}
......@@ -114,13 +114,17 @@ export class VorgangService {
this.hasNextPage$.next(hasLink(this.currentList$.value.resource, VorgangListLinkRel.NEXT));
}
private addVorgangListToVorgaenge(vorgangList: VorgangListResource): void {
const additionalVorgaenge: VorgangResource[] = getEmbeddedResource(vorgangList, VorgangListLinkRel.VORGANG_HEADER_LIST);
addVorgangListToVorgaenge(vorgaenge: VorgangResource[]): void {
const updatedVorgaenge: VorgangResource[] = [...this.vorgaenge$.value].concat(vorgaenge);
this.updateVorgaenge(updatedVorgaenge);
}
this.addVorgaenge(additionalVorgaenge);
private getVorgaengeFromList(vorgangList: VorgangListResource): VorgangResource[] {
return getEmbeddedResource(vorgangList, VorgangListLinkRel.VORGANG_HEADER_LIST);
}
private addVorgaenge(additionalVorgaenge: VorgangResource[]): void {
this.vorgaenge$.next([...this.vorgaenge$.value].concat(additionalVorgaenge));
private updateVorgaenge(vorgaenge: VorgangResource[]): void {
this.vorgaenge$.next(vorgaenge);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment