diff --git a/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.spec.ts b/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.spec.ts index 0ef70db01f0a4e2137ca97eb02833b95bc7605f9..ff9ec37d3a76e19d61a05c1486e4b0b73b8e2db0 100644 --- a/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.spec.ts +++ b/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.spec.ts @@ -1,7 +1,14 @@ import { BinaryFileResource, UploadFile } from '@alfa-client/binary-file-shared'; import { createEmptyStateResource, createErrorStateResource, createStateResource, StateResource } from '@alfa-client/tech-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroupDirective, ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; +import { + FormGroupDirective, + ReactiveFormsModule, + UntypedFormArray, + UntypedFormBuilder, + UntypedFormControl, +} from '@angular/forms'; +import { faker } from '@faker-js/faker'; import { expect } from '@jest/globals'; import { getUrl } from '@ngxp/rest'; import { MockComponent } from 'ng-mocks'; @@ -10,7 +17,7 @@ import { createBinaryFileResource, createUploadFile } from '../../../../../../bi import { createProblemDetail } from '../../../../../../tech-shared/test/error'; import { MultiFileUploadListOrientation } from '../multi-file-upload-list-container.component'; import { MultiFileUploadListItemComponent } from '../multi-file-upload-list-item/multi-file-upload-list-item.component'; -import { MultiFileUploadListComponent } from './multi-file-upload-list.component'; +import { _horizontalClasses, _verticalClasses, MultiFileUploadListComponent } from './multi-file-upload-list.component'; describe('MultiFileUploadListComponent', () => { let component: MultiFileUploadListComponent; @@ -132,7 +139,72 @@ describe('MultiFileUploadListComponent', () => { expect(component._fileUrls).toEqual([getUrl(binaryFileResource)]); }); - it('should update form', () => {}); + it('should update form', () => { + const binaryFileResource: BinaryFileResource = createBinaryFileResource(); + + component._addFileUrl(binaryFileResource); + + expect(component._updateForm).toHaveBeenCalledWith([getUrl(binaryFileResource)]); + }); + }); + + describe('_updateForm', () => { + beforeEach(() => { + component._fileLinkControls = new UntypedFormArray([new UntypedFormControl(faker.internet.url())]); + }); + + it('should clear file control list', () => { + const fileUrl: string = faker.internet.url(); + + component._updateForm([fileUrl]); + + expect(component._fileLinkControls.length).toEqual(1); + }); + it('should update file control list', () => { + const fileUrl: string = faker.internet.url(); + + component._updateForm([fileUrl]); + + expect(component._fileLinkControls.controls[0].value).toEqual(fileUrl); + }); + }); + + describe('_updateListOrientationClass', () => { + it('should set vertical', () => { + component._updateListOrientationClass(MultiFileUploadListOrientation.VERTICAL); + + expect(component.listOrientationClasses).toEqual(_verticalClasses); + }); + + it('should set horizontal', () => { + component._updateListOrientationClass(MultiFileUploadListOrientation.HORIZONTAL); + + expect(component.listOrientationClasses).toEqual(_horizontalClasses); + }); + }); + + describe('onDelete', () => { + const binaryFileResource: BinaryFileResource = createBinaryFileResource(); + const fileUrl1: string = faker.internet.url(); + const fileUrl2: string = getUrl(binaryFileResource); + const key: string = faker.word.noun(); + + beforeEach(() => { + component.delete.emit = jest.fn(); + component._fileUrls = [fileUrl1, fileUrl2]; + }); + + it('should update file urls', () => { + component.onDelete({ binaryFileResource, key }); + + expect(component._fileUrls).toEqual([fileUrl1]); + }); + + it('should emit', () => { + component.onDelete({ binaryFileResource, key }); + + expect(component.delete.emit).toHaveBeenCalledWith(key); + }); }); }); }); diff --git a/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.ts b/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.ts index 689d116c59a2481498cbb7bf088cc12a17662c7f..b8c37249f540e357b98a1bb8797772242e48d6c6 100644 --- a/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.ts +++ b/alfa-client/libs/design-component/src/lib/form/multi-file-upload-list-container/multi-file-upload-list/multi-file-upload-list.component.ts @@ -12,8 +12,8 @@ import { MultiFileUploadListItemComponent, } from '../multi-file-upload-list-item/multi-file-upload-list-item.component'; -const verticalClasses: string = 'flex flex-col'; -const horizontalClasses: string = 'flex flex-row flex-wrap'; +export const _verticalClasses: string = 'flex flex-col'; +export const _horizontalClasses: string = 'flex flex-row flex-wrap'; @Component({ selector: 'ods-multi-file-upload-list', @@ -70,13 +70,13 @@ export class MultiFileUploadListComponent implements OnInit { _updateListOrientationClass(listOrientation: MultiFileUploadListOrientation): void { switch (listOrientation) { case MultiFileUploadListOrientation.VERTICAL: - this.listOrientationClasses = verticalClasses; + this.listOrientationClasses = _verticalClasses; break; case MultiFileUploadListOrientation.HORIZONTAL: - this.listOrientationClasses = horizontalClasses; + this.listOrientationClasses = _horizontalClasses; break; default: - this.listOrientationClasses = horizontalClasses; + this.listOrientationClasses = _horizontalClasses; break; } }