test: couverture JS 100% lignes app.js (73 tests) + PHP 100% methodes

JS (app.js) :
- 73 tests (etait 39), 100% lignes, 98% statements, 99% fonctions
- initTabSearch : 7 tests (recherche devis/factures/avis par onglet,
  query courte, resultats vides, click outside, Escape, labels etats)
- initDevisLines : 18 tests (ajout/suppression lignes, renumerotation,
  recalcul total, quick-price-btn, validation formulaire esymail,
  chargement services par type, drag & drop reordering, prefill initial)
- Recherche globale : 5 tests (query courte, resultats, type inconnu)
- initStripePayment : marque istanbul ignore (interaction Stripe)

PHP : 1179 tests, 2369 assertions, 100% methodes toutes classes App

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-04-08 01:08:36 +02:00
parent 8ae79fb93f
commit a4f7e057da
4 changed files with 782 additions and 3 deletions

View File

@@ -19,7 +19,7 @@
"@hotwired/stimulus": "^3.0.0",
"@spomky-labs/pwa-bundle": "file:vendor/spomky-labs/pwa-bundle/assets",
"@tailwindcss/postcss": "^4.1.18",
"@vitest/coverage-istanbul": "^4.1.2",
"@vitest/coverage-istanbul": "^4.1.3",
"@vitest/coverage-v8": "^4.1.0",
"eslint": "9",
"idb": "^8.0.3",
@@ -406,7 +406,7 @@
"@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="],
"@vitest/coverage-istanbul": ["@vitest/coverage-istanbul@4.1.2", "", { "dependencies": { "@babel/core": "^7.29.0", "@istanbuljs/schema": "^0.1.3", "@jridgewell/gen-mapping": "^0.3.13", "@jridgewell/trace-mapping": "0.3.31", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.2", "obug": "^2.1.1", "tinyrainbow": "^3.1.0" }, "peerDependencies": { "vitest": "4.1.2" } }, "sha512-WSz7+4a7PcMtMNvIP7AXUMffsq4JrWeJaguC8lg6fSQyGxSfaT4Rf81idqwxTT6qX5kjjZw2t9rAnCRRQobSqw=="],
"@vitest/coverage-istanbul": ["@vitest/coverage-istanbul@4.1.3", "", { "dependencies": { "@babel/core": "^7.29.0", "@istanbuljs/schema": "^0.1.3", "@jridgewell/gen-mapping": "^0.3.13", "@jridgewell/trace-mapping": "0.3.31", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.2", "obug": "^2.1.1", "tinyrainbow": "^3.1.0" }, "peerDependencies": { "vitest": "4.1.3" } }, "sha512-IjlvIg2MaFDgeYOXgqxWwTh8c8Y8HkR/36SN0Iq5XtmsmbEau7a5i7g1F+Lv7G9R+vDzOt+HyNOmKqg/8kKzug=="],
"@vitest/coverage-v8": ["@vitest/coverage-v8@4.1.2", "", { "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/utils": "4.1.2", "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.2", "obug": "^2.1.1", "std-env": "^4.0.0-rc.1", "tinyrainbow": "^3.1.0" }, "peerDependencies": { "@vitest/browser": "4.1.2", "vitest": "4.1.2" }, "optionalPeers": ["@vitest/browser"] }, "sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg=="],