NoteProjetDaoTest.swift
106 lignes · 4072 octets
import XCTest @testable import Card2vcf /// Port de NoteProjetDaoTest Android — exerc\u{e9} via InMemoryCrmDatabase. final class NoteProjetDaoTest: XCTestCase { private var db: InMemoryCrmDatabase! override func setUp() { super.setUp() db = InMemoryCrmDatabase() } func testUpsertInsertEtGetByServerId() async throws { var note = NoteProjetEntity() note.serverId = "n1" note.projetServerId = "p1" note.titre = "Premi\u{e8}re note" note.texte = "Contenu initial" note.auteur = "alice" note.createdAt = 1_000 note.updatedAt = 1_000 let localId = try await db.noteProjetDao.upsert(note) XCTAssertGreaterThan(localId, 0) let found = try await db.noteProjetDao.getByServerId("n1") XCTAssertNotNil(found) XCTAssertEqual("Premi\u{e8}re note", found?.titre) XCTAssertEqual("Contenu initial", found?.texte) XCTAssertEqual("p1", found?.projetServerId) XCTAssertEqual("alice", found?.auteur) } func testUpsertMiseAJour() async throws { var note = NoteProjetEntity() note.serverId = "n2" note.projetServerId = "p1" note.titre = "Titre original" note.texte = "Texte original" note.auteur = "bob" note.createdAt = 500 note.updatedAt = 500 let localId = try await db.noteProjetDao.upsert(note) var updated = note updated.localId = localId updated.titre = "Titre modifi\u{e9}" updated.updatedAt = 600 try await db.noteProjetDao.upsert(updated) let found = try await db.noteProjetDao.getByServerId("n2") XCTAssertEqual("Titre modifi\u{e9}", found?.titre) XCTAssertEqual(600, found?.updatedAt) } func testListByProjetServerId() async throws { var n1 = NoteProjetEntity() n1.serverId = "n1"; n1.projetServerId = "pA"; n1.titre = "A1"; n1.texte = ""; n1.auteur = "x"; n1.createdAt = 1 var n2 = NoteProjetEntity() n2.serverId = "n2"; n2.projetServerId = "pA"; n2.titre = "A2"; n2.texte = ""; n2.auteur = "x"; n2.createdAt = 2 var n3 = NoteProjetEntity() n3.serverId = "n3"; n3.projetServerId = "pB"; n3.titre = "B1"; n3.texte = ""; n3.auteur = "x"; n3.createdAt = 3 try await db.noteProjetDao.upsert(n1) try await db.noteProjetDao.upsert(n2) try await db.noteProjetDao.upsert(n3) let forA = try await db.noteProjetDao.listByProjetServerId("pA") XCTAssertEqual(2, forA.count) XCTAssertTrue(forA.contains { $0.serverId == "n1" }) XCTAssertTrue(forA.contains { $0.serverId == "n2" }) let forB = try await db.noteProjetDao.listByProjetServerId("pB") XCTAssertEqual(1, forB.count) XCTAssertEqual("n3", forB.first?.serverId) } func testDeleteByServerId() async throws { var note = NoteProjetEntity() note.serverId = "n-del"; note.projetServerId = "p1"; note.titre = "T"; note.texte = ""; note.auteur = ""; note.createdAt = 1 try await db.noteProjetDao.upsert(note) try await db.noteProjetDao.deleteByServerId("n-del") let found = try await db.noteProjetDao.getByServerId("n-del") XCTAssertNil(found) } func testAudioPathPreserved() async throws { var note = NoteProjetEntity() note.serverId = "n-audio"; note.projetServerId = "p1"; note.titre = "Avec audio" note.texte = "Texte"; note.auteur = "alice"; note.createdAt = 100; note.updatedAt = 100 note.audioPath = "/local/notes/n-audio.wav" let localId = try await db.noteProjetDao.upsert(note) // Met \u{e0} jour sans changer audioPath var updated = note updated.localId = localId updated.titre = "Titre mis \u{e0} jour" updated.updatedAt = 200 try await db.noteProjetDao.upsert(updated) let found = try await db.noteProjetDao.getByServerId("n-audio") XCTAssertEqual("/local/notes/n-audio.wav", found?.audioPath) } }
GitRust