diff --git a/api/src/organizational-entities/domain/models/OrganizationForAdmin.js b/api/src/organizational-entities/domain/models/OrganizationForAdmin.js index 73bb9e8aea6..6b5a2bd9db8 100644 --- a/api/src/organizational-entities/domain/models/OrganizationForAdmin.js +++ b/api/src/organizational-entities/domain/models/OrganizationForAdmin.js @@ -4,8 +4,12 @@ import { ORGANIZATION_FEATURE } from '../../../shared/domain/constants.js'; import { DataProtectionOfficer } from './DataProtectionOfficer.js'; const CREDIT_DEFAULT_VALUE = 0; +const PAD_TARGET_LENGTH = 3; +const PAD_STRING = '0'; class OrganizationForAdmin { + #provinceCode; + constructor({ id, name, @@ -89,6 +93,14 @@ class OrganizationForAdmin { this.code = code; } + get provinceCode() { + return this.#provinceCode; + } + + set provinceCode(provinceCode) { + this.#provinceCode = provinceCode ? provinceCode.padStart(PAD_TARGET_LENGTH, PAD_STRING) : ''; + } + get archivistFullName() { return this.archivistFirstName && this.archivistLastName ? `${this.archivistFirstName} ${this.archivistLastName}` @@ -131,10 +143,6 @@ class OrganizationForAdmin { this.parentOrganizationId = parentOrganizationId; } - updateProvinceCode(provinceCode) { - this.provinceCode = provinceCode; - } - updateIdentityProviderForCampaigns(identityProviderForCampaigns) { this.identityProviderForCampaigns = identityProviderForCampaigns; } @@ -155,7 +163,7 @@ class OrganizationForAdmin { this.email = organization.email; this.credit = organization.credit; this.externalId = organization.externalId; - this.updateProvinceCode(organization.provinceCode); + this.provinceCode = organization.provinceCode; this.documentationUrl = organization.documentationUrl; this.updateIsManagingStudents(organization.isManagingStudents, organization.features); this.showSkills = organization.showSkills; diff --git a/api/tests/organizational-entities/acceptance/application/organization/organization.admin.route.test.js b/api/tests/organizational-entities/acceptance/application/organization/organization.admin.route.test.js index a3b79528338..565269fb86f 100644 --- a/api/tests/organizational-entities/acceptance/application/organization/organization.admin.route.test.js +++ b/api/tests/organizational-entities/acceptance/application/organization/organization.admin.route.test.js @@ -85,7 +85,7 @@ describe('Acceptance | Organizational Entities | Application | Route | Admin | O 'external-id': organization.externalId, 'parent-organization-id': organization.parentOrganizationId, 'parent-organization-name': null, - 'province-code': organization.provinceCode, + 'province-code': '045', 'is-managing-students': organization.isManagingStudents, credit: organization.credit, email: organization.email, diff --git a/api/tests/organizational-entities/unit/domain/models/OrganizationForAdmin_test.js b/api/tests/organizational-entities/unit/domain/models/OrganizationForAdmin_test.js index 64381653271..446b5e2a078 100644 --- a/api/tests/organizational-entities/unit/domain/models/OrganizationForAdmin_test.js +++ b/api/tests/organizational-entities/unit/domain/models/OrganizationForAdmin_test.js @@ -658,7 +658,7 @@ describe('Unit | Organizational Entities | Domain | Model | OrganizationForAdmin }); }); - context('#updateProvinceCode', function () { + context('#provinceCode', function () { it('updates ProvinceCode', function () { // given const initialProvinceCode = '44200'; @@ -667,10 +667,27 @@ describe('Unit | Organizational Entities | Domain | Model | OrganizationForAdmin provinceCode: initialProvinceCode, }); // when - givenOrganization.updateProvinceCode(newProvinceCode); + givenOrganization.provinceCode = newProvinceCode; // then expect(givenOrganization.provinceCode).to.equal(newProvinceCode); }); + + context('when there is no 3 numbers', function () { + it('normalizes provinceCode by padding', function () { + // given + const initialProvinceCode = '6'; + const newProvinceCode = '44'; + const givenOrganization = new OrganizationForAdmin({ + provinceCode: initialProvinceCode, + }); + + // when + givenOrganization.provinceCode = newProvinceCode; + + // then + expect(givenOrganization.provinceCode).to.equal('044'); + }); + }); }); context('#updateIdentityProviderForCampaigns', function () { @@ -746,8 +763,8 @@ describe('Unit | Organizational Entities | Domain | Model | OrganizationForAdmin ); // then - const expectedOrganization = domainBuilder.buildOrganizationForAdmin({ provinceCode }); - expect(organizationToUpdate.provinceCode).to.equal(provinceCode); + const expectedOrganization = domainBuilder.buildOrganizationForAdmin({ provinceCode: `0${provinceCode}` }); + expect(organizationToUpdate.provinceCode).to.equal(`0${provinceCode}`); expect(organizationToUpdate).to.deep.equal(expectedOrganization); });