Skip to content

Commit 8afe583

Browse files
feat(api): modified tests to take into account the fact that multiplesendingassessment is now a by default feature
1 parent dee8906 commit 8afe583

File tree

5 files changed

+83
-25
lines changed

5 files changed

+83
-25
lines changed

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

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
databaseBuilder,
1010
expect,
1111
generateAuthenticatedUserRequestHeaders,
12+
insertMultipleSendingFeatureForNewOrganization,
1213
insertUserWithRoleSuperAdmin,
1314
knex,
1415
sinon,
@@ -24,6 +25,7 @@ describe('Acceptance | Application | organization-controller', function () {
2425
beforeEach(async function () {
2526
server = await createServer();
2627
await insertUserWithRoleSuperAdmin();
28+
await insertMultipleSendingFeatureForNewOrganization();
2729
});
2830

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

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ 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 { databaseBuilder, expect } from '../../../test-helper.js';
7+
import { databaseBuilder, expect, insertMultipleSendingFeatureForNewOrganization } from '../../../test-helper.js';
88

99
describe('Integration | UseCases | create-organization', function () {
1010
it('returns newly created organization', async function () {
1111
// given
1212
const superAdminUserId = databaseBuilder.factory.buildUser().id;
13+
await insertMultipleSendingFeatureForNewOrganization();
1314
await databaseBuilder.commit();
1415

1516
const organization = new OrganizationForAdmin({

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

+10-3
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,18 @@ import { Membership } from '../../../../src/shared/domain/models/Membership.js';
1919
import * as organizationRepository from '../../../../src/shared/infrastructure/repositories/organization-repository.js';
2020
import { organizationInvitationService } from '../../../../src/team/domain/services/organization-invitation.service.js';
2121
import { organizationInvitationRepository } from '../../../../src/team/infrastructure/repositories/organization-invitation.repository.js';
22-
import { catchErr, databaseBuilder, expect, knex } from '../../../test-helper.js';
22+
import {
23+
catchErr,
24+
databaseBuilder,
25+
expect,
26+
insertMultipleSendingFeatureForNewOrganization,
27+
knex,
28+
} from '../../../test-helper.js';
2329

2430
const { omit } = lodash;
2531

2632
describe('Integration | UseCases | create-organizations-with-tags-and-target-profiles', function () {
27-
let missionFeature, oralizationFeature, importStudentsFeature, ondeImportFormat, userId;
33+
let missionFeature, oralizationFeature, importStudentsFeature, ondeImportFormat, userId, byDefaultFeatureId;
2834

2935
beforeEach(async function () {
3036
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.COMPUTE_ORGANIZATION_LEARNER_CERTIFICABILITY);
@@ -34,6 +40,7 @@ describe('Integration | UseCases | create-organizations-with-tags-and-target-pro
3440
ondeImportFormat = databaseBuilder.factory.buildOrganizationLearnerImportFormat({
3541
name: ORGANIZATION_FEATURE.LEARNER_IMPORT.FORMAT.ONDE,
3642
});
43+
byDefaultFeatureId = await insertMultipleSendingFeatureForNewOrganization();
3744

3845
userId = databaseBuilder.factory.buildUser().id;
3946
await databaseBuilder.commit();
@@ -739,7 +746,7 @@ describe('Integration | UseCases | create-organizations-with-tags-and-target-pro
739746
});
740747

741748
// then
742-
const savedOrganizationFeatures = await knex('organization-features');
749+
const savedOrganizationFeatures = await knex('organization-features').whereNot({ featureId: byDefaultFeatureId });
743750
expect(savedOrganizationFeatures).to.have.lengthOf(3);
744751
const organizationId = createdOrganizations[0].id;
745752
expect(

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
databaseBuilder,
88
expect,
99
generateAuthenticatedUserRequestHeaders,
10+
insertMultipleSendingFeatureForNewOrganization,
1011
insertUserWithRoleSuperAdmin,
1112
knex,
1213
} from '../../../../test-helper.js';
@@ -19,6 +20,7 @@ describe('Acceptance | Organizational Entities | Application | Route | Admin | O
1920

2021
beforeEach(async function () {
2122
admin = await insertUserWithRoleSuperAdmin();
23+
await insertMultipleSendingFeatureForNewOrganization();
2224
await databaseBuilder.commit();
2325

2426
server = await createServer();
@@ -65,7 +67,6 @@ describe('Acceptance | Organizational Entities | Application | Route | Admin | O
6567
});
6668
const tag = databaseBuilder.factory.buildTag({ id: 7, name: 'AEFE' });
6769
databaseBuilder.factory.buildOrganizationTag({ tagId: tag.id, organizationId: organization.id });
68-
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
6970
await databaseBuilder.commit();
7071

7172
// when

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

+67-20
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,23 @@ import { organizationForAdminRepository } from '../../../../../src/organizationa
55
import { ORGANIZATION_FEATURE } from '../../../../../src/shared/domain/constants.js';
66
import { MissingAttributesError, NotFoundError } from '../../../../../src/shared/domain/errors.js';
77
import { OrganizationInvitation } from '../../../../../src/team/domain/models/OrganizationInvitation.js';
8-
import { catchErr, databaseBuilder, domainBuilder, expect, knex, sinon } from '../../../../test-helper.js';
8+
import {
9+
catchErr,
10+
databaseBuilder,
11+
domainBuilder,
12+
expect,
13+
insertMultipleSendingFeatureForNewOrganization,
14+
knex,
15+
sinon,
16+
} from '../../../../test-helper.js';
917

1018
describe('Integration | Organizational Entities | Infrastructure | Repository | organization-for-admin', function () {
11-
let clock;
19+
let clock, byDefaultFeatureId;
1220
const now = new Date('2022-02-02');
1321

14-
beforeEach(function () {
22+
beforeEach(async function () {
1523
clock = sinon.useFakeTimers({ now, toFake: ['Date'] });
24+
await databaseBuilder.commit();
1625
});
1726

1827
afterEach(function () {
@@ -424,6 +433,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
424433
creatorLastName: 'Encieux',
425434
identityProviderForCampaigns: 'genericOidcProviderCode',
426435
features: {
436+
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: true, params: null },
427437
[ORGANIZATION_FEATURE.LEARNER_IMPORT.key]: { active: false, params: null },
428438
},
429439
parentOrganizationId: null,
@@ -485,7 +495,6 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
485495
archivedBy: archivist.id,
486496
archivedAt,
487497
});
488-
databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT);
489498

490499
await databaseBuilder.commit();
491500

@@ -522,9 +531,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
522531
creatorFirstName: superAdminUser.firstName,
523532
creatorLastName: superAdminUser.lastName,
524533
identityProviderForCampaigns: null,
525-
features: {
526-
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: false, params: null },
527-
},
534+
features: {},
528535
parentOrganizationId: null,
529536
parentOrganizationName: null,
530537
});
@@ -537,6 +544,8 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
537544
it('saves the given organization', async function () {
538545
// given
539546
const superAdminUserId = databaseBuilder.factory.buildUser.withRole().id;
547+
await insertMultipleSendingFeatureForNewOrganization();
548+
540549
await databaseBuilder.commit();
541550

542551
const organization = new OrganizationForAdmin({
@@ -568,6 +577,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
568577
const organizationLearnerImportOndeFormat = databaseBuilder.factory.buildOrganizationLearnerImportFormat({
569578
name: 'ONDE',
570579
});
580+
byDefaultFeatureId = await insertMultipleSendingFeatureForNewOrganization();
571581

572582
await databaseBuilder.commit();
573583

@@ -579,9 +589,11 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
579589

580590
const savedOrganization = await organizationForAdminRepository.save(organization);
581591

582-
const savedOrganizationFeatures = await knex('organization-features').where({
583-
organizationId: savedOrganization.id,
584-
});
592+
const savedOrganizationFeatures = await knex('organization-features')
593+
.where({
594+
organizationId: savedOrganization.id,
595+
})
596+
.whereNot({ featureId: byDefaultFeatureId });
585597

586598
expect(savedOrganizationFeatures).to.have.lengthOf(3);
587599
const savedOrganizationFeatureIds = savedOrganizationFeatures.map(
@@ -603,6 +615,10 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
603615
});
604616

605617
describe('#update', function () {
618+
beforeEach(async function () {
619+
byDefaultFeatureId = await insertMultipleSendingFeatureForNewOrganization();
620+
});
621+
606622
it('updates organization detail', async function () {
607623
// given
608624
const parentOrganizationId = databaseBuilder.factory.buildOrganization({ name: 'Parent Organization' }).id;
@@ -627,8 +643,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
627643
name: 'super orga',
628644
createdBy: userId,
629645
});
630-
631-
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT).id;
646+
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT).id;
632647
await databaseBuilder.commit();
633648

634649
// when
@@ -637,13 +652,15 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
637652
documentationUrl: 'https://pix.fr/',
638653
features: {
639654
[ORGANIZATION_FEATURE.LEARNER_IMPORT.key]: { active: false },
640-
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: true },
655+
[ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT.key]: { active: true },
641656
},
642657
});
643658
await organizationForAdminRepository.update(organizationToUpdate);
644659

645660
// then
646-
const enabledFeatures = await knex('organization-features').where({ organizationId: organization.id });
661+
const enabledFeatures = await knex('organization-features')
662+
.where({ organizationId: organization.id, featureId })
663+
.whereNot({ featureId: byDefaultFeatureId });
647664
expect(enabledFeatures).to.have.lengthOf(1);
648665
expect(enabledFeatures[0].featureId).to.equal(featureId);
649666
});
@@ -656,7 +673,8 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
656673
createdBy: userId,
657674
});
658675

659-
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT).id;
676+
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT).id;
677+
660678
databaseBuilder.factory.buildOrganizationFeature({ organizationId: organization.id, featureId });
661679
await databaseBuilder.commit();
662680

@@ -665,14 +683,16 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
665683
id: organization.id,
666684
documentationUrl: 'https://pix.fr/',
667685
features: {
668-
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: true },
686+
[ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT.key]: { active: true },
669687
},
670688
});
671689

672690
await organizationForAdminRepository.update(organizationToUpdate);
673691

674692
// then
675-
const enabledFeatures = await knex('organization-features').where({ organizationId: organization.id });
693+
const enabledFeatures = await knex('organization-features')
694+
.where({ organizationId: organization.id })
695+
.whereNot({ featureId: byDefaultFeatureId });
676696
expect(enabledFeatures).to.have.lengthOf(1);
677697
expect(enabledFeatures[0].featureId).to.equal(featureId);
678698
});
@@ -690,7 +710,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
690710
createdBy: userId,
691711
});
692712

693-
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT).id;
713+
const featureId = databaseBuilder.factory.buildFeature(ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT).id;
694714
databaseBuilder.factory.buildOrganizationFeature({ organizationId: organization.id, featureId });
695715
databaseBuilder.factory.buildOrganizationFeature({ organizationId: otherOrganization.id, featureId });
696716

@@ -701,17 +721,42 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
701721
id: organization.id,
702722
documentationUrl: 'https://pix.fr/',
703723
features: {
704-
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: false },
724+
[ORGANIZATION_FEATURE.MISSIONS_MANAGEMENT.key]: { active: false },
705725
},
706726
});
707727
await organizationForAdminRepository.update(organizationToUpdate);
708728

709729
//then
710-
const enabledFeatures = await knex('organization-features');
730+
const enabledFeatures = await knex('organization-features').whereNot({ featureId: byDefaultFeatureId });
711731
expect(enabledFeatures).to.have.lengthOf(1);
712732
expect(enabledFeatures[0].organizationId).to.equal(otherOrganization.id);
713733
});
714734

735+
it('should disable the "by default" feature for a given organization', async function () {
736+
// given
737+
const userId = databaseBuilder.factory.buildUser({ firstName: 'Anne', lastName: 'Héantie' }).id;
738+
const organization = databaseBuilder.factory.buildOrganization({
739+
name: 'super orga',
740+
createdBy: userId,
741+
});
742+
743+
await databaseBuilder.commit();
744+
745+
// when
746+
const organizationToUpdate = new OrganizationForAdmin({
747+
id: organization.id,
748+
documentationUrl: 'https://pix.fr/',
749+
features: {
750+
[ORGANIZATION_FEATURE.MULTIPLE_SENDING_ASSESSMENT.key]: { active: false },
751+
},
752+
});
753+
await organizationForAdminRepository.update(organizationToUpdate);
754+
755+
//then
756+
const enabledFeatures = await knex('organization-features');
757+
expect(enabledFeatures).to.have.lengthOf(0);
758+
});
759+
715760
it('should create data protection officer', async function () {
716761
// given
717762
const userId = databaseBuilder.factory.buildUser({ firstName: 'Spider', lastName: 'Man' }).id;
@@ -750,6 +795,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
750795
name: 'super orga',
751796
createdBy: userId,
752797
});
798+
753799
databaseBuilder.factory.buildDataProtectionOfficer.withOrganizationId({
754800
organizationId: organization.id,
755801
firstName: 'Tony',
@@ -785,6 +831,7 @@ describe('Integration | Organizational Entities | Infrastructure | Repository |
785831
const organizationId = databaseBuilder.factory.buildOrganization().id;
786832
const tagId = databaseBuilder.factory.buildTag({ name: 'myTag' }).id;
787833
const otherTagId = databaseBuilder.factory.buildTag({ name: 'myOtherTag' }).id;
834+
788835
await databaseBuilder.commit();
789836
const tagsToAdd = [
790837
{ tagId, organizationId },

0 commit comments

Comments
 (0)