diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts index 249af7021abcd360680e7c7318c2123763089d20..b8af9713b50b1e25eb3daf7110697d220496ddef 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts @@ -1,7 +1,8 @@ -import { AdminOrganisationsEinheitResource } from '@admin-client/admin-settings'; -import { StateResource, createStateResource } from '@alfa-client/tech-shared'; +import { AdminOrganisationsEinheitResource, AdminOrganisationsEinheitSettings } from '@admin-client/admin-settings'; +import { EMPTY_STRING, StateResource, createStateResource } from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; import { FormBuilder } from '@angular/forms'; +import { faker } from '@faker-js/faker'; import { of } from 'rxjs'; import { createAdminOrganisationsEinheitResource } from '../../../../../test/organisations-einheit/organisations-einheit'; import { OrganisationsEinheitService } from '../../organisationseinheit.service'; @@ -23,6 +24,7 @@ describe('OrganisationsEinheitFormService', () => { describe('submit', () => { const organisationsEinheitResource: AdminOrganisationsEinheitResource = createAdminOrganisationsEinheitResource(); + const organisationsEinheitSettings: AdminOrganisationsEinheitSettings = { signatur: faker.lorem.word(2) }; beforeEach(() => { const stateResource: StateResource<AdminOrganisationsEinheitResource> = createStateResource(organisationsEinheitResource); @@ -31,12 +33,38 @@ describe('OrganisationsEinheitFormService', () => { service.form.setValue({ [OrganisationsEinheitFormService.ORGANISATIONSEINHEIT_SIGNATUR_FIELD]: organisationsEinheitResource.settings.signatur, }); + service.buildPatchedOrganisationsEinheitSettings = jest.fn().mockReturnValue(organisationsEinheitSettings); }); it('should call organisationsEinheitService patch', () => { service.submit(); - expect(organisationsEinheitService.patch).toHaveBeenCalledWith(organisationsEinheitResource.settings); + expect(organisationsEinheitService.patch).toHaveBeenCalledWith(organisationsEinheitSettings); + }); + + it('should build patched form value', () => { + service.submit(); + + expect(service.buildPatchedOrganisationsEinheitSettings).toHaveBeenCalled(); + }); + }); + + describe('buildPatchedOrganisationsEinheitSettings', () => { + it('should return empty string', () => { + service.form.controls[OrganisationsEinheitFormService.ORGANISATIONSEINHEIT_SIGNATUR_FIELD].setValue(null); + + const signatur: string = service.buildPatchedOrganisationsEinheitSettings().signatur; + + expect(signatur).toEqual(EMPTY_STRING); + }); + + it('should return signatur', () => { + const formValueSignatur: string = faker.lorem.word(2); + service.form.controls[OrganisationsEinheitFormService.ORGANISATIONSEINHEIT_SIGNATUR_FIELD].setValue(formValueSignatur); + + const signatur: string = service.buildPatchedOrganisationsEinheitSettings().signatur; + + expect(signatur).toEqual(formValueSignatur); }); }); }); diff --git a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.ts index 9cb9131e6259cf12b596db1438224396abd952ae..858a1081ef3384b03cba85524dbc002531434bc6 100644 --- a/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form/organisationseinheit.formservice.ts @@ -1,4 +1,4 @@ -import { AdminOrganisationsEinheitResource } from '@admin-client/admin-settings'; +import { AdminOrganisationsEinheitResource, AdminOrganisationsEinheitSettings } from '@admin-client/admin-settings'; import { AbstractFormService, EMPTY_STRING, StateResource } from '@alfa-client/tech-shared'; import { Injectable } from '@angular/core'; import { FormControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; @@ -23,7 +23,12 @@ export class OrganisationsEinheitFormService extends AbstractFormService { } protected doSubmit(): Observable<StateResource<AdminOrganisationsEinheitResource>> { - return this.organisationsEinheitService.patch(this.getFormValue()); + return this.organisationsEinheitService.patch(this.buildPatchedOrganisationsEinheitSettings()); + } + + buildPatchedOrganisationsEinheitSettings(): AdminOrganisationsEinheitSettings { + const signatur: string = this.getFormValue().signatur ? this.getFormValue().signatur : ''; + return { signatur }; } protected getPathPrefix(): string {