Skip to content

Commit

Permalink
fix: siret and email format (#162)
Browse files Browse the repository at this point in the history
  • Loading branch information
marc-gavanier authored Dec 20, 2023
1 parent dbb310a commit 05ea36c
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@
"ts-node": "^10.9.1"
},
"dependencies": {
"@gouvfr-anct/lieux-de-mediation-numerique": "^1.18.0",
"@gouvfr-anct/lieux-de-mediation-numerique": "^1.22.1",
"@gouvfr-anct/timetable-to-osm-opening-hours": "^1.0.1",
"@turf/turf": "^6.5.0",
"axios": "^1.2.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ export const saveOutputsWithLieuxInclusionNumeriqueApi =
transformerOptions.cartographieNationaleApiKey != null &&
(await axios.patch<unknown, AxiosResponse, SchemaLieuMediationNumerique[]>(
`${transformerOptions.cartographieNationaleApiUrl}/lieux-inclusion-numerique`,
lieuxMediationNumerique.filter(onlyDefined).map(toSchemaLieuMediationNumerique),
lieuxMediationNumerique
.filter(onlyDefined)
.map(
(lieuMediationNumerique: LieuMediationNumerique): SchemaLieuMediationNumerique =>
toSchemaLieuMediationNumerique(lieuMediationNumerique)
),
headers(authHeader(transformerOptions.cartographieNationaleApiKey))
));
};
16 changes: 16 additions & 0 deletions src/transformer/fields/contact/clean-operations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,20 @@ const removeMultipleAtEmail = (field: string): CleanOperation => ({
field
});

const fixMissingAccentuatedEInEmail = (field: string): CleanOperation => ({
name: 'fix accentuated chars',
selector: /[éè]/u,
field,
fix: (toFix: string): string => toFix.replace(/[éè]/gu, 'e')
});

const fixMissingAccentuatedCInEmail = (field: string): CleanOperation => ({
name: 'fix accentuated chars',
selector: /ç/u,
field,
fix: (toFix: string): string => toFix.replace(/ç/gu, 'c')
});

const cleanOperationIfAny = (
cleanOperator: (colonne: string, codePostal?: string) => CleanOperation,
colonne?: string,
Expand Down Expand Up @@ -372,6 +386,8 @@ export const cleanOperations = (
...cleanOperationIfAny(removeEmailStartingWithWww, matching.courriel?.colonne),
...cleanOperationIfAny(removeEmailStartingWithAt, matching.courriel?.colonne),
...cleanOperationIfAny(trimEmail, matching.courriel?.colonne),
...cleanOperationIfAny(fixMissingAccentuatedEInEmail, matching.courriel?.colonne),
...cleanOperationIfAny(fixMissingAccentuatedCInEmail, matching.courriel?.colonne),
...cleanOperationIfAny(fixEmailWithTwoArobase, matching.courriel?.colonne),
...cleanOperationIfAny(fixStartingWithDotEmail, matching.courriel?.colonne),
...cleanOperationIfAny(fixEmailStartingWithMailTo, matching.courriel?.colonne),
Expand Down
32 changes: 31 additions & 1 deletion src/transformer/fields/contact/contact.field.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,7 @@ describe('contact field', (): void => {

expect(contact).toStrictEqual<Contact>(
Contact({
courriel: 'chambéry@accorderie.fr'
courriel: 'chambery@accorderie.fr'
})
);
});
Expand Down Expand Up @@ -873,6 +873,36 @@ describe('contact field', (): void => {
);
});

it('should replace é with e in email', (): void => {
const contact: Contact = processContact(Report().entry(0))(
{
[EMAIL_FIELD]: 'chambéry@accorderie.fr'
} as DataSource,
matching
);

expect(contact).toStrictEqual<Contact>(
Contact({
courriel: 'chambery@accorderie.fr'
})
);
});

it('should replace ç with c in email', (): void => {
const contact: Contact = processContact(Report().entry(0))(
{
[EMAIL_FIELD]: 'service.bibliothequeç@sarlat.fr'
} as DataSource,
matching
);

expect(contact).toStrictEqual<Contact>(
Contact({
courriel: 'service.bibliothequec@sarlat.fr'
})
);
});

it('should add : if missing with https', (): void => {
const contact: Contact = processContact(Report().entry(0))(
{
Expand Down
18 changes: 17 additions & 1 deletion src/transformer/fields/pivot/pivot.field.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ describe('pivot field', (): void => {
expect(pivot).toBe('17230001400013');
});

it('should get dummy pivot when ther is no match', (): void => {
it('should get dummy pivot when there is no match', (): void => {
const matching: LieuxMediationNumeriqueMatching = {
pivot: {
colonne: 'SIRET'
Expand All @@ -50,4 +50,20 @@ describe('pivot field', (): void => {

expect(pivot).toBe('00000000000000');
});

it('should get dummy pivot when SIRET is to short excluding spaces', (): void => {
const matching: LieuxMediationNumeriqueMatching = {
pivot: {
colonne: 'SIRET'
}
} as LieuxMediationNumeriqueMatching;

const source: DataSource = {
SIRET: '842 887 408 00'
};

const pivot: Pivot = processPivot(source, matching);

expect(pivot).toBe('00000000000000');
});
});
2 changes: 1 addition & 1 deletion src/transformer/fields/pivot/pivot.field.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { LieuxMediationNumeriqueMatching, DataSource } from '../../input';
export const processPivot = (source: DataSource, matching: LieuxMediationNumeriqueMatching): Pivot => {
try {
const colonne: string = matching.pivot?.colonne ?? '';
return Pivot(source[colonne]?.toString() ?? '00000000000000');
return Pivot(source[colonne]?.toString().replace(/\s/gu, '') ?? '00000000000000');
} catch {
return Pivot('00000000000000');
}
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -474,10 +474,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"

"@gouvfr-anct/lieux-de-mediation-numerique@^1.18.0":
version "1.18.0"
resolved "https://registry.yarnpkg.com/@gouvfr-anct/lieux-de-mediation-numerique/-/lieux-de-mediation-numerique-1.18.0.tgz#d351704c77282c73334c35719e3b71c2ec4e5a51"
integrity sha512-g7gg77fH9yXXVOjeG7avqd+ZlPffoDilzS7AL+zPqThRTPm1Hkpid2rxAlP4XeFAavuB8gxUNVx13P1P9VX7gg==
"@gouvfr-anct/lieux-de-mediation-numerique@^1.22.1":
version "1.22.1"
resolved "https://registry.yarnpkg.com/@gouvfr-anct/lieux-de-mediation-numerique/-/lieux-de-mediation-numerique-1.22.1.tgz#b7ef72cfb3199a98f85d8fc41093c2f514c0641a"
integrity sha512-E75rnGOSBa09j4jZqzu7/dLwAD58RaSn2FHhKSyCr883KJIKS1woNgK4Cao1f1TRhZIjiU678ocTa7gg7Emoiw==

"@gouvfr-anct/timetable-to-osm-opening-hours@^1.0.1":
version "1.1.0"
Expand Down

0 comments on commit 05ea36c

Please sign in to comment.