[CST-4947] Test WIP

This commit is contained in:
Davide Negretti
2021-11-19 19:58:07 +01:00
parent df957fc31b
commit 2579577225
2 changed files with 48 additions and 6 deletions

View File

@@ -3,7 +3,7 @@ import { ComponentFixture, fakeAsync, inject, TestBed, tick, waitForAsync } from
import { BrowserModule, By } from '@angular/platform-browser'; import { BrowserModule, By } from '@angular/platform-browser';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { of as observableOf } from 'rxjs'; import { of, of as observableOf } from 'rxjs';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { FormService } from '../../../../shared/form/form.service'; import { FormService } from '../../../../shared/form/form.service';
@@ -36,8 +36,20 @@ import { FormFieldMetadataValueObject } from '../../../../shared/form/builder/mo
import { SubmissionSectionUploadFileEditComponent } from './edit/section-upload-file-edit.component'; import { SubmissionSectionUploadFileEditComponent } from './edit/section-upload-file-edit.component';
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service'; import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
import { dateToISOFormat } from '../../../../shared/date.util'; import { dateToISOFormat } from '../../../../shared/date.util';
import { SubmissionFormModel } from '../../../../core/config/models/config-submission-form.model';
describe('SubmissionSectionUploadFileComponent test suite', () => { const configMetadataFormMock = {
rows: [{
fields: [{
selectableMetadata: [
{metadata: 'dc.title', label: null, closed: false},
{metadata: 'dc.description', label: null, closed: false}
]
}]
}]
};
fdescribe('SubmissionSectionUploadFileComponent test suite', () => {
let comp: SubmissionSectionUploadFileComponent; let comp: SubmissionSectionUploadFileComponent;
let compAsAny: any; let compAsAny: any;
@@ -117,6 +129,9 @@ describe('SubmissionSectionUploadFileComponent test suite', () => {
testFixture = createTestComponent(html, TestComponent) as ComponentFixture<TestComponent>; testFixture = createTestComponent(html, TestComponent) as ComponentFixture<TestComponent>;
testComp = testFixture.componentInstance; testComp = testFixture.componentInstance;
// testComp.configMetadataForm = configMetadataFormMock;
// testFixture.detectChanges();
}); });
afterEach(() => { afterEach(() => {
@@ -124,9 +139,8 @@ describe('SubmissionSectionUploadFileComponent test suite', () => {
}); });
it('should create SubmissionSectionUploadFileComponent', inject([SubmissionSectionUploadFileComponent], (app: SubmissionSectionUploadFileComponent) => { it('should create SubmissionSectionUploadFileComponent', inject([SubmissionSectionUploadFileComponent], (app: SubmissionSectionUploadFileComponent) => {
app.configMetadataForm = Object.assign(new SubmissionFormModel(), configMetadataFormMock);
expect(app).toBeDefined(); expect(app).toBeDefined();
})); }));
}); });
@@ -135,6 +149,7 @@ describe('SubmissionSectionUploadFileComponent test suite', () => {
fixture = TestBed.createComponent(SubmissionSectionUploadFileComponent); fixture = TestBed.createComponent(SubmissionSectionUploadFileComponent);
comp = fixture.componentInstance; comp = fixture.componentInstance;
compAsAny = comp; compAsAny = comp;
compAsAny.configMetadataForm = configMetadataFormMock;
submissionServiceStub = TestBed.inject(SubmissionService as any); submissionServiceStub = TestBed.inject(SubmissionService as any);
uploadService = TestBed.inject(SectionUploadService); uploadService = TestBed.inject(SectionUploadService);
formService = TestBed.inject(FormService); formService = TestBed.inject(FormService);
@@ -314,7 +329,7 @@ class TestComponent {
availableAccessConditionOptions; availableAccessConditionOptions;
collectionId = mockSubmissionCollectionId; collectionId = mockSubmissionCollectionId;
collectionPolicyType; collectionPolicyType;
configMetadataForm$; configMetadataForm$ = of(configMetadataFormMock);
fileIndexes = []; fileIndexes = [];
fileList = []; fileList = [];
fileNames = []; fileNames = [];

View File

@@ -6,7 +6,7 @@ import { DynamicFormControlModel, } from '@ng-dynamic-forms/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { SectionUploadService } from '../section-upload.service'; import { SectionUploadService } from '../section-upload.service';
import { isNotEmpty, isNotNull, isNotUndefined } from '../../../../shared/empty.util'; import { hasNoValue, isNotEmpty, isNotNull, isNotUndefined } from '../../../../shared/empty.util';
import { FormService } from '../../../../shared/form/form.service'; import { FormService } from '../../../../shared/form/form.service';
import { JsonPatchOperationsBuilder } from '../../../../core/json-patch/builder/json-patch-operations-builder'; import { JsonPatchOperationsBuilder } from '../../../../core/json-patch/builder/json-patch-operations-builder';
import { JsonPatchOperationPathCombiner } from '../../../../core/json-patch/builder/json-patch-operation-path-combiner'; import { JsonPatchOperationPathCombiner } from '../../../../core/json-patch/builder/json-patch-operation-path-combiner';
@@ -129,6 +129,12 @@ export class SubmissionSectionUploadFileComponent implements OnChanges, OnInit {
*/ */
protected subscriptions: Subscription[] = []; protected subscriptions: Subscription[] = [];
/**
* Array containing all the form metadata defined in configMetadataForm
* @type {Array}
*/
protected formMetadata: string[] = [];
/** /**
* The [[SubmissionSectionUploadFileEditComponent]] reference * The [[SubmissionSectionUploadFileEditComponent]] reference
* @type {SubmissionSectionUploadFileEditComponent} * @type {SubmissionSectionUploadFileEditComponent}
@@ -158,6 +164,17 @@ export class SubmissionSectionUploadFileComponent implements OnChanges, OnInit {
this.readMode = true; this.readMode = true;
} }
protected loadFormMetadata() {
this.configMetadataForm.rows.forEach((row) => {
row.fields.forEach((field) => {
field.selectableMetadata.forEach((metadatum) => {
this.formMetadata.push(metadatum.metadata);
});
});
}
);
}
/** /**
* Retrieve bitstream's metadata * Retrieve bitstream's metadata
*/ */
@@ -182,6 +199,7 @@ export class SubmissionSectionUploadFileComponent implements OnChanges, OnInit {
ngOnInit() { ngOnInit() {
this.formId = this.formService.getUniqueId(this.fileId); this.formId = this.formService.getUniqueId(this.fileId);
this.pathCombiner = new JsonPatchOperationPathCombiner('sections', this.sectionId, 'files', this.fileIndex); this.pathCombiner = new JsonPatchOperationPathCombiner('sections', this.sectionId, 'files', this.fileIndex);
this.loadFormMetadata();
} }
/** /**
@@ -250,6 +268,15 @@ export class SubmissionSectionUploadFileComponent implements OnChanges, OnInit {
const path = `metadata/${metadataKey}`; const path = `metadata/${metadataKey}`;
this.operationsBuilder.add(this.pathCombiner.getPath(path), formData.metadata[key], true); this.operationsBuilder.add(this.pathCombiner.getPath(path), formData.metadata[key], true);
}); });
Object.keys((this.fileData.metadata))
.filter((key) => isNotEmpty(this.fileData.metadata[key]))
.filter((key) => hasNoValue(formData.metadata[key]))
.filter((key) => this.formMetadata.includes(key))
.forEach((key) => {
const metadataKey = key.replace(/_/g, '.');
const path = `metadata/${metadataKey}`;
this.operationsBuilder.remove(this.pathCombiner.getPath(path));
});
const accessConditionsToSave = []; const accessConditionsToSave = [];
formData.accessConditions formData.accessConditions
.map((accessConditions) => accessConditions.accessConditionGroup) .map((accessConditions) => accessConditions.accessConditionGroup)