FakeCalendarBridge.kt
42 lignes · 1817 octets
package fr.ebii.card2vcf.sync /** Fake [CalendarBridgeApi] en mémoire (sans `ContentResolver`) pour tester le pont Agenda↔Room. */ class FakeCalendarBridge : CalendarBridgeApi { private val calendars = mutableMapOf<String, Long>() private val events = mutableMapOf<Long, MutableMap<Long, CalendarEventSnapshot>>() private var nextCalendarId = 1L private var nextEventId = 1L val deletedEventIds = mutableListOf<Long>() val deletedCalendarIds = mutableListOf<Long>() /** Simule une permission Agenda révoquée : [deleteCalendar] lève cette exception si non nulle. */ var deleteCalendarFailure: Exception? = null override fun ensureLocalCalendar(displayName: String): Long = calendars.getOrPut(displayName) { nextCalendarId++ } override fun deleteCalendar(calendarId: Long) { deleteCalendarFailure?.let { throw it } deletedCalendarIds += calendarId calendars.entries.removeAll { it.value == calendarId } events.remove(calendarId) } override fun listEvents(calendarId: Long): List<CalendarEventSnapshot> = events[calendarId]?.values?.toList() ?: emptyList() override fun upsertEvent(calendarId: Long, snap: CalendarEventSnapshot): Long { val calendarEvents = events.getOrPut(calendarId) { mutableMapOf() } val eventId = snap.eventId ?: nextEventId++ calendarEvents[eventId] = snap.copy(eventId = eventId) return eventId } override fun deleteEvent(eventId: Long) { deletedEventIds += eventId events.values.forEach { it.remove(eventId) } } /** Simule un événement déjà présent dans l'app Agenda système (ajout hors [upsertEvent]). */ fun seedEvent(calendarId: Long, snap: CalendarEventSnapshot): Long = upsertEvent(calendarId, snap) }
GitRust