test: add machine creation e2e flow and CI
This commit is contained in:
24
.github/workflows/ci.yml
vendored
Normal file
24
.github/workflows/ci.yml
vendored
Normal 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
|
||||
57
README.md
57
README.md
@@ -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
|
||||
|
||||
1070
test/app.e2e-spec.ts
1070
test/app.e2e-spec.ts
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user