Files
LogiFlow/scripts/bench/cases/quotidien.ts
T
LogiFlowandClaude Opus 5.5 600627c632 feat(rust) : serveur réécrit en Rust, Node retiré ; Calendrier en tête du menu (#571)
- Serveur Rust (server-rs/, axum + sqlx) : les 148 adresses de l'API,
  l'interface, les migrations de démarrage et les tâches de fond ; même
  comportement que Node (banc : 2027 cas, 0 écart hors écarts déclarés
  USERS-02, RAPPRO-21, R4, R5).
- Node retiré : server/, dépendances serveur, image Docker sans Node
  (51 Mo), docker-compose à un seul service applicatif.
- R4 : écritures d'un autre site refusées (Sec-Fetch-Site / Origin).
- R5 : « aujourd'hui » et sauvegarde automatique à l'heure de Paris.
- R6 : mainteneur dans .github/CODEOWNERS.
- Menu latéral : Accueil puis Calendrier en tête.
- Plan et état : docs/PLAN-MIGRATION-RUST.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke2qyS8rgacP3ap5iezDbM
2026-10-15 20:31:14 +02:00

360 lines
22 KiB
TypeScript

// Lot 3 « Au quotidien » : tâches, DLC, commandes clients et SAV.
// Lignes du banc par magasin (seed.ts et seeds/lot3.ts) :
// Nancy (1) : tâches 1, 2, 3, 301, 302 ; DLC 1 à 5, 301, 302, 303, 305 ;
// commandes 1, 2, 3, 301 ; SAV 1, 2, 301
// Metz (2) : tâches 4, 5, 303 ; DLC 6, 304 ; commandes 4, 5, 302, 303 ; SAV 3, 302
// Épinal (3) : tâche 300 ; DLC 300 ; commande 300 ; SAV 300 (aucun compte du banc sauf l'admin)
import type { ReadCase, WriteScenario } from "../types";
export const reads: ReadCase[] = [
// Tâches : sans magasin choisi, un non-admin reçoit une liste vide
{ module: "tasks", path: "/api/tasks" },
{ module: "tasks", path: "/api/tasks?storeId=1" },
{ module: "tasks", path: "/api/tasks?storeId=2" },
{ module: "tasks", path: "/api/tasks?storeId=3" },
{ module: "tasks", path: "/api/tasks?storeId=abc" },
{ module: "tasks", path: "/api/tasks?storeId=99999999999" },
{ module: "tasks", path: "/api/tasks?storeId=1.9" },
// DLC : filtres de DlcPage, de la fenêtre d'alerte et du tableau de bord
{ module: "dlc", path: "/api/dlc-products" },
{ module: "dlc", path: "/api/dlc-products?storeId=1" },
{ module: "dlc", path: "/api/dlc-products?storeId=2" },
{ module: "dlc", path: "/api/dlc-products?storeId=3" },
{ module: "dlc", path: "/api/dlc-products?storeId=abc" },
{ module: "dlc", path: "/api/dlc-products?status=expires" },
{ module: "dlc", path: "/api/dlc-products?status=expires&storeId=1" },
{ module: "dlc", path: "/api/dlc-products?status=expires_soon" },
{ module: "dlc", path: "/api/dlc-products?status=expires_soon&storeId=2" },
{ module: "dlc", path: "/api/dlc-products?status=en_cours" },
{ module: "dlc", path: "/api/dlc-products?status=valides" },
{ module: "dlc", path: "/api/dlc-products?status=all" },
{ module: "dlc", path: "/api/dlc-products?status=inconnu" },
{ module: "dlc", path: "/api/dlc-products?supplierId=2" },
{ module: "dlc", path: "/api/dlc-products?supplierId=all" },
{ module: "dlc", path: "/api/dlc-products?supplierId=abc" },
{ module: "dlc", path: "/api/dlc-products?supplierId=0" },
{ module: "dlc", path: "/api/dlc-products?supplierId=99999999999" },
{ module: "dlc", path: "/api/dlc-products?storeId=99999999999" },
{ module: "dlc", path: "/api/dlc-products?search=camem" },
{ module: "dlc", path: "/api/dlc-products?search=BONDU" },
{ module: "dlc", path: "/api/dlc-products?search=%25" },
{ module: "dlc", path: "/api/dlc-products?storeId=1&status=expires_soon&supplierId=1&search=e" },
{ module: "dlc", path: "/api/dlc-products/stats" },
{ module: "dlc", path: "/api/dlc-products/stats?storeId=1" },
{ module: "dlc", path: "/api/dlc-products/stats?storeId=2" },
{ module: "dlc", path: "/api/dlc-products/stats?storeId=3" },
{ module: "dlc", path: "/api/dlc-products/stats?storeId=abc" },
{ module: "dlc", path: "/api/dlc-products/1" },
{ module: "dlc", path: "/api/dlc-products/6" },
{ module: "dlc", path: "/api/dlc-products/300" },
{ module: "dlc", path: "/api/dlc-products/303" },
{ module: "dlc", path: "/api/dlc-products/9999" },
{ module: "dlc", path: "/api/dlc-products/abc" },
// Commandes clients : la page n'envoie storeId que pour l'admin, les appels à passer pour tous
{ module: "customer-orders", path: "/api/customer-orders" },
{ module: "customer-orders", path: "/api/customer-orders?storeId=1" },
{ module: "customer-orders", path: "/api/customer-orders?storeId=2" },
{ module: "customer-orders", path: "/api/customer-orders?storeId=3" },
{ module: "customer-orders", path: "/api/customer-orders?storeId=abc" },
{ module: "customer-orders", path: "/api/customer-orders?storeId=2.5" },
{ module: "customer-orders", path: "/api/customer-orders/pending-calls" },
{ module: "customer-orders", path: "/api/customer-orders/pending-calls?storeId=1" },
{ module: "customer-orders", path: "/api/customer-orders/pending-calls?storeId=3" },
{ module: "customer-orders", path: "/api/customer-orders/pending-calls?storeId=abc" },
// SAV : filtres de SavTickets (groupId pour l'admin seulement côté interface)
{ module: "sav", path: "/api/sav/tickets" },
{ module: "sav", path: "/api/sav/tickets?groupId=1" },
{ module: "sav", path: "/api/sav/tickets?groupId=3" },
{ module: "sav", path: "/api/sav/tickets?groupId=abc" },
{ module: "sav", path: "/api/sav/tickets?groupId=0" },
{ module: "sav", path: "/api/sav/tickets?groupId=99999999999" },
{ module: "sav", path: "/api/sav/tickets?supplierId=99999999999" },
{ module: "sav", path: "/api/sav/tickets?endDate={{today}}T23:59:59%2B02:00" },
{ module: "sav", path: "/api/sav/tickets?status=nouveau" },
{ module: "sav", path: "/api/sav/tickets?priority=critique&groupId=3" },
{ module: "sav", path: "/api/sav/tickets?supplierId=4" },
{ module: "sav", path: "/api/sav/tickets?supplierId=abc" },
{ module: "sav", path: "/api/sav/tickets?status=attente_pieces&priority=normale&supplierId=4&groupId=1" },
{ module: "sav", path: "/api/sav/tickets?startDate={{today-10}}&endDate={{today}}" },
{ module: "sav", path: "/api/sav/tickets?startDate=pas-une-date" },
{ module: "sav", path: "/api/sav/tickets/1" },
{ module: "sav", path: "/api/sav/tickets/3" },
{ module: "sav", path: "/api/sav/tickets/300" },
{ module: "sav", path: "/api/sav/tickets/301" },
{ module: "sav", path: "/api/sav/tickets/9999" },
{ module: "sav", path: "/api/sav/tickets/abc" },
{ module: "sav", path: "/api/sav/stats" },
{ module: "sav", path: "/api/sav/stats?groupId=1" },
{ module: "sav", path: "/api/sav/stats?groupId=3" },
{ module: "sav", path: "/api/sav/stats?groupId=abc" },
];
export const writes: WriteScenario[] = [
// ---------- Tâches ----------
{
module: "tasks",
name: "créer une tâche, la modifier, la terminer, la supprimer",
steps: [
{ method: "POST", path: "/api/tasks", body: { title: "Nouvelle tâche", description: "", priority: "high", status: "pending", assignedTo: "Sophie", startDate: "{{today+1}}", dueDate: "{{today+3}}", groupId: 1, createdBy: "manager" } },
{ method: "PUT", path: "/api/tasks/{{0.id}}", body: { title: "Tâche modifiée", priority: "low", assignedTo: "Marc", startDate: "", dueDate: "{{today+5}}" } },
{ method: "POST", path: "/api/tasks/{{0.id}}/complete" },
{ method: "GET", path: "/api/tasks?storeId=1" },
{ method: "DELETE", path: "/api/tasks/{{0.id}}" },
],
tables: ["tasks"],
},
{
module: "tasks",
name: "tâches de son magasin et d'un autre",
steps: [
{ method: "PUT", path: "/api/tasks/2", body: { status: "completed", description: null, startDate: "{{today}}T14:30", dueDate: null } },
{ method: "PUT", path: "/api/tasks/4", body: { title: "Autre magasin" } },
{ method: "PUT", path: "/api/tasks/300", body: { title: "Épinal" } },
{ method: "POST", path: "/api/tasks/1/complete" },
{ method: "POST", path: "/api/tasks/5/complete" },
{ method: "POST", path: "/api/tasks/300/complete" },
{ method: "DELETE", path: "/api/tasks/3" },
{ method: "DELETE", path: "/api/tasks/303" },
{ method: "DELETE", path: "/api/tasks/300" },
{ method: "PUT", path: "/api/tasks/9999", body: { title: "Absente" } },
{ method: "POST", path: "/api/tasks/9999/complete" },
{ method: "DELETE", path: "/api/tasks/9999" },
{ method: "DELETE", path: "/api/tasks/abc" },
{ method: "POST", path: "/api/tasks/abc/complete" },
],
tables: ["tasks"],
},
{
module: "tasks",
name: "créer des tâches : magasin par défaut, autre magasin, corps invalides",
steps: [
{ method: "POST", path: "/api/tasks", body: { title: "Sans magasin", assignedTo: "Léa" } },
{ method: "POST", path: "/api/tasks", body: { title: "Magasin d'Épinal", assignedTo: "Léa", groupId: 3, dueDate: "{{today+2}}T18:00:00.000Z" } },
{ method: "POST", path: "/api/tasks", body: { title: "Magasin en texte", assignedTo: "Léa", groupId: "1", startDate: 0 } },
{ method: "POST", path: "/api/tasks", body: { title: "Metz", assignedTo: "Léa", groupId: 2, status: "completed", completedBy: "x" } },
{ method: "POST", path: "/api/tasks", body: {} },
{ method: "POST", path: "/api/tasks", body: { title: "Priorité inconnue", assignedTo: "Léa", groupId: 1, priority: "urgent" } },
{ method: "POST", path: "/api/tasks", body: { title: "Échéance invalide", assignedTo: "Léa", groupId: 1, dueDate: "pas une date" } },
{ method: "POST", path: "/api/tasks", body: { title: "Départ invalide", assignedTo: "Léa", groupId: 1, startDate: "2026-13-45" } },
{ method: "POST", path: "/api/tasks", body: { title: "Date de création", assignedTo: "Léa", groupId: 1, createdAt: "{{today}}" } },
{ method: "POST", path: "/api/tasks", body: { id: 900, title: "Identifiant imposé", assignedTo: "Léa", groupId: 1, inconnu: true } },
],
tables: ["tasks"],
},
{
module: "tasks",
name: "modifier une tâche avec des valeurs invalides",
steps: [
{ method: "PUT", path: "/api/tasks/1", body: { priority: "urgent" } },
{ method: "PUT", path: "/api/tasks/1", body: { startDate: "n'importe quoi" } },
{ method: "PUT", path: "/api/tasks/1", body: { dueDate: "n'importe quoi" } },
{ method: "PUT", path: "/api/tasks/1", body: { title: null } },
{ method: "PUT", path: "/api/tasks/1", body: { assignedTo: 42, groupId: 2, createdBy: "pirate" } },
{ method: "PUT", path: "/api/tasks/1", body: {} },
{ method: "PUT", path: "/api/tasks/abc", body: {} },
{ method: "PUT", path: "/api/tasks/99999999999", body: {} },
],
tables: ["tasks"],
},
// ---------- DLC ----------
{
module: "dlc",
name: "créer un produit DLC, le modifier, le valider, le supprimer",
steps: [
{
method: "POST", path: "/api/dlc-products", body: {
productName: "Jambon blanc", name: "Jambon blanc", gencode: "3000000000999", supplierId: 1, groupId: 1,
dlcDate: "{{today+4}}", expiryDate: "{{today+4}}T00:00:00.000Z", dateType: "dlc", quantity: 1, unit: "unité",
location: "Magasin", alertThreshold: 15, status: "en_cours", notes: "", createdBy: "pirate",
},
},
{ method: "PUT", path: "/api/dlc-products/{{0.id}}", body: { productName: "Jambon supérieur", name: "Jambon supérieur", expiryDate: "{{today+6}}", dlcDate: "{{today+6}}", notes: "Modifié", groupId: 1 } },
{ method: "POST", path: "/api/dlc-products/{{0.id}}/validate" },
{ method: "GET", path: "/api/dlc-products/{{0.id}}" },
{ method: "DELETE", path: "/api/dlc-products/{{0.id}}" },
{ method: "GET", path: "/api/dlc-products/{{0.id}}" },
],
tables: ["dlc_products"],
},
{
module: "dlc",
name: "actions sur les produits de son magasin",
steps: [
{ method: "PUT", path: "/api/dlc-products/2/stock-epuise" },
{ method: "PUT", path: "/api/dlc-products/4/restore-stock" },
{ method: "PUT", path: "/api/dlc-products/2/mark-processed" },
{ method: "PUT", path: "/api/dlc-products/5/unmark-processed" },
{ method: "POST", path: "/api/dlc-products/1/validate" },
{ method: "GET", path: "/api/dlc-products/stats?storeId=1" },
{ method: "DELETE", path: "/api/dlc-products/302" },
],
tables: ["dlc_products"],
},
{
module: "dlc",
name: "actions sur les produits d'un autre magasin",
steps: [
{ method: "PUT", path: "/api/dlc-products/6/stock-epuise" },
{ method: "PUT", path: "/api/dlc-products/6/mark-processed" },
{ method: "POST", path: "/api/dlc-products/304/validate" },
{ method: "PUT", path: "/api/dlc-products/300/stock-epuise" },
{ method: "PUT", path: "/api/dlc-products/300/restore-stock" },
{ method: "PUT", path: "/api/dlc-products/300/mark-processed" },
{ method: "PUT", path: "/api/dlc-products/300/unmark-processed" },
{ method: "POST", path: "/api/dlc-products/300/validate" },
{ method: "PUT", path: "/api/dlc-products/300", body: { notes: "Épinal" } },
{ method: "DELETE", path: "/api/dlc-products/300" },
{ method: "PUT", path: "/api/dlc-products/6", body: { quantity: 2 } },
{ method: "DELETE", path: "/api/dlc-products/6" },
{ method: "PUT", path: "/api/dlc-products/9999/stock-epuise" },
{ method: "PUT", path: "/api/dlc-products/9999/restore-stock" },
{ method: "POST", path: "/api/dlc-products/9999/validate" },
{ method: "PUT", path: "/api/dlc-products/9999", body: { notes: "x" } },
{ method: "DELETE", path: "/api/dlc-products/abc" },
{ method: "PUT", path: "/api/dlc-products/abc/mark-processed" },
{ method: "PUT", path: "/api/dlc-products/abc/unmark-processed" },
],
tables: ["dlc_products"],
},
{
module: "dlc",
name: "créer et modifier des produits DLC avec des corps invalides",
steps: [
{ method: "POST", path: "/api/dlc-products", body: { groupId: 1 } },
{ method: "POST", path: "/api/dlc-products", body: { name: "Texte", supplierId: 1, groupId: "1", expiryDate: "{{today+2}}" } },
{ method: "POST", path: "/api/dlc-products", body: { name: "Épinal", supplierId: 1, groupId: 3, expiryDate: "{{today+2}}" } },
{ method: "POST", path: "/api/dlc-products", body: { name: "Type inconnu", supplierId: 1, groupId: 1, expiryDate: "{{today+2}}", dateType: "xyz" } },
{ method: "POST", path: "/api/dlc-products", body: { name: "Horodatage", supplierId: 1, groupId: 1, expiryDate: "{{today+2}}", validatedAt: "{{today}}" } },
{ method: "POST", path: "/api/dlc-products", body: { name: "Minimal", supplierId: 2, groupId: 1, expiryDate: "{{today+9}}", stockEpuise: null, quantity: "7" } },
{ method: "PUT", path: "/api/dlc-products/1", body: { status: "inconnu" } },
{ method: "PUT", path: "/api/dlc-products/1", body: { expiryDate: null } },
{ method: "PUT", path: "/api/dlc-products/1", body: { processedAt: "{{today}}" } },
{ method: "PUT", path: "/api/dlc-products/1", body: { updatedAt: "{{today}}", inconnu: 1 } },
{ method: "PUT", path: "/api/dlc-products/2", body: { groupId: 3, createdBy: "pirate" } },
],
tables: ["dlc_products"],
},
// ---------- Commandes clients ----------
{
module: "customer-orders",
name: "créer une commande client, la modifier, prévenir le client, la supprimer",
steps: [
{
method: "POST", path: "/api/customer-orders", body: {
orderTaker: "Sophie", customerName: "M. Nouveau", customerPhone: "06 12 34 56 78", customerEmail: "nouveau@client.test",
productDesignation: "Barbecue", productReference: "BBQ-1", gencode: "3245678909999", quantity: 1, supplierId: 4,
status: "En attente de Commande", deposit: 30, isPromotionalPrice: false, groupId: 1, notes: "Livraison",
},
},
{ method: "PUT", path: "/api/customer-orders/{{0.id}}", body: { status: "Disponible", deposit: "45.5", quantity: 2 } },
{ method: "GET", path: "/api/customer-orders/pending-calls" },
{ method: "PATCH", path: "/api/customer-orders/{{0.id}}/mark-called", body: { comment: "Message laissé" } },
{ method: "PUT", path: "/api/customer-orders/{{0.id}}", body: { customerNotified: false, notifiedAt: null, notifiedComment: null } },
{ method: "DELETE", path: "/api/customer-orders/{{0.id}}" },
],
tables: ["customer_orders"],
},
{
module: "customer-orders",
name: "commandes clients de son magasin et d'un autre",
steps: [
{ method: "PATCH", path: "/api/customer-orders/3/mark-called", body: {} },
{ method: "PATCH", path: "/api/customer-orders/301/mark-called", body: { comment: "" } },
{ method: "PATCH", path: "/api/customer-orders/303/mark-called", body: { comment: "Metz" } },
{ method: "PATCH", path: "/api/customer-orders/300/mark-called", body: { comment: "Épinal" } },
{ method: "PUT", path: "/api/customer-orders/4", body: { status: "Retiré" } },
{ method: "PUT", path: "/api/customer-orders/300", body: { status: "Retiré" } },
{ method: "DELETE", path: "/api/customer-orders/5" },
{ method: "DELETE", path: "/api/customer-orders/300" },
{ method: "DELETE", path: "/api/customer-orders/2" },
{ method: "PUT", path: "/api/customer-orders/9999", body: { status: "x" } },
{ method: "PATCH", path: "/api/customer-orders/9999/mark-called", body: {} },
{ method: "DELETE", path: "/api/customer-orders/9999" },
{ method: "PATCH", path: "/api/customer-orders/abc/mark-called", body: {} },
{ method: "DELETE", path: "/api/customer-orders/abc" },
],
tables: ["customer_orders"],
},
{
module: "customer-orders",
name: "créer et modifier des commandes clients avec des corps invalides",
steps: [
{ method: "POST", path: "/api/customer-orders", body: {} },
{ method: "POST", path: "/api/customer-orders", body: { orderTaker: "Léa", customerName: "Texte", customerPhone: "06", productDesignation: "Pelle", gencode: "1", supplierId: 4, groupId: "1" } },
{ method: "POST", path: "/api/customer-orders", body: { orderTaker: "Léa", customerName: "Épinal", customerPhone: "06", productDesignation: "Pelle", gencode: "1", supplierId: 4, groupId: 3 } },
{ method: "POST", path: "/api/customer-orders", body: { orderTaker: "Léa", customerName: "Horodatage", customerPhone: "06", productDesignation: "Pelle", gencode: "1", supplierId: 4, groupId: 1, notifiedAt: "{{today}}" } },
{ method: "POST", path: "/api/customer-orders", body: { orderTaker: "Léa", customerName: "Fournisseur absent", customerPhone: "06", productDesignation: "Pelle", gencode: "1", supplierId: 999, groupId: 1 } },
{ method: "PUT", path: "/api/customer-orders/1", body: { quantity: "abc" } },
{ method: "PUT", path: "/api/customer-orders/1", body: { createdAt: "{{today}}" } },
{ method: "PUT", path: "/api/customer-orders/1", body: { deposit: "12,5" } },
{ method: "PUT", path: "/api/customer-orders/1", body: { updatedAt: "2020-01-01", inconnu: 1, notes: ["a", "b"] } },
{ method: "PUT", path: "/api/customer-orders/2", body: {} },
],
tables: ["customer_orders"],
},
// ---------- SAV ----------
{
module: "sav",
name: "créer un ticket SAV, le modifier, le commenter, le supprimer",
steps: [
{
method: "POST", path: "/api/sav/tickets", body: {
supplierId: 3, groupId: 1, productGencode: "3245678901241", productReference: "PS-18", productDesignation: "Perceuse sans fil",
problemType: "defectueux", problemDescription: "Batterie HS", priority: "haute", status: "nouveau", createdBy: "1",
clientName: "M. Laurent", clientPhone: "06 22 22 22 22",
},
},
{ method: "PATCH", path: "/api/sav/tickets/{{0.id}}", body: { status: "en_cours", priority: "critique", resolutionDescription: "Pièce commandée" } },
{ method: "POST", path: "/api/sav/tickets/{{0.id}}/history", body: { description: "Appel au fournisseur" } },
{ method: "GET", path: "/api/sav/tickets/{{0.id}}" },
{ method: "POST", path: "/api/sav/tickets", body: { supplierId: 4, productGencode: "1", productDesignation: "Second ticket", problemDescription: "Sans magasin choisi" } },
{ method: "GET", path: "/api/sav/stats" },
{ method: "DELETE", path: "/api/sav/tickets/{{0.id}}" },
{ method: "DELETE", path: "/api/sav/tickets/{{4.id}}" },
],
tables: ["sav_tickets"],
},
{
module: "sav",
name: "tickets SAV de son magasin et d'un autre",
steps: [
{ method: "PATCH", path: "/api/sav/tickets/1", body: { status: "resolu" } },
{ method: "PATCH", path: "/api/sav/tickets/3", body: { priority: "haute" } },
{ method: "PATCH", path: "/api/sav/tickets/300", body: { status: "ferme" } },
{ method: "POST", path: "/api/sav/tickets/2/history", body: { description: "Relance" } },
{ method: "POST", path: "/api/sav/tickets/3/history", body: { description: "Metz" } },
{ method: "POST", path: "/api/sav/tickets/300/history", body: {} },
{ method: "DELETE", path: "/api/sav/tickets/302" },
{ method: "DELETE", path: "/api/sav/tickets/300" },
{ method: "PATCH", path: "/api/sav/tickets/9999", body: {} },
{ method: "POST", path: "/api/sav/tickets/9999/history", body: {} },
{ method: "DELETE", path: "/api/sav/tickets/9999" },
{ method: "PATCH", path: "/api/sav/tickets/abc", body: {} },
{ method: "DELETE", path: "/api/sav/tickets/abc" },
],
tables: ["sav_tickets"],
},
{
module: "sav",
name: "créer et modifier des tickets SAV avec des corps invalides",
steps: [
{ method: "POST", path: "/api/sav/tickets", body: {} },
{ method: "POST", path: "/api/sav/tickets", body: { supplierId: null, groupId: "2", productGencode: 12, productDesignation: "x".repeat(501), problemType: "casse", problemDescription: "x", priority: "urgente", status: "ouvert" } },
{ method: "POST", path: "/api/sav/tickets", body: { supplierId: 1, groupId: 3, productGencode: "1", productDesignation: "Épinal", problemDescription: "Autre magasin" } },
{ method: "POST", path: "/api/sav/tickets", body: { supplierId: 1, groupId: 99, productGencode: "1", productDesignation: "Magasin inconnu", problemDescription: "x" } },
{ method: "POST", path: "/api/sav/tickets", body: { supplierId: 999, groupId: 1, productGencode: "1", productDesignation: "Fournisseur inconnu", problemDescription: "x", ticketNumber: "SAV-PIRATE", createdAt: "2020-01-01" } },
{ method: "PATCH", path: "/api/sav/tickets/1", body: { status: "inconnu", priority: 3 } },
{ method: "PATCH", path: "/api/sav/tickets/1", body: { supplierId: 999 } },
{ method: "PATCH", path: "/api/sav/tickets/2", body: { groupId: 3, createdBy: "pirate", clientName: null, ticketNumber: "SAV-PIRATE" } },
{ method: "PATCH", path: "/api/sav/tickets/2", body: {} },
],
tables: ["sav_tickets"],
},
];