Added tests

This commit is contained in:
Giuseppe Digilio
2019-01-11 10:52:03 +01:00
parent 9edd18f289
commit 9898d2a90c
6 changed files with 748 additions and 485 deletions

View File

@@ -1,5 +1,5 @@
import { ChangeDetectorRef, NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ChangeDetectorRef, Component, NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core';
import { async, ComponentFixture, inject, TestBed } from '@angular/core/testing';
import { of as observableOf } from 'rxjs';
import { SubmissionServiceStub } from '../../shared/testing/submission-service-stub';
@@ -9,7 +9,6 @@ import {
mockSubmissionCollectionId,
mockSubmissionDefinition,
mockSubmissionId,
mockSubmissionObject,
mockSubmissionObjectNew,
mockSubmissionSelfUrl,
mockSubmissionState
@@ -20,6 +19,7 @@ import { HALEndpointService } from '../../core/shared/hal-endpoint.service';
import { AuthServiceStub } from '../../shared/testing/auth-service-stub';
import { AuthService } from '../../core/auth/auth.service';
import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service-stub';
import { createTestComponent } from '../../shared/testing/utils';
describe('SubmissionFormComponent Component', () => {
@@ -41,124 +41,172 @@ describe('SubmissionFormComponent Component', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [],
declarations: [SubmissionFormComponent],
declarations: [
SubmissionFormComponent,
TestComponent
],
providers: [
{ provide: AuthService, useClass: AuthServiceStub },
{ provide: HALEndpointService, useValue: new HALEndpointServiceStub('workspaceitems') },
{ provide: SubmissionService, useClass: SubmissionServiceStub },
ChangeDetectorRef
ChangeDetectorRef,
SubmissionFormComponent
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SubmissionFormComponent);
comp = fixture.componentInstance;
compAsAny = comp;
submissionServiceStub = TestBed.get(SubmissionService);
authServiceStub = TestBed.get(AuthService);
});
describe('', () => {
let testComp: TestComponent;
let testFixture: ComponentFixture<TestComponent>;
afterEach(() => {
comp = null;
compAsAny = null;
fixture = null;
});
// synchronous beforeEach
beforeEach(() => {
const html = `
<ds-submission-submit-form [collectionId]="collectionId"
[selfUrl]="selfUrl"
[submissionDefinition]="submissionDefinition"
[submissionId]="submissionId"></ds-submission-submit-form>`;
it('should not has effect when collectionId and submissionId are undefined', () => {
fixture.detectChanges();
expect(compAsAny.isActive).toBeTruthy();
expect(compAsAny.submissionSections).toBeUndefined();
comp.loading.subscribe((loading) => {
expect(loading).toBeTruthy();
testFixture = createTestComponent(html, TestComponent) as ComponentFixture<TestComponent>;
testComp = testFixture.componentInstance;
});
expect(compAsAny.subs).toEqual([]);
expect(submissionServiceStub.startAutoSave).not.toHaveBeenCalled();
});
it('should init properly when collectionId and submissionId are defined', () => {
comp.collectionId = collectionId;
comp.submissionId = submissionId;
comp.submissionDefinition = submissionDefinition;
comp.selfUrl = selfUrl;
comp.sections = sectionsData;
submissionServiceStub.getSubmissionObject.and.returnValue(observableOf(submissionState));
submissionServiceStub.getSubmissionSections.and.returnValue(observableOf(sectionsList));
spyOn(authServiceStub, 'buildAuthHeader').and.returnValue('token');
comp.ngOnChanges({
collectionId: new SimpleChange(null, collectionId, true),
submissionId: new SimpleChange(null, submissionId, true)
});
fixture.detectChanges();
comp.loading.subscribe((loading) => {
expect(loading).toBeFalsy();
afterEach(() => {
testFixture.destroy();
});
comp.submissionSections.subscribe((submissionSections) => {
expect(submissionSections).toEqual(sectionsList);
it('should create SubmissionFormComponent', inject([SubmissionFormComponent], (app: SubmissionFormComponent) => {
expect(app).toBeDefined();
}));
});
describe('', () => {
beforeEach(() => {
fixture = TestBed.createComponent(SubmissionFormComponent);
comp = fixture.componentInstance;
compAsAny = comp;
submissionServiceStub = TestBed.get(SubmissionService);
authServiceStub = TestBed.get(AuthService);
});
expect(submissionServiceStub.dispatchInit).toHaveBeenCalledWith(
collectionId,
submissionId,
selfUrl,
submissionDefinition,
sectionsData,
null);
expect(submissionServiceStub.startAutoSave).toHaveBeenCalled();
});
afterEach(() => {
comp = null;
compAsAny = null;
fixture = null;
});
it('should update properly on collection change', () => {
comp.collectionId = collectionId;
comp.submissionId = submissionId;
comp.submissionDefinition = submissionDefinition;
comp.selfUrl = selfUrl;
comp.sections = sectionsData;
it('should not has effect when collectionId and submissionId are undefined', () => {
comp.onCollectionChange(submissionObjectNew);
fixture.detectChanges();
fixture.detectChanges();
expect(compAsAny.isActive).toBeTruthy();
expect(compAsAny.submissionSections).toBeUndefined();
comp.loading.subscribe((loading) => {
expect(loading).toBeTruthy();
});
expect(comp.collectionId).toEqual(submissionObjectNew.collection.id);
expect(comp.submissionDefinition).toEqual(submissionObjectNew.submissionDefinition);
expect(comp.definitionId).toEqual(submissionObjectNew.submissionDefinition.name);
expect(comp.sections).toEqual(submissionObjectNew.sections);
expect(compAsAny.subs).toEqual([]);
expect(submissionServiceStub.startAutoSave).not.toHaveBeenCalled();
});
expect(submissionServiceStub.resetSubmissionObject).toHaveBeenCalledWith(
submissionObjectNew.collection.id,
submissionId,
selfUrl,
submissionObjectNew.submissionDefinition,
submissionObjectNew.sections);
});
it('should init properly when collectionId and submissionId are defined', () => {
comp.collectionId = collectionId;
comp.submissionId = submissionId;
comp.submissionDefinition = submissionDefinition;
comp.selfUrl = selfUrl;
comp.sections = sectionsData;
it('should update only collection id on collection change when submission definition is not changed', () => {
comp.collectionId = collectionId;
comp.submissionId = submissionId;
comp.definitionId = 'traditional';
comp.submissionDefinition = submissionDefinition;
comp.selfUrl = selfUrl;
comp.sections = sectionsData;
submissionServiceStub.getSubmissionObject.and.returnValue(observableOf(submissionState));
submissionServiceStub.getSubmissionSections.and.returnValue(observableOf(sectionsList));
spyOn(authServiceStub, 'buildAuthHeader').and.returnValue('token');
comp.onCollectionChange({
collection: {
id: '45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb'
},
submissionDefinition: {
name: 'traditional'
}
} as any);
comp.ngOnChanges({
collectionId: new SimpleChange(null, collectionId, true),
submissionId: new SimpleChange(null, submissionId, true)
});
fixture.detectChanges();
fixture.detectChanges();
comp.loading.subscribe((loading) => {
expect(loading).toBeFalsy();
});
comp.submissionSections.subscribe((submissionSections) => {
expect(submissionSections).toEqual(sectionsList);
});
expect(submissionServiceStub.dispatchInit).toHaveBeenCalledWith(
collectionId,
submissionId,
selfUrl,
submissionDefinition,
sectionsData,
null);
expect(submissionServiceStub.startAutoSave).toHaveBeenCalled();
});
it('should update properly on collection change', () => {
comp.collectionId = collectionId;
comp.submissionId = submissionId;
comp.submissionDefinition = submissionDefinition;
comp.selfUrl = selfUrl;
comp.sections = sectionsData;
comp.onCollectionChange(submissionObjectNew);
fixture.detectChanges();
expect(comp.collectionId).toEqual(submissionObjectNew.collection.id);
expect(comp.submissionDefinition).toEqual(submissionObjectNew.submissionDefinition);
expect(comp.definitionId).toEqual(submissionObjectNew.submissionDefinition.name);
expect(comp.sections).toEqual(submissionObjectNew.sections);
expect(submissionServiceStub.resetSubmissionObject).toHaveBeenCalledWith(
submissionObjectNew.collection.id,
submissionId,
selfUrl,
submissionObjectNew.submissionDefinition,
submissionObjectNew.sections);
});
it('should update only collection id on collection change when submission definition is not changed', () => {
comp.collectionId = collectionId;
comp.submissionId = submissionId;
comp.definitionId = 'traditional';
comp.submissionDefinition = submissionDefinition;
comp.selfUrl = selfUrl;
comp.sections = sectionsData;
comp.onCollectionChange({
collection: {
id: '45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb'
},
submissionDefinition: {
name: 'traditional'
}
} as any);
fixture.detectChanges();
expect(comp.collectionId).toEqual('45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb');
expect(submissionServiceStub.resetSubmissionObject).not.toHaveBeenCalled()
});
expect(comp.collectionId).toEqual('45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb');
expect(submissionServiceStub.resetSubmissionObject).not.toHaveBeenCalled()
});
});
// declare a test component
@Component({
selector: 'ds-test-cmp',
template: ``
})
class TestComponent {
collectionId = mockSubmissionCollectionId;
selfUrl = mockSubmissionSelfUrl;
submissionDefinition = mockSubmissionDefinition;
submissionId = mockSubmissionId;
}