CalendarBindingsStoreTest.swift
103 lignes · 3401 octets
import XCTest @testable import Card2vcf final class CalendarBindingsStoreTest: XCTestCase { private static let suiteName = "card2vcf_calendar_bindings_test" private var defaults: UserDefaults! private var store: CalendarBindingsStore! override func setUp() { super.setUp() defaults = UserDefaults(suiteName: Self.suiteName) defaults.removePersistentDomain(forName: Self.suiteName) store = CalendarBindingsStore(defaults: defaults) } override func tearDown() { defaults.removePersistentDomain(forName: Self.suiteName) super.tearDown() } func testInitiallyEmpty() { XCTAssertTrue(store.list().isEmpty) } func testUpsertRoundTrip() { let binding = CalendarBinding(kind: "rdv", displayName: "Mes RDV", androidCalendarId: 42) store.upsert(binding) XCTAssertEqual([binding], store.list()) } func testUpsertReplacesExistingBindingWithSameKindAndServerResourceId() { let original = CalendarBinding( kind: "salle", serverResourceId: "salle-1", displayName: "Salle A", androidCalendarId: 1 ) var renamed = original renamed.displayName = "Salle A (renommée)" renamed.androidCalendarId = 2 store.upsert(original) store.upsert(renamed) XCTAssertEqual([renamed], store.list()) } func testUpsertKeepsDistinctBindingsByKindAndServerResourceId() { let rdv = CalendarBinding(kind: "rdv", displayName: "Mes RDV") let salle = CalendarBinding(kind: "salle", serverResourceId: "salle-1", displayName: "Salle A") let materiel = CalendarBinding(kind: "materiel", serverResourceId: "materiel-1", displayName: "Matériel A") store.upsert(rdv) store.upsert(salle) store.upsert(materiel) XCTAssertEqual(3, store.list().count) XCTAssertTrue(store.list().contains(rdv)) XCTAssertTrue(store.list().contains(salle)) XCTAssertTrue(store.list().contains(materiel)) } func testRemoveDeletesMatchingBinding() { let salle = CalendarBinding(kind: "salle", serverResourceId: "salle-1", displayName: "Salle A") store.upsert(salle) store.remove(kind: "salle", serverResourceId: "salle-1") XCTAssertTrue(store.list().isEmpty) } func testRemoveOnlyAffectsMatchingKindAndServerResourceId() { let salleA = CalendarBinding(kind: "salle", serverResourceId: "salle-1", displayName: "Salle A") let salleB = CalendarBinding(kind: "salle", serverResourceId: "salle-2", displayName: "Salle B") store.upsert(salleA) store.upsert(salleB) store.remove(kind: "salle", serverResourceId: "salle-1") XCTAssertEqual([salleB], store.list()) } func testRemoveWithNilServerResourceIdTargetsRdvBinding() { let rdv = CalendarBinding(kind: "rdv", displayName: "Mes RDV") store.upsert(rdv) store.remove(kind: "rdv", serverResourceId: nil) XCTAssertTrue(store.list().isEmpty) } func testClearRemovesAllBindings() { store.upsert(CalendarBinding(kind: "rdv", displayName: "Mes RDV")) store.upsert(CalendarBinding(kind: "salle", serverResourceId: "salle-1", displayName: "Salle A")) store.clear() XCTAssertTrue(store.list().isEmpty) } }
GitRust