ContactSyncBadgesTest.swift
53 lignes · 1939 octets
import XCTest @testable import Card2vcf final class ContactSyncBadgesTest: XCTestCase { private let contact = CrmContactEntity(id: 1, fullName: "Ada", serverId: "srv-1") func testPendingWhenCreateOpMatchesByLocalId() { let ops = [SyncOpEntity(entityType: "contact", op: "create", localId: 1)] XCTAssertEqual( [1: ContactSyncBadge.pending], ContactSyncBadges.compute(contacts: [contact], ops: ops) ) } func testPendingWhenUpdateOpMatchesByServerId() { let ops = [SyncOpEntity(entityType: "contact", op: "update", serverId: "srv-1")] XCTAssertEqual( [1: ContactSyncBadge.pending], ContactSyncBadges.compute(contacts: [contact], ops: ops) ) } func testErrorWinsOverPending() { let ops = [ SyncOpEntity(id: 1, entityType: "contact", op: "create", localId: 1), SyncOpEntity(id: 2, entityType: "contact", op: "update", serverId: "srv-1", lastError: "HTTP 500"), ] XCTAssertEqual( [1: ContactSyncBadge.error], ContactSyncBadges.compute(contacts: [contact], ops: ops) ) } func testContactWithoutOpHasNoBadge() { let ops = [SyncOpEntity(entityType: "contact", op: "create", localId: 99)] XCTAssertTrue(ContactSyncBadges.compute(contacts: [contact], ops: ops).isEmpty) } func testNonContactOpsAreIgnored() { let ops = [SyncOpEntity(entityType: "projet", op: "create", localId: 1)] XCTAssertTrue(ContactSyncBadges.compute(contacts: [contact], ops: ops).isEmpty) } func testMediaOpsCountAsContactOps() { let ops = [ SyncOpEntity(entityType: "contact_media", op: "create", localId: 1, serverId: "srv-1"), ] XCTAssertEqual( [1: ContactSyncBadge.pending], ContactSyncBadges.compute(contacts: [contact], ops: ops) ) } }
GitRust