Merge pull request #4 from MatthieuTD/codex/add-e2e-tests-for-type-creation-and-editing

Add e2e coverage for machine creation flow and CI
This commit is contained in:
MatthieuTD
2025-09-22 10:24:20 +02:00
committed by GitHub
3 changed files with 1131 additions and 33 deletions

24
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: CI
on:
push:
branches:
- main
- develop
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run unit tests
run: npm test -- --runInBand
- name: Run e2e tests
run: npm run test:e2e -- --runInBand

View File

@@ -81,6 +81,63 @@ Site → Machine → Composant → Sous-composant → ...
- `PATCH /api/machines/:id` - Modifier une machine
- `DELETE /api/machines/:id` - Supprimer une machine
#### Payloads `componentSelections` / `pieceSelections`
Lors de la création d'une machine à partir d'un type, il est possible de fournir des sélections de composants et de pièces qui viendront remplir les exigences définies dans le type de machine.
```json
{
"name": "Presse HP-2000",
"siteId": "<identifiant du site>",
"typeMachineId": "<identifiant du type de machine>",
"componentSelections": [
{
"requirementId": "<id d'une TypeMachineComponentRequirement>",
"componentModelId": "<optionnel : modèle existant>",
"definition": {
"name": "Bloc moteur série X",
"reference": "COMP-001",
"emplacement": "Module A",
"prix": "12000.00",
"customFields": [
{
"name": "Puissance nominale",
"type": "text",
"required": true,
"defaultValue": "7 kW"
}
]
}
}
],
"pieceSelections": [
{
"requirementId": "<id d'une TypeMachinePieceRequirement>",
"pieceModelId": "<optionnel : modèle existant>",
"definition": {
"name": "Kit maintenance niveau 1",
"reference": "KIT-001",
"customFields": [
{
"name": "Référence fournisseur",
"type": "text",
"defaultValue": "STD-002"
}
]
}
}
]
}
```
Principales règles de validation :
- `requirementId` doit correspondre à une exigence déclarée dans le type de machine (composant ou pièce).
- Le nombre de sélections pour une exigence doit respecter `minCount` et `maxCount` (si défini). Les exigences marquées `required` imposent au moins une sélection.
- Si `allowNewModels` vaut `false`, il est obligatoire de fournir un `componentModelId`/`pieceModelId` existant. Sinon un `definition` sans modèle peut être utilisé pour créer un nouvel élément.
- Les modèles sélectionnés doivent appartenir au type attendu (`typeComposantId` ou `typePieceId`) sous peine d'échec de la création.
- Les champs personnalisés du `definition.customFields` permettent de surcharger la valeur par défaut définie au niveau du type; la valeur est automatiquement injectée dans les `customFieldValues` de la machine, du composant ou de la pièce créée.
### Composants
- `GET /api/composants` - Liste tous les composants
- `GET /api/composants/:id` - Détails d'un composant

File diff suppressed because it is too large Load Diff