UpdateTacheRequestTest.kt
72 lignes · 2703 octets
package fr.ebii.card2vcf.sync import kotlinx.serialization.encodeToString import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertTrue /** * Forme du payload d'édition de tâche. * * Le serveur applique une sémantique partielle : champ **absent** = laisser tel * quel, `null` = effacer. Ce test fige les deux conséquences qui comptent — * ce que le téléphone envoie, et surtout ce qu'il n'envoie **pas**. */ class UpdateTacheRequestTest { @Test fun nEnvoieJamaisLesChampsQuIlNEditePas() { val json = syncJson.encodeToString( UpdateTacheRequest(titre = "Câblage", assigneA = "alice"), ) // Ces champs existent côté serveur mais ne sont pas édités sur mobile : // les omettre est ce qui les préserve. assertFalse(json.contains("sous_taches"), "les sous-tâches seraient écrasées : $json") assertFalse(json.contains("depend_de"), "les dépendances seraient écrasées : $json") assertFalse(json.contains("parent_id"), "le regroupement serait écrasé : $json") } @Test fun transporteLaPlanificationEditee() { val json = syncJson.encodeToString( UpdateTacheRequest( titre = "Câblage", assigneA = "alice", debut = "2026-07-22", dureeJours = 3, etiquette = "câblage", ), ) assertTrue(json.contains("\"debut\":\"2026-07-22\""), json) assertTrue(json.contains("\"duree_jours\":3"), json) assertTrue(json.contains("\"etiquette\":\"câblage\""), json) assertTrue(json.contains("\"assigne_a_pose\":true"), json) } /** Vider un champ dans le dialogue doit effacer la valeur, pas la conserver. */ @Test fun unChampVideEstEnvoyeANullPourEffacer() { val json = syncJson.encodeToString( UpdateTacheRequest(titre = "Câblage", debut = null, dureeJours = null), ) assertTrue(json.contains("\"debut\":null"), json) assertTrue(json.contains("\"duree_jours\":null"), json) } @Test fun laCreationTransporteAussiLaPlanification() { val json = syncJson.encodeToString( CreateTacheRequest( titre = "Câblage", colonneId = "cadrer", debut = "2026-07-22", dureeJours = 2, etiquette = "essais", ), ) assertTrue(json.contains("\"colonne_id\":\"cadrer\""), json) assertTrue(json.contains("\"debut\":\"2026-07-22\""), json) assertEquals(true, json.contains("\"duree_jours\":2"), json) } }
GitRust