• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

inclusion-numerique / coop-mediation-numerique / 134f1cc8-b272-471e-be1c-25fe3b4baafa

17 Mar 2026 04:15PM UTC coverage: 6.94% (-3.9%) from 10.79%
134f1cc8-b272-471e-be1c-25fe3b4baafa

push

circleci

web-flow
Merge pull request #437 from inclusion-numerique/dev

release

470 of 10426 branches covered (4.51%)

Branch coverage included in aggregate %.

28 of 584 new or added lines in 86 files covered. (4.79%)

1348 existing lines in 161 files now uncovered.

1355 of 15871 relevant lines covered (8.54%)

37.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/apps/web/src/structure/toStructureFromCartoStructure.ts
1
import { fraisAChargeKeys } from '@app/web/features/structures/fraisACharge'
2
import { itineranceKeys } from '@app/web/features/structures/itinerance'
3
import { modaliteAccompagnementKeys } from '@app/web/features/structures/modaliteAccompagnement'
4
import { modaliteAccesKeys } from '@app/web/features/structures/modalitesAcces'
5
import { priseEnChargeSpecifiqueKeys } from '@app/web/features/structures/priseEnChargeSpecifique'
6
import { publicSpecifiquementAdresseKeys } from '@app/web/features/structures/publicSpecifiquementAdresse'
7
import { validateValidRnaDigits } from '@app/web/features/structures/rna/rnaValidation'
8
import { serviceKeys } from '@app/web/features/structures/service'
9
import { validateValidSiretDigits } from '@app/web/features/structures/siret/siretValidation'
10
import { coopCartographieNationaleSource } from '@app/web/structure/cartographieNationaleSources'
11
import type {
12
  Frais,
13
  Itinerance,
14
  ModaliteAcces,
15
  ModaliteAccompagnement,
16
  PriseEnChargeSpecifique,
17
  PublicSpecifiquementAdresse,
18
  Service,
19
} from '@gouvfr-anct/lieux-de-mediation-numerique'
20
import type {
21
  Prisma,
22
  StructureCartographieNationale,
23
  Typologie,
24
} from '@prisma/client'
25
import { v4 } from 'uuid'
26

UNCOV
27
export const toStructureFromCartoStructure = ({
×
28
  adresse,
29
  codeInsee,
30
  codePostal,
31
  commune,
32
  complementAdresse,
33
  courriels,
34
  ficheAccesLibre,
35
  fraisACharge,
36
  horaires,
37
  id,
38
  itinerance,
39
  latitude,
40
  longitude,
41
  modalitesAcces,
42
  modalitesAccompagnement,
43
  nom,
44
  pivot,
45
  presentationDetail,
46
  presentationResume,
47
  priseEnChargeSpecifique,
48
  publicsSpecifiquementAdresses,
49
  services,
50
  source,
51
  siteWeb,
52
  telephone,
53
  typologie,
54
}: Pick<
55
  StructureCartographieNationale,
56
  | 'id'
57
  | 'nom'
58
  | 'adresse'
59
  | 'commune'
60
  | 'codePostal'
61
  | 'pivot'
62
  | 'codeInsee'
63
  | 'longitude'
64
  | 'latitude'
65
  | 'ficheAccesLibre'
66
  | 'presentationDetail'
67
  | 'presentationResume'
68
  | 'complementAdresse'
69
  | 'horaires'
70
  | 'source'
71
  | 'siteWeb'
72
  | 'typologie'
73
  | 'modalitesAccompagnement'
74
  | 'services'
75
  | 'modalitesAcces'
76
  | 'fraisACharge'
77
  | 'itinerance'
78
  | 'priseEnChargeSpecifique'
79
  | 'publicsSpecifiquementAdresses'
80
  | 'courriels'
81
  | 'telephone'
82
>) =>
83
  ({
×
84
    id: v4(),
85
    structureCartographieNationaleId: id,
86
    visiblePourCartographieNationale: true,
87
    nom,
88
    adresse,
89
    complementAdresse,
90
    commune,
91
    codePostal,
92
    siret: pivot && validateValidSiretDigits(pivot) ? pivot : null,
×
93
    rna: pivot && validateValidRnaDigits(pivot) ? pivot : null,
×
94
    codeInsee,
95
    longitude,
96
    latitude,
97
    ficheAccesLibre,
98
    services: services
99
      ?.split('|')
100
      .map((serviceLabel) => serviceKeys[serviceLabel as Service]),
×
101
    horaires,
102
    typologies: typologie?.split('|') as Typologie[] | undefined,
103
    presentationResume,
104
    presentationDetail,
105
    courriels: courriels?.split('|'),
106
    telephone,
107
    siteWeb,
108
    derniereModificationSource:
109
      source === coopCartographieNationaleSource ? null : source,
×
110
    modalitesAccompagnement: modalitesAccompagnement
111
      ?.split('|')
112
      .map(
113
        (modaliteAccompagnement) =>
114
          modaliteAccompagnementKeys[
×
115
            modaliteAccompagnement as ModaliteAccompagnement
116
          ],
117
      ),
118
    modalitesAcces: modalitesAcces
119
      ?.split('|')
120
      .map(
121
        (modaliteAcces) => modaliteAccesKeys[modaliteAcces as ModaliteAcces],
×
122
      ),
123
    fraisACharge: fraisACharge
124
      ?.split('|')
125
      .map((frais) => fraisAChargeKeys[frais as Frais]),
×
126
    itinerance: itinerance
127
      ?.split('|')
128
      .map((itineranceLabel) => itineranceKeys[itineranceLabel as Itinerance]),
×
129
    priseEnChargeSpecifique: priseEnChargeSpecifique
130
      ?.split('|')
131
      .map(
132
        (priseEnCharge) =>
133
          priseEnChargeSpecifiqueKeys[priseEnCharge as PriseEnChargeSpecifique],
×
134
      ),
135
    publicsSpecifiquementAdresses: publicsSpecifiquementAdresses
136
      ?.split('|')
137
      .map(
138
        (publicSpecifiquementAdresse) =>
139
          publicSpecifiquementAdresseKeys[
×
140
            publicSpecifiquementAdresse as PublicSpecifiquementAdresse
141
          ],
142
      ),
143
  }) satisfies Prisma.StructureCreateManyInput
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc