diff --git a/admin/app/components/organizations/information-section-edit.gjs b/admin/app/components/organizations/information-section-edit.gjs
new file mode 100644
index 00000000000..0449e1ffc5b
--- /dev/null
+++ b/admin/app/components/organizations/information-section-edit.gjs
@@ -0,0 +1,263 @@
+import PixButton from '@1024pix/pix-ui/components/pix-button';
+import PixCheckbox from '@1024pix/pix-ui/components/pix-checkbox';
+import PixInput from '@1024pix/pix-ui/components/pix-input';
+import PixSelect from '@1024pix/pix-ui/components/pix-select';
+import { fn } from '@ember/helper';
+import { on } from '@ember/modifier';
+import { action } from '@ember/object';
+import { service } from '@ember/service';
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+
+export default class OrganizationInformationSectionEditionMode extends Component {
+ @service accessControl;
+ @service store;
+ @service oidcIdentityProviders;
+
+ @tracked isEditMode = false;
+ @tracked showArchivingConfirmationModal = false;
+
+ noIdentityProviderOption = { label: 'Aucun', value: 'None' };
+ garIdentityProviderOption = { label: 'GAR', value: 'GAR' };
+
+ constructor() {
+ super(...arguments);
+ this.form = this.store.createRecord('organization-form');
+ this._initForm();
+ }
+
+ get isManagingStudentAvailable() {
+ return (
+ !this.args.organization.isLearnerImportEnabled &&
+ (this.args.organization.isOrganizationSCO || this.args.organization.isOrganizationSUP)
+ );
+ }
+
+ get identityProviderOptions() {
+ const oidcIdentityProvidersOptions = this.oidcIdentityProviders.list.map((identityProvider) => ({
+ value: identityProvider.code,
+ label: identityProvider.organizationName,
+ }));
+ return [this.noIdentityProviderOption, this.garIdentityProviderOption, ...oidcIdentityProvidersOptions];
+ }
+
+ @action
+ onChangeIdentityProvider(newIdentityProvider) {
+ this.form.identityProviderForCampaigns = newIdentityProvider;
+ }
+
+ @action
+ closeAndResetForm() {
+ this.args.toggleEditMode();
+ this._initForm();
+ }
+
+ @action
+ updateFormCheckBoxValue(key) {
+ this.form[key] = !this.form[key];
+ }
+
+ @action
+ updateFormValue(key, event) {
+ this.form[key] = event.target.value;
+ }
+
+ @action
+ async updateOrganization(event) {
+ event.preventDefault();
+
+ const { validations } = await this.form.validate();
+ if (!validations.isValid) {
+ return;
+ }
+
+ if (this.form.identityProviderForCampaigns === 'None') {
+ this.form.identityProviderForCampaigns = null;
+ }
+
+ this.args.organization.set('name', this.form.name);
+ this.args.organization.set('externalId', this.form.externalId);
+ this.args.organization.set('provinceCode', this.form.provinceCode);
+ this.args.organization.set('dataProtectionOfficerFirstName', this.form.dataProtectionOfficerFirstName);
+ this.args.organization.set('dataProtectionOfficerLastName', this.form.dataProtectionOfficerLastName);
+ this.args.organization.set('dataProtectionOfficerEmail', this.form.dataProtectionOfficerEmail);
+ this.args.organization.set('email', this.form.email);
+ this.args.organization.set('credit', this.form.credit);
+ this.args.organization.set('isManagingStudents', this.form.isManagingStudents);
+ this.args.organization.set('documentationUrl', this.form.documentationUrl);
+ this.args.organization.set('showSkills', this.form.showSkills);
+ this.args.organization.set('identityProviderForCampaigns', this.form.identityProviderForCampaigns);
+ this.args.organization.set('isMultipleSendingAssessmentEnabled', this.form.isMultipleSendingAssessmentEnabled);
+ this.args.organization.set('isPlacesManagementEnabled', this.form.isPlacesManagementEnabled);
+
+ this.closeAndResetForm();
+ return this.args.onSubmit();
+ }
+
+ _initForm() {
+ this.form.name = this.args.organization.name;
+ this.form.externalId = this.args.organization.externalId;
+ this.form.provinceCode = this.args.organization.provinceCode;
+ this.form.dataProtectionOfficerFirstName = this.args.organization.dataProtectionOfficerFirstName;
+ this.form.dataProtectionOfficerLastName = this.args.organization.dataProtectionOfficerLastName;
+ this.form.dataProtectionOfficerEmail = this.args.organization.dataProtectionOfficerEmail;
+ this.form.email = this.args.organization.email;
+ this.form.credit = this.args.organization.credit;
+ this.form.isManagingStudents = this.args.organization.isManagingStudents;
+ this.form.documentationUrl = this.args.organization.documentationUrl;
+ this.form.showSkills = this.args.organization.showSkills;
+ this.form.isMultipleSendingAssessmentEnabled = this.args.organization.isMultipleSendingAssessmentEnabled;
+ this.form.isPlacesManagementEnabled = this.args.organization.isPlacesManagementEnabled;
+ this.form.identityProviderForCampaigns =
+ this.args.organization.identityProviderForCampaigns ?? this.noIdentityProviderOption.value;
+ }
+
+
+
+
+}
diff --git a/admin/app/components/organizations/information-section-edit.hbs b/admin/app/components/organizations/information-section-edit.hbs
deleted file mode 100644
index e9ef1fda3c2..00000000000
--- a/admin/app/components/organizations/information-section-edit.hbs
+++ /dev/null
@@ -1,146 +0,0 @@
-
\ No newline at end of file
diff --git a/admin/app/components/organizations/information-section-edit.js b/admin/app/components/organizations/information-section-edit.js
deleted file mode 100644
index 01ac31a35b4..00000000000
--- a/admin/app/components/organizations/information-section-edit.js
+++ /dev/null
@@ -1,100 +0,0 @@
-import { action } from '@ember/object';
-import { service } from '@ember/service';
-import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
-
-export default class OrganizationInformationSectionEditionMode extends Component {
- @service accessControl;
- @service store;
- @service oidcIdentityProviders;
-
- @tracked isEditMode = false;
- @tracked showArchivingConfirmationModal = false;
- noIdentityProviderOption = { label: 'Aucun', value: 'None' };
- garIdentityProviderOption = { label: 'GAR', value: 'GAR' };
-
- constructor() {
- super(...arguments);
- this.form = this.store.createRecord('organization-form');
- this._initForm();
- }
-
- get identityProviderOptions() {
- const oidcIdentityProvidersOptions = this.oidcIdentityProviders.list.map((identityProvider) => ({
- value: identityProvider.code,
- label: identityProvider.organizationName,
- }));
- return [this.noIdentityProviderOption, this.garIdentityProviderOption, ...oidcIdentityProvidersOptions];
- }
-
- @action
- onChangeIdentityProvider(newIdentityProvider) {
- this.form.identityProviderForCampaigns = newIdentityProvider;
- }
-
- @action
- closeAndResetForm() {
- this.args.toggleEditMode();
- this._initForm();
- }
-
- @action
- updateFormCheckBoxValue(key) {
- this.form[key] = !this.form[key];
- }
-
- @action
- updateFormValue(key, event) {
- this.form[key] = event.target.value;
- }
-
- @action
- async updateOrganization(event) {
- event.preventDefault();
-
- const { validations } = await this.form.validate();
- if (!validations.isValid) {
- return;
- }
-
- if (this.form.identityProviderForCampaigns === 'None') {
- this.form.identityProviderForCampaigns = null;
- }
-
- this.args.organization.set('name', this.form.name);
- this.args.organization.set('externalId', this.form.externalId);
- this.args.organization.set('provinceCode', this.form.provinceCode);
- this.args.organization.set('dataProtectionOfficerFirstName', this.form.dataProtectionOfficerFirstName);
- this.args.organization.set('dataProtectionOfficerLastName', this.form.dataProtectionOfficerLastName);
- this.args.organization.set('dataProtectionOfficerEmail', this.form.dataProtectionOfficerEmail);
- this.args.organization.set('email', this.form.email);
- this.args.organization.set('credit', this.form.credit);
- this.args.organization.set('isManagingStudents', this.form.isManagingStudents);
- this.args.organization.set('documentationUrl', this.form.documentationUrl);
- this.args.organization.set('showSkills', this.form.showSkills);
- this.args.organization.set('identityProviderForCampaigns', this.form.identityProviderForCampaigns);
- this.args.organization.set('isMultipleSendingAssessmentEnabled', this.form.isMultipleSendingAssessmentEnabled);
- this.args.organization.set('isPlacesManagementEnabled', this.form.isPlacesManagementEnabled);
-
- this.closeAndResetForm();
- return this.args.onSubmit();
- }
-
- _initForm() {
- this.form.name = this.args.organization.name;
- this.form.externalId = this.args.organization.externalId;
- this.form.provinceCode = this.args.organization.provinceCode;
- this.form.dataProtectionOfficerFirstName = this.args.organization.dataProtectionOfficerFirstName;
- this.form.dataProtectionOfficerLastName = this.args.organization.dataProtectionOfficerLastName;
- this.form.dataProtectionOfficerEmail = this.args.organization.dataProtectionOfficerEmail;
- this.form.email = this.args.organization.email;
- this.form.credit = this.args.organization.credit;
- this.form.isManagingStudents = this.args.organization.isManagingStudents;
- this.form.documentationUrl = this.args.organization.documentationUrl;
- this.form.showSkills = this.args.organization.showSkills;
- this.form.isMultipleSendingAssessmentEnabled = this.args.organization.isMultipleSendingAssessmentEnabled;
- this.form.isPlacesManagementEnabled = this.args.organization.isPlacesManagementEnabled;
- this.form.identityProviderForCampaigns =
- this.args.organization.identityProviderForCampaigns ?? this.noIdentityProviderOption.value;
- }
-}
diff --git a/admin/app/components/organizations/information-section-view.gjs b/admin/app/components/organizations/information-section-view.gjs
new file mode 100644
index 00000000000..8d3646abcbc
--- /dev/null
+++ b/admin/app/components/organizations/information-section-view.gjs
@@ -0,0 +1,203 @@
+import PixButton from '@1024pix/pix-ui/components/pix-button';
+import PixButtonLink from '@1024pix/pix-ui/components/pix-button-link';
+import PixMessage from '@1024pix/pix-ui/components/pix-message';
+import PixTag from '@1024pix/pix-ui/components/pix-tag';
+import { LinkTo } from '@ember/routing';
+import { service } from '@ember/service';
+import Component from '@glimmer/component';
+import { tracked } from '@glimmer/tracking';
+import { t } from 'ember-intl';
+import ENV from 'pix-admin/config/environment';
+
+export default class OrganizationInformationSection extends Component {
+ @service oidcIdentityProviders;
+ @service accessControl;
+ @tracked tags;
+ @tracked hasOrganizationChildren;
+
+ constructor() {
+ super(...arguments);
+ if (this.args.organization.tags) {
+ Promise.resolve(this.args.organization.tags).then((tags) => {
+ this.tags = tags;
+ });
+ }
+ if (this.args.organization.children) {
+ Promise.resolve(this.args.organization.children).then((children) => {
+ this.hasOrganizationChildren = children.length > 0;
+ });
+ }
+ }
+
+ get isManagingStudentAvailable() {
+ return (
+ !this.args.organization.isLearnerImportEnabled &&
+ (this.args.organization.isOrganizationSCO || this.args.organization.isOrganizationSUP)
+ );
+ }
+
+ get identityProviderName() {
+ const GARIdentityProvider = { code: 'GAR', organizationName: 'GAR' };
+ const allIdentityProviderList = [...this.oidcIdentityProviders.list, GARIdentityProvider];
+ const identityProvider = allIdentityProviderList.findBy(
+ 'code',
+ this.args.organization.identityProviderForCampaigns,
+ );
+ const identityProviderName = identityProvider?.organizationName;
+ return identityProviderName ?? 'Aucun';
+ }
+
+ get externalURL() {
+ const urlDashboardPrefix = ENV.APP.ORGANIZATION_DASHBOARD_URL;
+ return urlDashboardPrefix && urlDashboardPrefix + this.args.organization.id;
+ }
+
+
+
+
{{@organization.name}}
+
+ {{#if this.tags}}
+
+ {{else}}
+
Cette
+ organisation n'a pas de tags.
+
+ {{/if}}
+
+ {{#if this.hasOrganizationChildren}}
+
{{t
+ "components.organizations.information-section-view.parent-organization"
+ }}
+ {{/if}}
+ {{#if @organization.parentOrganizationId}}
+
+ -
+ {{t
+ "components.organizations.information-section-view.child-organization"
+ }}
+
+ -
+ {{t "components.organizations.information-section-view.parent-organization"}}
+ :
+
+ {{@organization.parentOrganizationName}}
+
+
+
+ {{/if}}
+
+ {{#if @organization.isArchived}}
+
+ Archivée le
+ {{@organization.archivedFormattedDate}}
+ par
+ {{@organization.archivistFullName}}.
+
+ {{/if}}
+
+
+
+
+}
diff --git a/admin/app/components/organizations/information-section-view.hbs b/admin/app/components/organizations/information-section-view.hbs
deleted file mode 100644
index d3bf897e999..00000000000
--- a/admin/app/components/organizations/information-section-view.hbs
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
{{@organization.name}}
-
- {{#if this.tags}}
-
- {{else}}
-
Cette organisation
- n'a pas de tags.
-
- {{/if}}
-
- {{#if this.hasOrganizationChildren}}
-
{{t "components.organizations.information-section-view.parent-organization"}}
- {{/if}}
- {{#if @organization.parentOrganizationId}}
-
- -
- {{t
- "components.organizations.information-section-view.child-organization"
- }}
-
- -
- {{t "components.organizations.information-section-view.parent-organization"}}
- :
-
- {{@organization.parentOrganizationName}}
-
-
-
- {{/if}}
-
- {{#if @organization.isArchived}}
-
- Archivée le
- {{@organization.archivedFormattedDate}}
- par
- {{@organization.archivistFullName}}.
-
- {{/if}}
-
-
-
\ No newline at end of file
diff --git a/admin/app/components/organizations/information-section-view.js b/admin/app/components/organizations/information-section-view.js
deleted file mode 100644
index fca346e1844..00000000000
--- a/admin/app/components/organizations/information-section-view.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { service } from '@ember/service';
-import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
-import ENV from 'pix-admin/config/environment';
-
-export default class OrganizationInformationSection extends Component {
- @service oidcIdentityProviders;
- @service accessControl;
- @tracked tags;
- @tracked hasOrganizationChildren;
-
- constructor() {
- super(...arguments);
- if (this.args.organization.tags) {
- Promise.resolve(this.args.organization.tags).then((tags) => {
- this.tags = tags;
- });
- }
- if (this.args.organization.children) {
- Promise.resolve(this.args.organization.children).then((children) => {
- this.hasOrganizationChildren = children.length > 0;
- });
- }
- }
-
- get identityProviderName() {
- const GARIdentityProvider = { code: 'GAR', organizationName: 'GAR' };
- const allIdentityProviderList = [...this.oidcIdentityProviders.list, GARIdentityProvider];
- const identityProvider = allIdentityProviderList.findBy(
- 'code',
- this.args.organization.identityProviderForCampaigns,
- );
- const identityProviderName = identityProvider?.organizationName;
- return identityProviderName ?? 'Aucun';
- }
-
- get externalURL() {
- const urlDashboardPrefix = ENV.APP.ORGANIZATION_DASHBOARD_URL;
- return urlDashboardPrefix && urlDashboardPrefix + this.args.organization.id;
- }
-}
diff --git a/admin/app/models/organization.js b/admin/app/models/organization.js
index 61dd1222c37..8d052dd210e 100644
--- a/admin/app/models/organization.js
+++ b/admin/app/models/organization.js
@@ -43,6 +43,7 @@ export default class Organization extends Model {
MULTIPLE_SENDING_ASSESSMENT: 'MULTIPLE_SENDING_ASSESSMENT',
PLACES_MANAGEMENT: 'PLACES_MANAGEMENT',
COMPUTE_ORGANIZATION_LEARNER_CERTIFICABILITY: 'COMPUTE_ORGANIZATION_LEARNER_CERTIFICABILITY',
+ LEARNER_IMPORT: 'LEARNER_IMPORT',
};
}
@@ -51,6 +52,16 @@ export default class Organization extends Model {
return this.features[Organization.featureList.COMPUTE_ORGANIZATION_LEARNER_CERTIFICABILITY].active;
}
+ get isLearnerImportEnabled() {
+ if (!this.features) return false;
+ return this.features[Organization.featureList.LEARNER_IMPORT].active;
+ }
+
+ get learnerImportFormatName() {
+ if (!this.isLearnerImportEnabled) return null;
+ return this.features[Organization.featureList.LEARNER_IMPORT].params.name;
+ }
+
get isMultipleSendingAssessmentEnabled() {
if (!this.features) return false;
return this.features[Organization.featureList.MULTIPLE_SENDING_ASSESSMENT].active;
diff --git a/admin/tests/acceptance/authenticated/organizations/information-management-test.js b/admin/tests/acceptance/authenticated/organizations/information-management-test.js
index 0200a877686..b11bdc01bc7 100644
--- a/admin/tests/acceptance/authenticated/organizations/information-management-test.js
+++ b/admin/tests/acceptance/authenticated/organizations/information-management-test.js
@@ -20,6 +20,7 @@ module('Acceptance | Organizations | Information management', function (hooks) {
name: 'oldOrganizationName',
features: {
PLACES_MANAGEMENT: { active: false },
+ LEARNER_IMPORT: { active: false },
MULTIPLE_SENDING_ASSESSMENT: { active: false },
COMPUTE_ORGANIZATION_LEARNER_CERTIFICABILITY: { active: false },
},
diff --git a/admin/tests/unit/models/organization-test.js b/admin/tests/unit/models/organization-test.js
index e5de0999d91..192bcbcabda 100644
--- a/admin/tests/unit/models/organization-test.js
+++ b/admin/tests/unit/models/organization-test.js
@@ -48,6 +48,94 @@ module('Unit | Model | organization', function (hooks) {
});
});
+ module('#isLearnerImportEnabled', function () {
+ module('#get', function () {
+ test('it returns true when feature is enabled', function (assert) {
+ // given
+ const store = this.owner.lookup('service:store');
+ const model = store.createRecord('organization', {
+ features: { ['LEARNER_IMPORT']: { active: true } },
+ });
+
+ // when
+ const isLearnerImportEnabled = model.isLearnerImportEnabled;
+
+ // then
+ assert.true(isLearnerImportEnabled);
+ });
+
+ test('it returns false when feature is disabled', function (assert) {
+ // given
+ const store = this.owner.lookup('service:store');
+ const model = store.createRecord('organization', {
+ features: { ['LEARNER_IMPORT']: { active: false } },
+ });
+
+ // when
+ const isLearnerImportEnabled = model.isLearnerImportEnabled;
+
+ // then
+ assert.false(isLearnerImportEnabled);
+ });
+
+ test('it returns false when no features are provided', function (assert) {
+ // given
+ const store = this.owner.lookup('service:store');
+ const model = store.createRecord('organization', {});
+
+ // when
+ const isLearnerImportEnabled = model.isLearnerImportEnabled;
+
+ // then
+ assert.false(isLearnerImportEnabled);
+ });
+ });
+ });
+
+ module('#learnerImportFormatName', function () {
+ module('#get', function () {
+ test('it returns the name of the format when import format feature is enabled', function (assert) {
+ // given
+ const store = this.owner.lookup('service:store');
+ const model = store.createRecord('organization', {
+ features: { ['LEARNER_IMPORT']: { active: true, params: { name: 'TOTO' } } },
+ });
+
+ // when
+ const learnerImportFormatName = model.learnerImportFormatName;
+
+ // then
+ assert.strictEqual(learnerImportFormatName, 'TOTO');
+ });
+
+ test('it returns null when import formatfeature is disabled', function (assert) {
+ // given
+ const store = this.owner.lookup('service:store');
+ const model = store.createRecord('organization', {
+ features: { ['LEARNER_IMPORT']: { active: false, params: { name: 'TOTO' } } },
+ });
+
+ // when
+ const learnerImportFormatName = model.learnerImportFormatName;
+
+ // then
+ assert.strictEqual(learnerImportFormatName, null);
+ });
+
+ test('it returns null when no features are provided', function (assert) {
+ // given
+ const store = this.owner.lookup('service:store');
+ const model = store.createRecord('organization', {});
+
+ // when
+ const learnerImportFormatName = model.learnerImportFormatName;
+
+ // then
+ assert.strictEqual(learnerImportFormatName, null);
+ });
+ });
+ });
+
module('#isPlacesManagementEnabled', function () {
module('#get', function () {
test('it returns true when feature is enabled', function (assert) {
diff --git a/api/src/organizational-entities/domain/models/OrganizationForAdmin.js b/api/src/organizational-entities/domain/models/OrganizationForAdmin.js
index 3be0924c6ca..6c0dccc3a7a 100644
--- a/api/src/organizational-entities/domain/models/OrganizationForAdmin.js
+++ b/api/src/organizational-entities/domain/models/OrganizationForAdmin.js
@@ -138,6 +138,13 @@ class OrganizationForAdmin {
this.identityProviderForCampaigns = identityProviderForCampaigns;
}
+ updateIsManagingStudents(isManagingStudents, features) {
+ const hasLearnerImportFeature =
+ features[ORGANIZATION_FEATURE.LEARNER_IMPORT.key] && features[ORGANIZATION_FEATURE.LEARNER_IMPORT.key].active;
+
+ this.isManagingStudents = hasLearnerImportFeature ? false : isManagingStudents;
+ }
+
updateWithDataProtectionOfficerAndTags(organization, dataProtectionOfficer = {}, tags = []) {
const isAEFE = Boolean(tags.find((tag) => tag.name === 'AEFE'));
@@ -148,8 +155,8 @@ class OrganizationForAdmin {
this.credit = organization.credit;
this.externalId = organization.externalId;
this.updateProvinceCode(organization.provinceCode);
- this.isManagingStudents = organization.isManagingStudents;
this.documentationUrl = organization.documentationUrl;
+ this.updateIsManagingStudents(organization.isManagingStudents, organization.features);
this.showSkills = organization.showSkills;
this.updateIdentityProviderForCampaigns(organization.identityProviderForCampaigns);
this.dataProtectionOfficer.updateInformation(dataProtectionOfficer);
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 7224bbb7ecc..57da9525c72 100644
--- a/api/tests/organizational-entities/unit/domain/models/OrganizationForAdmin_test.js
+++ b/api/tests/organizational-entities/unit/domain/models/OrganizationForAdmin_test.js
@@ -267,20 +267,56 @@ describe('Unit | Organizational Entities | Domain | Model | OrganizationForAdmin
expect(givenOrganization.provinceCode).to.equal(newProvinceCode);
});
- it('updates organization isManagingStudents', function () {
- // given
- const givenOrganization = new OrganizationForAdmin({
- isManagingStudents: false,
+ context('updates organization isManagingStudents', function () {
+ it('updates organization isManagingStudents when LEARNER_IMPORT feature does not exist', function () {
+ // given
+ const givenOrganization = new OrganizationForAdmin({
+ isManagingStudents: false,
+ });
+
+ // when
+ givenOrganization.updateWithDataProtectionOfficerAndTags({
+ isManagingStudents: true,
+ features: {},
+ });
+
+ // then
+ expect(givenOrganization.isManagingStudents).to.equal(true);
});
- // when
- givenOrganization.updateWithDataProtectionOfficerAndTags({
- isManagingStudents: true,
- features: {},
+ it('updates organization isManagingStudents when LEARNER_IMPORT feature is false', function () {
+ // given
+ const givenOrganization = new OrganizationForAdmin({
+ isManagingStudents: false,
+ features: { LEARNER_IMPORT: { active: false } },
+ });
+
+ // when
+ givenOrganization.updateWithDataProtectionOfficerAndTags({
+ isManagingStudents: true,
+ features: {},
+ });
+
+ // then
+ expect(givenOrganization.isManagingStudents).to.equal(true);
});
- // then
- expect(givenOrganization.isManagingStudents).to.equal(true);
+ it('not updates organization isManagingStudents when LEARNER_IMPORT feature is true', function () {
+ // given
+ const givenOrganization = new OrganizationForAdmin({
+ isManagingStudents: false,
+ features: {},
+ });
+
+ // when
+ givenOrganization.updateWithDataProtectionOfficerAndTags({
+ isManagingStudents: true,
+ features: { LEARNER_IMPORT: { active: true } },
+ });
+
+ // then
+ expect(givenOrganization.isManagingStudents).to.equal(false);
+ });
});
it('enables compute organization learner certificability when updating SCO organization isManagingStudents to true', function () {