Skip to content

Commit

Permalink
chore: review
Browse files Browse the repository at this point in the history
  • Loading branch information
victor committed Oct 2, 2024
1 parent 22169be commit 40db199
Show file tree
Hide file tree
Showing 12 changed files with 109 additions and 4,401 deletions.
2,203 changes: 0 additions & 2,203 deletions targets/alert-cli/src/dares/__mocks__/getAgreementsData.ts

Large diffs are not rendered by default.

2,145 changes: 0 additions & 2,145 deletions targets/alert-cli/src/dares/__mocks__/getDaresData.ts

Large diffs are not rendered by default.

24 changes: 6 additions & 18 deletions targets/alert-cli/src/dares/__tests__/difference.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,16 @@ describe("getDifferenceBetweenIndexAndDares", () => {
it("should work", async () => {
const result = await getDifferenceBetweenIndexAndDares();
expect(result).toEqual({
missingAgreements: [
addedAgreementsFromDares: [
{
name: "Convention collective départementale des industries métallurgiques, mécaniques, électriques, électro-céramiques et connexes des Hautes-Pyrénées",
num: 1626,
},
{
name: "Convention collective régionale des employés, techniciens et agents de maîtrise du bâtiment Île-de-France",
num: 2707,
name: "Convention collective nationale de l'Import-export et du Commerce international",
num: 43,
},
],
exceedingAgreements: [
{
name: "Convention collective nationale de la boyauderie du 19 février 1989. Etendue par arrêté du 2 juin 1989 JORF 7 juin 1989.",
num: 1543,
},
{
name: "Convention collective nationale de la sidérurgie du 20 novembre 2001",
num: 2344,
},
removedAgreementsFromDares: [
{
name: "Convention collective nationale des sociétés d'aménagement foncier et d'établissement rural (SAFER)",
num: 7515,
name: "Convention collective nationale des industries chimiques et connexes",
num: 44,
},
],
});
Expand Down
53 changes: 53 additions & 0 deletions targets/alert-cli/src/dares/__tests__/getDaresData.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { getDaresData } from "../getDaresData";

jest.mock("../fetchDaresXlsx", () => {
return {
fetchDaresXlsx: () => {
return [
{
name: "Liste IDCC-Publication",
data: [
["IDENTIFIANT DE CONVENTION COLLECTIVE (IDCC) : "],
[
null,
"CODES EN VIGUEUR POUR LE REMPLISSAGE de la DADS-U et de la DSN",
],
[],
["IDCC", "TITRE DE LA CONVENTION"],
[
"0016",
"Convention collective nationale des transports routiers et activités auxiliaires du transport",
],
["0018", "Convention collective nationale de l'industrie textile"],
[
"0029",
"Convention collective nationale des établissements privés d'hospitalisation, de soins, de cure et de garde à but non lucratif (FEHAP, convention de 1951)",
],
["9998", "___Convention non encore en vigueur___"],
["9999", "___Sans convention collective___"],
],
},
];
},
};
});

describe("getDaresData", () => {
it("should work", async () => {
const result = await getDaresData();
expect(result).toEqual([
{
name: "Convention collective nationale des transports routiers et activités auxiliaires du transport",
num: 16,
},
{
name: "Convention collective nationale de l'industrie textile",
num: 18,
},
{
name: "Convention collective nationale des établissements privés d'hospitalisation, de soins, de cure et de garde à but non lucratif (FEHAP, convention de 1951)",
num: 29,
},
]);
});
});
8 changes: 4 additions & 4 deletions targets/alert-cli/src/dares/difference.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ import { getAgreements } from "./getAgreementsData";

export async function getDifferenceBetweenIndexAndDares(): Promise<Diff> {
const daresDataList = await getDaresData();
const AgreementDataList = (await getAgreements()) ?? [];
const AgreementDataList = await getAgreements();

const missingAgreements: Agreement[] = daresDataList.filter(
const addedAgreementsFromDares: Agreement[] = daresDataList.filter(
(daresData) =>
!AgreementDataList.find(
(agreementData) => agreementData.num === daresData.num
)
);

const exceedingAgreements = AgreementDataList.filter(
const removedAgreementsFromDares = AgreementDataList.filter(
(agreementData) =>
!daresDataList.find((daresData) => daresData.num === agreementData.num)
);

return { missingAgreements, exceedingAgreements };
return { addedAgreementsFromDares, removedAgreementsFromDares };
}
13 changes: 13 additions & 0 deletions targets/alert-cli/src/dares/fetchDaresXlsx.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { extractDaresXlsxFromMT } from "./scrapping";
import { downloadFileInTempFolder } from "./download";
import xlsx from "node-xlsx";

export const fetchDaresXlsx = async () => {
const xlsxUrl = await extractDaresXlsxFromMT();
const xlsxPath = await downloadFileInTempFolder(xlsxUrl, "dares.xlsx");
const workSheetsFromFile: {
name: string;
data: any[][];
}[] = xlsx.parse(xlsxPath);
return workSheetsFromFile;
};
7 changes: 5 additions & 2 deletions targets/alert-cli/src/dares/getAgreementsData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,15 @@ interface GetAgreementQueryResult {
}[];
}

export async function getAgreements(): Promise<GetAgreementData[] | undefined> {
export async function getAgreements(): Promise<GetAgreementData[]> {
const client = gqlClient();
const result = await client
.query<GetAgreementQueryResult>(getAgreementQuery, {})
.toPromise();
return result.data?.agreements?.map(({ name, id }) => {
if (!result || !result.data || !result.data?.agreements) {
throw new Error("An error occured on hasura agreement loading");
}
return result.data.agreements.map(({ name, id }) => {
return { name, num: parseInt(id) };
});
}
16 changes: 9 additions & 7 deletions targets/alert-cli/src/dares/getDaresData.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import { extractDaresXlsxFromMT } from "./scrapping";
import { downloadFileInTempFolder } from "./download";
import xlsx from "node-xlsx";
import { Agreement } from "./types";
import { fetchDaresXlsx } from "./fetchDaresXlsx";

export const getDaresData = async () => {
const xlsxUrl = await extractDaresXlsxFromMT();
const xlsxPath = await downloadFileInTempFolder(xlsxUrl, "dares.xlsx");
const workSheetsFromFile = xlsx.parse(xlsxPath);
const workSheetsFromFile: {
name: string;
data: any[][];
}[] = await fetchDaresXlsx();
console.log("workSheetsFromFile", JSON.stringify(workSheetsFromFile));

return workSheetsFromFile[0].data.reduce<Agreement[]>((arr, row) => {
const ccNumber = parseInt(row[0]);

if ([9998, 9999].indexOf(ccNumber) !== -1) {
return arr;
}
const ccName = row[1] as string;
if (ccNumber && ccName) {
const ccNameWithoutParenthesis = ccName
Expand Down
1 change: 0 additions & 1 deletion targets/alert-cli/src/dares/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,5 @@ import { saveDiff } from "./save";

export const runDares = async () => {
const diff = await getDifferenceBetweenIndexAndDares();
console.log("diff", JSON.stringify(diff));
await saveDiff(diff);
};
14 changes: 6 additions & 8 deletions targets/alert-cli/src/dares/save.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { gqlClient } from "@shared/utils";
export const saveDiff = async (diff: Diff) => {
const alertRepository = new AlertRepository(gqlClient());

const alertsRemovedToSave: DaresAlertInsert[] = diff.exceedingAgreements.map(
(agreement) => ({
const alertsRemovedToSave: DaresAlertInsert[] =
diff.removedAgreementsFromDares.map((agreement) => ({
info: {
id: agreement.num,
},
Expand All @@ -28,11 +28,10 @@ export const saveDiff = async (diff: Diff) => {
added: [],
documents: [],
},
})
);
}));

const alertsAddedToSave: DaresAlertInsert[] = diff.missingAgreements.map(
(agreement) => ({
const alertsAddedToSave: DaresAlertInsert[] =
diff.addedAgreementsFromDares.map((agreement) => ({
info: {
id: agreement.num,
},
Expand All @@ -54,8 +53,7 @@ export const saveDiff = async (diff: Diff) => {
removed: [],
documents: [],
},
})
);
}));

const alertsToSave = [...alertsAddedToSave, ...alertsRemovedToSave];

Expand Down
4 changes: 2 additions & 2 deletions targets/alert-cli/src/dares/types.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { DaresAlert } from "@socialgouv/cdtn-types";

export interface Diff {
missingAgreements: Agreement[];
exceedingAgreements: Agreement[];
addedAgreementsFromDares: Agreement[];
removedAgreementsFromDares: Agreement[];
}

export interface Agreement {
Expand Down
22 changes: 11 additions & 11 deletions targets/alert-cli/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,17 +53,17 @@ export async function run(

async function main() {
await runDares();
const githubToken = process.env.GITHUB_TOKEN;
if (!githubToken) {
throw new Error("GITHUB_TOKEN is not defined");
}
const api = new GithubApi(githubToken);
const sourceRepository = new SourcesRepository(gqlClient());
const alertRepository = new AlertRepository(gqlClient());
const ficheSPRepository = new FicheSPRepository(gqlClient());
const ficheSpIds = await ficheSPRepository.getFicheServicePublicIds();
const alertDetector = new AlertDetector(api, ficheSpIds);
await run(api, sourceRepository, alertRepository, alertDetector);
// const githubToken = process.env.GITHUB_TOKEN;
// if (!githubToken) {
// throw new Error("GITHUB_TOKEN is not defined");
// }
// const api = new GithubApi(githubToken);
// const sourceRepository = new SourcesRepository(gqlClient());
// const alertRepository = new AlertRepository(gqlClient());
// const ficheSPRepository = new FicheSPRepository(gqlClient());
// const ficheSpIds = await ficheSPRepository.getFicheServicePublicIds();
// const alertDetector = new AlertDetector(api, ficheSpIds);
// await run(api, sourceRepository, alertRepository, alertDetector);
}

main().catch((error) => {
Expand Down

0 comments on commit 40db199

Please sign in to comment.