ApercuTacheTest.kt
67 lignes · 2272 octets
package fr.ebii.card2vcf.planning import fr.ebii.card2vcf.data.TacheEntity import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertNull import kotlin.test.assertTrue /** * Logique d'affichage de la carte kanban, extraite du Compose pour être * testable — même principe que `KanbanFilter`. */ class ApercuTacheTest { private fun tache( debut: String? = null, duree: Int? = null, etiquette: String? = null, sousTaches: String = "[]", ) = TacheEntity( localId = 1, titre = "T", debut = debut, dureeJours = duree, etiquette = etiquette, sousTachesJson = sousTaches, ) @Test fun periodeEnJoursOuvresDuProjet() { // Vendredi 2026-01-09 + 3 jours ouvrés. val t = tache(debut = "2026-01-09", duree = 3) assertEquals("09/01 → 13/01", ApercuTache.periode(t, joursOuvres = 5)) assertEquals("09/01 → 11/01", ApercuTache.periode(t, joursOuvres = 7)) } @Test fun pasDePeriodeSansDate() { assertNull(ApercuTache.periode(tache(duree = 3), joursOuvres = 5)) } @Test fun uneDateIllisibleNeFaitPasTomberLEcran() { assertNull(ApercuTache.periode(tache(debut = "pas-une-date"), joursOuvres = 5)) } @Test fun avancementDesSousTaches() { val json = """[{"id":"a","titre":"A","fait":true},{"id":"b","titre":"B","fait":false}]""" assertEquals(1 to 2, ApercuTache.avancement(tache(sousTaches = json))) assertNull(ApercuTache.avancement(tache()), "aucune sous-tâche = rien à afficher") } @Test fun sousTachesIllisiblesIgnorees() { assertNull(ApercuTache.avancement(tache(sousTaches = "{pas du json"))) } @Test fun retardMesureContreLEcheance() { val t = tache(debut = "2026-01-09", duree = 3) // finit le 13 en rythme 5 assertTrue(ApercuTache.enRetard(t, joursOuvres = 5, echeance = "2026-01-12")) assertFalse(ApercuTache.enRetard(t, joursOuvres = 5, echeance = "2026-01-13")) assertFalse(ApercuTache.enRetard(t, joursOuvres = 5, echeance = null)) assertFalse(ApercuTache.enRetard(tache(), joursOuvres = 5, echeance = "2026-01-01")) } }
GitRust