TachePayloadPlanificationTest.swift
66 lignes · 2604 octets
import XCTest @testable import Card2vcf /// Miroir de `UpdateTacheRequestTest.kt`. /// /// Le serveur applique « absent = ne pas toucher, `null` = effacer ». Ce test /// fige les deux faces de ce contrat : les champs que le mobile n'édite pas /// doivent rester **hors** du JSON, et un champ vidé doit partir à `null`. /// /// `ProjetDetailViewModel` est `@MainActor` : ses membres statiques le sont aussi. @MainActor final class TachePayloadPlanificationTest: XCTestCase { private func payloadMaj( debut: String? = nil, dureeJours: Int? = nil, etiquette: String? = nil ) -> String { ProjetDetailViewModel.updateTachePayload( titre: "Câblage", description: "", assigneA: "alice", debut: debut, dureeJours: dureeJours, etiquette: etiquette ) } func testNEnvoieJamaisLesChampsQuIlNEditePas() { let json = payloadMaj() // Ces champs existent côté serveur mais ne sont pas édités sur mobile : // les omettre est ce qui les préserve. XCTAssertFalse(json.contains("sous_taches"), "les sous-tâches seraient écrasées : \(json)") XCTAssertFalse(json.contains("depend_de"), "les dépendances seraient écrasées : \(json)") XCTAssertFalse(json.contains("parent_id"), "le regroupement serait écrasé : \(json)") } func testPorteLaPlanificationQuandElleEstRenseignee() { let json = payloadMaj(debut: "2026-07-22", dureeJours: 3, etiquette: "câblage") XCTAssertTrue(json.contains(#""debut":"2026-07-22""#), json) XCTAssertTrue(json.contains(#""duree_jours":3"#), json) XCTAssertTrue(json.contains(#""etiquette":"câblage""#), json) XCTAssertTrue(json.contains(#""assigne_a_pose":true"#), json) } func testUnChampVideEstEnvoyeANullPourEffacer() { let json = payloadMaj() XCTAssertTrue(json.contains(#""debut":null"#), json) XCTAssertTrue(json.contains(#""etiquette":null"#), json) } func testLaCreationPorteAussiLaPlanification() { let json = ProjetDetailViewModel.createTachePayload( titre: "Câblage", description: "", colonneId: "explorer", assigneA: nil, debut: "2026-07-22", dureeJours: 3, etiquette: "câblage" ) XCTAssertTrue(json.contains(#""colonne_id":"explorer""#), json) XCTAssertTrue(json.contains(#""debut":"2026-07-22""#), json) XCTAssertTrue(json.contains(#""duree_jours":3"#), json) } }
GitRust