ContactRepositoryTest.swift
50 lignes · 1941 octets
import XCTest @testable import Card2vcf /// Port of the android `ContactRepositoryTest` additions: `updateFromCard` /// must not wipe the sync fields the draft does not carry. final class ContactRepositoryTest: XCTestCase { private var dao: InMemoryCrmContactDao! private var repo: ContactRepository! override func setUp() { super.setUp() dao = InMemoryCrmContactDao() repo = ContactRepository(dao: dao) } func testUpdateFromCardPreservesSyncFields() async throws { let id = try await repo.insertFromCard(ContactCard(fullName: "Ada", company: "Acme")) var stored = try await dao.getById(id)! stored.serverId = "srv-1" stored.entrepriseServerId = "ent-42" stored.statut = "client" stored.etape = "gagne" stored.tags = ["vip"] try await dao.update(stored) try await repo.updateFromCard(id: id, card: ContactCard(fullName: "Ada Lovelace", company: "Acme")) let updated = try await dao.getById(id)! XCTAssertEqual("Ada Lovelace", updated.fullName) XCTAssertEqual("srv-1", updated.serverId) XCTAssertEqual("ent-42", updated.entrepriseServerId) XCTAssertEqual("client", updated.statut) XCTAssertEqual("gagne", updated.etape) XCTAssertEqual(["vip"], updated.tags) } func testUpdateFromCardResetsEntrepriseLinkWhenCompanyChanges() async throws { let id = try await repo.insertFromCard(ContactCard(fullName: "Ada", company: "Acme")) var stored = try await dao.getById(id)! stored.serverId = "srv-1" stored.entrepriseServerId = "ent-42" try await dao.update(stored) try await repo.updateFromCard(id: id, card: ContactCard(fullName: "Ada", company: "Globex")) let updated = try await dao.getById(id)! XCTAssertEqual("srv-1", updated.serverId) XCTAssertNil(updated.entrepriseServerId) } }
GitRust