diff --git a/contribuer/public/admin/config.yml b/contribuer/public/admin/config.yml index 5c1c5fce9d..192474e371 100644 --- a/contribuer/public/admin/config.yml +++ b/contribuer/public/admin/config.yml @@ -145,6 +145,15 @@ fields: name: values widget: list hint: Pour saisir plusieurs communes, séparez les codes INSEE des communes par une virgule. + field_codespostaux: &field_codespostaux + label: Condition géographique codes postaux + name: codespostaux + widget: object + fields: + - label: Code postaux des communes + name: values + widget: list + hint: Pour saisir plusieurs codes postaux, séparez les codes des communes par une virgule. field_boursier: &field_boursier <<: *field_empty label: Boursier @@ -822,6 +831,7 @@ fields: - *field_epcis - *field_excluded_epcis - *field_communes + - *field_codespostaux - *field_regime_securite_sociale - *field_quotient_familial - *field_formation_sanitaire_social diff --git a/data/benefits/javascript/ville-strasbourg-accompagnement.yml b/data/benefits/javascript/ville-strasbourg-accompagnement.yml new file mode 100644 index 0000000000..69238a3ac2 --- /dev/null +++ b/data/benefits/javascript/ville-strasbourg-accompagnement.yml @@ -0,0 +1,13 @@ +label: rendez-vous téléphonique d’accompagnement personnalisé +institution: strasbourg_eurometropole +description: Vous avez besoin d’aide pour comprendre votre résultat de simulation et effectuer vos démarches ? Prenez un rendez-vous pour être rappelé au téléphone par un agent chargé d’accès aux droits de la ville de Strasbourg. +prefix: le +conditions_generales: + - type: codespostaux + values: + - "67100" +type: bool +periodicite: autre +teleservice: https://mon.strasbourg.eu/bienvenue +link: https://mon.strasbourg.eu/bienvenue +top: -1 diff --git a/lib/benefits/compute-javascript.ts b/lib/benefits/compute-javascript.ts index 7ecfa67d2e..1b405fe757 100644 --- a/lib/benefits/compute-javascript.ts +++ b/lib/benefits/compute-javascript.ts @@ -90,6 +90,7 @@ const COMMUNE_PARAMETERS = { departements: "_departement", communes: "depcom", epcis: "_epci", + codespostaux: "_codePostal", } export function testGeographicalEligibility( @@ -196,6 +197,9 @@ export const CONDITION_STRATEGY: Conditions = { regions: { test: testGeographicalEligibility, }, + codespostaux: { + test: testGeographicalEligibility, + }, departements: { test: testGeographicalEligibility, }, diff --git a/tests/integration/benefits-description.spec.ts b/tests/integration/benefits-description.spec.ts index c68a73007d..d71729017c 100644 --- a/tests/integration/benefits-description.spec.ts +++ b/tests/integration/benefits-description.spec.ts @@ -182,6 +182,7 @@ describe("benefit descriptions", function () { condition.type === "departements" || condition.type === "communes" || condition.type === "epcis" || + condition.type === "codespostaux" || condition.type === "attached_to_institution" ) } diff --git a/tests/integration/schema-validation-benefits-javascript.spec.ts b/tests/integration/schema-validation-benefits-javascript.spec.ts index c5f60c997d..dad9e97736 100644 --- a/tests/integration/schema-validation-benefits-javascript.spec.ts +++ b/tests/integration/schema-validation-benefits-javascript.spec.ts @@ -4,7 +4,6 @@ import fs from "fs" import { validateFile, getCollectionSchema } from "@root/data/schemas.js" const benefitSchema = getCollectionSchema("benefits_javascript") - const dataDir = path.join(new URL(".", import.meta.url).pathname, "../../data") const benefitFiles = fs .readdirSync(`${dataDir}/benefits/javascript`) diff --git a/tests/unit/compute-javascript-benefits.spec.ts b/tests/unit/compute-javascript-benefits.spec.ts index 045015cb05..016ff14838 100644 --- a/tests/unit/compute-javascript-benefits.spec.ts +++ b/tests/unit/compute-javascript-benefits.spec.ts @@ -170,6 +170,19 @@ describe("computeAides", function () { ).toBe(true) }) + it("verify the result when a codespostaux is in benefit's EPCI", function () { + situation.menage._codePostal = "67100" + expect( + testGeographicalEligibility( + { + type: "codespostaux", + values: ["67100"], + }, + { situation } + ) + ).toBe(true) + }) + it("adds the benefit amount when eligible", function () { const openfiscaRequest = buildOpenFiscaRequest(situation) computeJavascriptBenefits(benefits, situation, openfiscaRequest)