ApercuTacheTest.swift
74 lignes · 2866 octets
import XCTest @testable import Card2vcf /// Logique d'affichage de la carte kanban, extraite de la vue pour être /// testable — même principe que `KanbanFilter`. Miroir de `ApercuTacheTest.kt`. final class ApercuTacheTest: XCTestCase { private func tache( debut: String? = nil, duree: Int? = nil, etiquette: String? = nil, sousTaches: String = "[]" ) -> TacheEntity { TacheEntity( localId: 1, titre: "T", debut: debut, dureeJours: duree, etiquette: etiquette, sousTachesJson: sousTaches ) } func testPeriodeEnJoursOuvresDuProjet() { // Vendredi 2026-01-09 + 3 jours ouvrés. let t = tache(debut: "2026-01-09", duree: 3) XCTAssertEqual("09/01 → 13/01", ApercuTache.periode(t, joursOuvres: 5)) XCTAssertEqual("09/01 → 11/01", ApercuTache.periode(t, joursOuvres: 7)) } func testPasDePeriodeSansDate() { XCTAssertNil(ApercuTache.periode(tache(duree: 3), joursOuvres: 5)) } func testUneDateIllisibleNeFaitPasTomberLEcran() { XCTAssertNil(ApercuTache.periode(tache(debut: "pas-une-date"), joursOuvres: 5)) } func testAvancementDesSousTaches() { let json = #"[{"id":"a","titre":"A","fait":true},{"id":"b","titre":"B","fait":false}]"# let avancement = ApercuTache.avancement(tache(sousTaches: json)) XCTAssertEqual(1, avancement?.faites) XCTAssertEqual(2, avancement?.total) XCTAssertNil(ApercuTache.avancement(tache()), "aucune sous-tâche = rien à afficher") } func testSousTachesIllisiblesIgnorees() { XCTAssertNil(ApercuTache.avancement(tache(sousTaches: "{pas du json"))) } func testRetardMesureContreLEcheance() { let t = tache(debut: "2026-01-09", duree: 3) // finit le 13 en rythme 5 XCTAssertTrue(ApercuTache.enRetard(t, joursOuvres: 5, echeance: "2026-01-12")) XCTAssertFalse(ApercuTache.enRetard(t, joursOuvres: 5, echeance: "2026-01-13")) XCTAssertFalse(ApercuTache.enRetard(t, joursOuvres: 5, echeance: nil)) XCTAssertFalse(ApercuTache.enRetard(tache(), joursOuvres: 5, echeance: "2026-01-01")) } func testCouleurSuitLEtiquette() { XCTAssertEqual("#8B5CF6", ApercuTache.couleur(tache(etiquette: "câblage"))) XCTAssertNil(ApercuTache.couleur(tache())) } func testReglagesDUnProjetSansPlanification() { XCTAssertEqual(ReglagesPlanification(), ReglagesPlanification.de(nil)) var projet = ProjetEntity() projet.planification = true projet.joursOuvres = 5 projet.echeance = "2026-09-30" XCTAssertEqual( ReglagesPlanification(active: true, joursOuvres: 5, echeance: "2026-09-30"), ReglagesPlanification.de(projet) ) } }
GitRust