Skip to content

Commit

Permalink
✨ add filter to only delete centers pilots for complementary alone fe…
Browse files Browse the repository at this point in the history
…ature
  • Loading branch information
matthieu-octo committed Jul 4, 2024
1 parent 9a6e33e commit 8d7c58d
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ async function main(filePath) {

logger.info('Inserting pilot certification center ids in database... ');
trx = await knex.transaction();
await trx('certification-center-features').del();
await trx('certification-center-features')
.del()
.leftJoin('features', 'features.id', 'certification-center-features.featureId')
.where('features.key', CERTIFICATION_FEATURES.CAN_REGISTER_FOR_A_COMPLEMENTARY_CERTIFICATION_ALONE.key);
const batchInfo = await trx.batchInsert('certification-center-features', certificationCentersPilotsList);
const insertedLines = _getInsertedLineNumber(batchInfo);
logger.info('✅ ');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,13 @@ describe('Integration | Scripts | Certification | import-pilot-certification-cen

const certificationCenterId1 = 1001;
const certificationCenterId2 = 1002;
const certificationCenterId3 = 1003;

const featureId = databaseBuilder.factory.buildFeature({
key: CERTIFICATION_FEATURES.CAN_REGISTER_FOR_A_COMPLEMENTARY_CERTIFICATION_ALONE.key,
}).id;

databaseBuilder.factory.buildCertificationCenter({ id: certificationCenterId1, isV3Pilot: true });
databaseBuilder.factory.buildCertificationCenter({ id: certificationCenterId2, isV3Pilot: true });
databaseBuilder.factory.buildCertificationCenter({ id: certificationCenterId3, isV3Pilot: true });

databaseBuilder.factory.buildCertificationCenterFeature({ certificationCenterId1, featureId });

await databaseBuilder.commit();

Expand All @@ -47,7 +43,84 @@ describe('Integration | Scripts | Certification | import-pilot-certification-cen
]);
});

context('when there is a V3 certification center in the csv file', function () {
context('when pilot certification centers are already imported', function () {
it('should removes pilot certification centers for the complementary alone feature from the list', async function () {
// given
const file = 'pilot-certification-centers-valid.csv';
const dataWithSingleCertificationCenterId = 'certification_center_id;\n1002;\n';
const csvFilePath = await createTempFile(file, dataWithSingleCertificationCenterId);

const certificationCenterId1 = 1001;
const certificationCenterId2 = 1002;

const featureId = databaseBuilder.factory.buildFeature({
key: CERTIFICATION_FEATURES.CAN_REGISTER_FOR_A_COMPLEMENTARY_CERTIFICATION_ALONE.key,
}).id;

databaseBuilder.factory.buildCertificationCenter({ id: certificationCenterId1, isV3Pilot: true });
databaseBuilder.factory.buildCertificationCenter({ id: certificationCenterId2, isV3Pilot: true });

databaseBuilder.factory.buildCertificationCenterFeature({ certificationCenterId1, featureId });

await databaseBuilder.commit();

// when
await main(csvFilePath);

// then
const pilotCertificationCenterList = await knex('certification-center-features').select(
'certificationCenterId',
'featureId',
);

expect(pilotCertificationCenterList).to.deep.equal([
{ certificationCenterId: certificationCenterId2, featureId },
]);
});

it('should NOT removes pilot certification centers for another feature', async function () {
// given
const file = 'pilot-certification-centers-valid.csv';
const data = 'certification_center_id;\n1002;\n';
const csvFilePath = await createTempFile(file, data);

const certificationCenterId1 = 1001;
const certificationCenterId2 = 1002;

const complementaryAloneFeatureId = databaseBuilder.factory.buildFeature({
key: CERTIFICATION_FEATURES.CAN_REGISTER_FOR_A_COMPLEMENTARY_CERTIFICATION_ALONE.key,
}).id;
const anotherFeatureId = databaseBuilder.factory.buildFeature({
key: 'ANOTHER_FEATURE',
}).id;

databaseBuilder.factory.buildCertificationCenter({ id: certificationCenterId1, isV3Pilot: true });
databaseBuilder.factory.buildCertificationCenter({ id: certificationCenterId2, isV3Pilot: true });

databaseBuilder.factory.buildCertificationCenterFeature({
certificationCenterId: certificationCenterId1,
featureId: anotherFeatureId,
});

await databaseBuilder.commit();

// when
await main(csvFilePath);

// then
const pilotCertificationCenterList = await knex('certification-center-features').select(
'certificationCenterId',
'featureId',
);

expect(pilotCertificationCenterList).to.deep.equal([
{ certificationCenterId: certificationCenterId1, featureId: anotherFeatureId },
{ certificationCenterId: certificationCenterId2, featureId: complementaryAloneFeatureId },
]);
});
});

context('when there is a V2 certification center in the csv file', function () {
it('should not import the certification center list', async function () {
// given
const file = 'pilot-certification-centers-invalid-v3-centers.csv';
Expand Down

0 comments on commit 8d7c58d

Please sign in to comment.