Skip to content

Commit 2d61d29

Browse files
feat(api): added feature in tests where an organization is created
1 parent 4794b3a commit 2d61d29

File tree

5 files changed

+55
-18
lines changed

5 files changed

+55
-18
lines changed

api/tests/acceptance/application/organizations/organization-controller_test.js

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ describe('Acceptance | Application | organization-controller', function () {
2424
beforeEach(async function () {
2525
server = await createServer();
2626
await insertUserWithRoleSuperAdmin();
27+
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
28+
await databaseBuilder.commit();
2729
});
2830

2931
describe('POST /api/admin/organizations', function () {

api/tests/integration/domain/usecases/create-organization_test.js

+3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import { OrganizationForAdmin } from '../../../../src/organizational-entities/do
44
import * as dataProtectionOfficerRepository from '../../../../src/organizational-entities/infrastructure/repositories/data-protection-officer.repository.js';
55
import { organizationForAdminRepository } from '../../../../src/organizational-entities/infrastructure/repositories/organization-for-admin.repository.js';
66
import * as schoolRepository from '../../../../src/school/infrastructure/repositories/school-repository.js';
7+
import { ORGANIZATION_FEATURE } from '../../../../src/shared/domain/constants.js';
78
import { databaseBuilder, expect } from '../../../test-helper.js';
89

910
describe('Integration | UseCases | create-organization', function () {
1011
it('returns newly created organization', async function () {
1112
// given
1213
const superAdminUserId = databaseBuilder.factory.buildUser().id;
14+
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
1315
await databaseBuilder.commit();
1416

1517
const organization = new OrganizationForAdmin({
@@ -37,5 +39,6 @@ describe('Integration | UseCases | create-organization', function () {
3739
expect(createdOrganization.dataProtectionOfficer.firstName).to.equal('');
3840
expect(createdOrganization.dataProtectionOfficer.lastName).to.equal('');
3941
expect(createdOrganization.dataProtectionOfficer.email).to.equal('');
42+
expect(createdOrganization.features[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key].active).to.be.true;
4043
});
4144
});

api/tests/integration/domain/usecases/create-organizations-with-tags-and-target-profiles_test.js

+16-3
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,18 @@ import { catchErr, databaseBuilder, expect, knex } from '../../../test-helper.js
2424
const { omit } = lodash;
2525

2626
describe('Integration | UseCases | create-organizations-with-tags-and-target-profiles', function () {
27-
let missionFeature, oralizationFeature, importStudentsFeature, ondeImportFormat, userId;
27+
let missionFeature,
28+
oralizationFeature,
29+
importStudentsFeature,
30+
multipleSendingAssessmentFeature,
31+
ondeImportFormat,
32+
userId;
2833

2934
beforeEach(async function () {
3035
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.COMPUTE_ORGANIZATION_LEARNER_CERTIFICABILITY);
36+
multipleSendingAssessmentFeature = databaseBuilder.factory.buildFeature(
37+
ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT,
38+
);
3139
missionFeature = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT);
3240
oralizationFeature = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.ORALIZATION_MANAGED_BY_PRESCRIBER);
3341
importStudentsFeature = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.LEARNER_IMPORT);
@@ -702,7 +710,7 @@ describe('Integration | UseCases | create-organizations-with-tags-and-target-pro
702710
});
703711

704712
describe('when organization type is SCO-1D', function () {
705-
it('should add mission management, oralization and ONDE import features to organization', async function () {
713+
it('should add mission management, oralization, ONDE import features and multiple sending assessment to organization', async function () {
706714
// given
707715
databaseBuilder.factory.buildTag({ name: 'TAG1' });
708716
await databaseBuilder.commit();
@@ -740,7 +748,7 @@ describe('Integration | UseCases | create-organizations-with-tags-and-target-pro
740748

741749
// then
742750
const savedOrganizationFeatures = await knex('organization-features');
743-
expect(savedOrganizationFeatures).to.have.lengthOf(3);
751+
expect(savedOrganizationFeatures).to.have.lengthOf(4);
744752
const organizationId = createdOrganizations[0].id;
745753
expect(
746754
savedOrganizationFeatures.map((organizationFeature) => omit(organizationFeature, 'id')),
@@ -760,6 +768,11 @@ describe('Integration | UseCases | create-organizations-with-tags-and-target-pro
760768
params: { organizationLearnerImportFormatId: ondeImportFormat.id },
761769
organizationId,
762770
},
771+
{
772+
featureId: multipleSendingAssessmentFeature.id,
773+
params: null,
774+
organizationId,
775+
},
763776
]);
764777
});
765778

api/tests/organizational-entities/acceptance/application/organization/organization.admin.route.test.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ describe('Acceptance | Organizational Entities | Application | Route | Admin | O
1919

2020
beforeEach(async function () {
2121
admin = await insertUserWithRoleSuperAdmin();
22+
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
2223
await databaseBuilder.commit();
2324

2425
server = await createServer();
@@ -65,7 +66,6 @@ describe('Acceptance | Organizational Entities | Application | Route | Admin | O
6566
});
6667
const tag = databaseBuilder.factory.buildTag({ id: 7, name: 'AEFE' });
6768
databaseBuilder.factory.buildOrganizationTag({ tagId: tag.id, organizationId: organization.id });
68-
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
6969
await databaseBuilder.commit();
7070

7171
// when
@@ -218,6 +218,7 @@ describe('Acceptance | Organizational Entities | Application | Route | Admin | O
218218
};
219219

220220
const organization = databaseBuilder.factory.buildOrganization({ ...organizationAttributes });
221+
221222
await databaseBuilder.commit();
222223

223224
const payload = {
@@ -326,6 +327,7 @@ describe('Acceptance | Organizational Entities | Application | Route | Admin | O
326327
let secondChildOrganization;
327328

328329
beforeEach(async function () {
330+
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.PLACES_MANAGEMENT).id;
329331
parentOrganizationId = databaseBuilder.factory.buildOrganization({
330332
name: 'Parent Organization',
331333
type: 'SCO',

api/tests/organizational-entities/integration/infrastructure/repositories/organization-for-admin.repository.test.js

+31-14
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ import { OrganizationInvitation } from '../../../../../src/team/domain/models/Or
88
import { catchErr, databaseBuilder, domainBuilder, expect, knex, sinon } from '../../../../test-helper.js';
99

1010
describe('Integration | Organizational Entities | Infrastructure | Repository | organization-for-admin', function () {
11-
let clock;
11+
let clock, isMultipleSendingFeature;
1212
const now = new Date('2022-02-02');
1313

1414
beforeEach(function () {
1515
clock = sinon.useFakeTimers({ now, toFake: ['Date'] });
16+
isMultipleSendingFeature = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
1617
});
1718

1819
afterEach(function () {
@@ -296,6 +297,11 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
296297
featureId,
297298
params: { organizationLearnerImportFormatId },
298299
});
300+
databaseBuilder.factory.buildOrganizationFeature({
301+
organizationId: organization.id,
302+
featureId: isMultipleSendingFeature.id,
303+
params: null,
304+
});
299305

300306
await databaseBuilder.commit();
301307

@@ -335,6 +341,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
335341
features: {
336342
[ORGANIZATION_FEATURE.COMPUTE_ORGANIZATION_LEARNER_CERTIFICABILITY.key]: { active: false },
337343
[ORGANIZATION_FEATURE.LEARNER_IMPORT.key]: { active: true, params: { name: 'BIDON' } },
344+
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: true, params: null },
338345
},
339346
parentOrganizationId: parentOrganization.id,
340347
parentOrganizationName: 'Mother Of Dark Side',
@@ -387,7 +394,11 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
387394
databaseBuilder.factory.buildOrganizationLearnerImportFormat({
388395
name: 'BIDON',
389396
}).id;
390-
397+
databaseBuilder.factory.buildOrganizationFeature({
398+
organizationId: organization.id,
399+
featureId: isMultipleSendingFeature.id,
400+
params: null,
401+
});
391402
await databaseBuilder.commit();
392403

393404
// when
@@ -425,6 +436,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
425436
identityProviderForCampaigns: 'genericOidcProviderCode',
426437
features: {
427438
[ORGANIZATION_FEATURE.LEARNER_IMPORT.key]: { active: false, params: null },
439+
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: true, params: null },
428440
},
429441
parentOrganizationId: null,
430442
parentOrganizationName: null,
@@ -485,7 +497,6 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
485497
archivedBy: archivist.id,
486498
archivedAt,
487499
});
488-
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
489500

490501
await databaseBuilder.commit();
491502

@@ -556,7 +567,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
556567
});
557568

558569
context('when the organization type is SCO-1D', function () {
559-
it('adds mission_management, oralization and learner_import features to the organization', async function () {
570+
it('adds mission_management, oralization, learner_import and multiple sending assessment features to the organization', async function () {
560571
const superAdminUserId = databaseBuilder.factory.buildUser().id;
561572
const missionManagementFeatureId = databaseBuilder.factory.buildFeature(
562573
ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT,
@@ -583,7 +594,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
583594
organizationId: savedOrganization.id,
584595
});
585596

586-
expect(savedOrganizationFeatures).to.have.lengthOf(3);
597+
expect(savedOrganizationFeatures).to.have.lengthOf(4);
587598
const savedOrganizationFeatureIds = savedOrganizationFeatures.map(
588599
(organizationFeature) => organizationFeature.featureId,
589600
);
@@ -628,7 +639,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
628639
createdBy: userId,
629640
});
630641

631-
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT).id;
642+
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.PLACES_MANAGEMENT).id;
632643
await databaseBuilder.commit();
633644

634645
// when
@@ -637,14 +648,14 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
637648
documentationUrl: 'https://pix.fr/',
638649
features: {
639650
[ORGANIZATION_FEATURE.LEARNER_IMPORT.key]: { active: false },
640-
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: true },
651+
[ORGANIZATION_FEATURE.PLACES_MANAGEMENT.key]: { active: true },
641652
},
642653
});
643654
await organizationForAdminRepository.update(organizationToUpdate);
644655

645656
// then
646657
const enabledFeatures = await knex('organization-features').where({ organizationId: organization.id });
647-
expect(enabledFeatures).to.have.lengthOf(1);
658+
expect(enabledFeatures).to.have.lengthOf(2);
648659
expect(enabledFeatures[0].featureId).to.equal(featureId);
649660
});
650661

@@ -656,7 +667,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
656667
createdBy: userId,
657668
});
658669

659-
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT).id;
670+
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.PLACES_MANAGEMENT).id;
660671
databaseBuilder.factory.buildOrganizationFeature({ organizationId: organization.id, featureId });
661672
await databaseBuilder.commit();
662673

@@ -665,15 +676,16 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
665676
id: organization.id,
666677
documentationUrl: 'https://pix.fr/',
667678
features: {
668-
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: true },
679+
[ORGANIZATION_FEATURE.PLACES_MANAGEMENT.key]: { active: true },
680+
[ORGANIZATION_FEATURE.PLACES_MANAGEMENT.key]: { active: true },
669681
},
670682
});
671683

672684
await organizationForAdminRepository.update(organizationToUpdate);
673685

674686
// then
675687
const enabledFeatures = await knex('organization-features').where({ organizationId: organization.id });
676-
expect(enabledFeatures).to.have.lengthOf(1);
688+
expect(enabledFeatures).to.have.lengthOf(2);
677689
expect(enabledFeatures[0].featureId).to.equal(featureId);
678690
});
679691

@@ -690,9 +702,14 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
690702
createdBy: userId,
691703
});
692704

693-
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT).id;
694-
databaseBuilder.factory.buildOrganizationFeature({ organizationId: organization.id, featureId });
695-
databaseBuilder.factory.buildOrganizationFeature({ organizationId: otherOrganization.id, featureId });
705+
databaseBuilder.factory.buildOrganizationFeature({
706+
organizationId: organization.id,
707+
featureId: isMultipleSendingFeature.id,
708+
});
709+
databaseBuilder.factory.buildOrganizationFeature({
710+
organizationId: otherOrganization.id,
711+
featureId: isMultipleSendingFeature.id,
712+
});
696713

697714
await databaseBuilder.commit();
698715

0 commit comments

Comments
 (0)