mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 21:43:04 +00:00
[CST-4878] Finished working on embargo add part of form and unit testing
This commit is contained in:
@@ -1,25 +1,144 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { FormService } from './../../../shared/form/form.service';
|
||||
import { ComponentFixture, TestBed, inject } from '@angular/core/testing';
|
||||
|
||||
import { SubmissionSectionAccessesComponent } from './section-accesses.component';
|
||||
import { SectionsService } from 'src/app/submission/sections/sections.service';
|
||||
import { SectionsServiceStub } from 'src/app/shared/testing/sections-service.stub';
|
||||
|
||||
import { FormBuilderService } from 'src/app/shared/form/builder/form-builder.service';
|
||||
import { getMockFormBuilderService } from 'src/app/shared/mocks/form-builder-service.mock';
|
||||
import { SubmissionAccessesConfigService } from 'src/app/core/config/submission-accesses-config.service';
|
||||
import { getSubmissionAccessesConfigService } from 'src/app/shared/mocks/section-accesses-config.service.mock';
|
||||
import { SectionAccessesService } from 'src/app/submission/sections/accesses/section-accesses.service';
|
||||
import { SectionFormOperationsService } from 'src/app/submission/sections/form/section-form-operations.service';
|
||||
import { JsonPatchOperationsBuilder } from 'src/app/core/json-patch/builder/json-patch-operations-builder';
|
||||
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
||||
import { SubmissionJsonPatchOperationsService } from 'src/app/core/submission/submission-json-patch-operations.service';
|
||||
import { getSectionAccessesService } from 'src/app/shared/mocks/section-accesses.service.mock';
|
||||
import { getMockFormOperationsService } from 'src/app/shared/mocks/form-operations-service.mock';
|
||||
import { getMockTranslateService } from 'src/app/shared/mocks/translate.service.mock';
|
||||
import { SubmissionJsonPatchOperationsServiceStub } from 'src/app/shared/testing/submission-json-patch-operations-service.stub';
|
||||
import { BrowserModule, By } from '@angular/platform-browser';
|
||||
|
||||
import { Observable, of as observableOf, observable } from 'rxjs';
|
||||
import { select, Store } from '@ngrx/store';
|
||||
import { FormComponent } from 'src/app/shared/form/form.component';
|
||||
import { DynamicFormControlModel, DynamicCheckboxModel, DynamicFormArrayGroupModel, DynamicSelectModel, DynamicDatePickerModel, DynamicFormArrayModel } from '@ng-dynamic-forms/core';
|
||||
import { AppState } from 'src/app/app.reducer';
|
||||
import { getMockFormService } from 'src/app/shared/mocks/form-service.mock';
|
||||
import { mockAccessesFormData } from 'src/app/shared/mocks/submission.mock';
|
||||
import { accessConditionChangeEvent, checkboxChangeEvent } from 'src/app/shared/testing/form-event.stub';
|
||||
|
||||
describe('SubmissionSectionAccessesComponent', () => {
|
||||
let component: SubmissionSectionAccessesComponent;
|
||||
let fixture: ComponentFixture<SubmissionSectionAccessesComponent>;
|
||||
|
||||
const sectionsServiceStub = new SectionsServiceStub();
|
||||
// const pathCombiner = new JsonPatchOperationPathCombiner('sections', sectionId, 'files', fileIndex);
|
||||
|
||||
const builderService: FormBuilderService = getMockFormBuilderService();
|
||||
const submissionAccessesConfigService = getSubmissionAccessesConfigService();
|
||||
const sectionAccessesService = getSectionAccessesService();
|
||||
const sectionFormOperationsService = getMockFormOperationsService();
|
||||
const operationsBuilder = jasmine.createSpyObj('operationsBuilder', {
|
||||
add: undefined,
|
||||
remove: undefined,
|
||||
replace: undefined,
|
||||
});
|
||||
|
||||
let formService: any;
|
||||
|
||||
const storeStub = jasmine.createSpyObj('store', ['dispatch']);
|
||||
|
||||
const sectionData = {
|
||||
header: 'submit.progressbar.accessCondition',
|
||||
config: 'http://localhost:8080/server/api/config/submissionaccessoptions/AccessConditionDefaultConfiguration',
|
||||
mandatory: true,
|
||||
sectionType: 'accessCondition',
|
||||
collapsed: false,
|
||||
enabled: true,
|
||||
data: {
|
||||
discoverable: true,
|
||||
accessConditions: []
|
||||
},
|
||||
errorsToShow: [],
|
||||
serverValidationErrors: [],
|
||||
isLoading: false,
|
||||
isValid: true
|
||||
};
|
||||
|
||||
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [SubmissionSectionAccessesComponent]
|
||||
imports: [
|
||||
BrowserModule,
|
||||
TranslateModule.forRoot()
|
||||
],
|
||||
declarations: [SubmissionSectionAccessesComponent, FormComponent],
|
||||
providers: [
|
||||
{ provide: SectionsService, useValue: sectionsServiceStub },
|
||||
{ provide: FormBuilderService, useValue: builderService },
|
||||
{ provide: SubmissionAccessesConfigService, useValue: submissionAccessesConfigService },
|
||||
{ provide: SectionAccessesService, useValue: sectionAccessesService },
|
||||
{ provide: SectionFormOperationsService, useValue: sectionFormOperationsService },
|
||||
{ provide: JsonPatchOperationsBuilder, useValue: operationsBuilder },
|
||||
{ provide: TranslateService, useValue: getMockTranslateService() },
|
||||
{ provide: FormService, useValue: getMockFormService() },
|
||||
{ provide: Store, useValue: storeStub },
|
||||
{ provide: SubmissionJsonPatchOperationsService, useValue: SubmissionJsonPatchOperationsServiceStub },
|
||||
{ provide: 'sectionDataProvider', useValue: sectionData },
|
||||
{ provide: 'submissionIdProvider', useValue: '1508' },
|
||||
]
|
||||
})
|
||||
.compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
beforeEach(inject([Store], (store: Store<AppState>) => {
|
||||
fixture = TestBed.createComponent(SubmissionSectionAccessesComponent);
|
||||
component = fixture.componentInstance;
|
||||
formService = TestBed.inject(FormService);
|
||||
formService.validateAllFormFields.and.callFake(() => null);
|
||||
formService.isValid.and.returnValue(observableOf(true));
|
||||
formService.getFormData.and.returnValue(observableOf(mockAccessesFormData));
|
||||
fixture.detectChanges();
|
||||
});
|
||||
}));
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should have created formModel', () => {
|
||||
expect(component.formModel).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should have formModel length should be 2', () => {
|
||||
expect(component.formModel.length).toEqual(2);
|
||||
});
|
||||
|
||||
it('formModel should have 1 model type checkbox and 1 model type array', () => {
|
||||
expect(component.formModel[0] instanceof DynamicCheckboxModel).toBeTrue();
|
||||
expect(component.formModel[1] instanceof DynamicFormArrayModel).toBeTrue();
|
||||
});
|
||||
|
||||
it('formModel type array should have formgroup with 1 input and 2 datepickers', () => {
|
||||
const formModel: any = component.formModel[1];
|
||||
const formGroup = formModel.groupFactory()[0].group;
|
||||
expect(formGroup[0] instanceof DynamicSelectModel).toBeTrue();
|
||||
expect(formGroup[1] instanceof DynamicDatePickerModel).toBeTrue();
|
||||
expect(formGroup[2] instanceof DynamicDatePickerModel).toBeTrue();
|
||||
});
|
||||
|
||||
it('when checkbox changed it should call operationsBuilder replace function', () => {
|
||||
component.onChange(checkboxChangeEvent);
|
||||
fixture.detectChanges();
|
||||
|
||||
expect(operationsBuilder.replace).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('when dropdown select changed it should call operationsBuilder add function', () => {
|
||||
component.onChange(accessConditionChangeEvent);
|
||||
fixture.detectChanges();
|
||||
expect(operationsBuilder.add).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user