FakeAilianceApi.kt
248 lignes · 12102 octets
package fr.ebii.card2vcf.sync /** * Fake [AilianceApi] configurable par test ; par défaut tout répond Ok vide. * Partagé par tous les tests qui en ont besoin. * * Deux champs permettent de surcharger les réponses critiques pour [SettingsViewModelTest] : * - [authCleOverride] : si non null, remplace la réponse par défaut de [authCle]. * - [getRessourcesCatalogueOverride] : si non null, remplace [getRessourcesCatalogue]. */ class FakeAilianceApi : AilianceApi { /** Si non null, [authCle] retourne cette valeur au lieu du Ok par défaut. */ var authCleOverride: AilianceApiClient.ApiResult<AuthCleResponse>? = null /** Si non null, [getRessourcesCatalogue] retourne cette valeur au lieu du Ok vide par défaut. */ var getRessourcesCatalogueOverride: AilianceApiClient.ApiResult<RessourcesCatalogueDto>? = null var statusResult: AilianceApiClient.ApiResult<SyncStatusResponse> = AilianceApiClient.ApiResult.Ok(SyncStatusResponse("1970-01-01T00:00:00Z", SyncChanges(), 0)) var pullResult: AilianceApiClient.ApiResult<SyncPullResponse> = AilianceApiClient.ApiResult.Ok(SyncPullResponse(serverTime = "1970-01-01T00:00:00Z")) var createContactResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("""{"id":"srv-generated"}""") val createContactCalls = mutableListOf<String>() var createReservationResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("""{"id":"resa-generated"}""") var updateReservationResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("{}") val createReservationCalls = mutableListOf<Triple<String, String, String>>() var createRdvResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("""{"id":"rdv-generated"}""") val createRdvCalls = mutableListOf<String>() var createProjetResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("""{"id":"projet-generated"}""") val createProjetCalls = mutableListOf<String>() var statusQueries = mutableListOf<String?>() var pullQueries = mutableListOf<String?>() val pullSince = mutableListOf<String>() override fun authCle(nom: String, motDePasse: String) = authCleOverride ?: AilianceApiClient.ApiResult.Ok(AuthCleResponse(nom, "", "", "argon2id", "xchacha20poly1305")) override fun syncStatus(sinceIso: String, ressourcesQuery: String?): AilianceApiClient.ApiResult<SyncStatusResponse> { statusQueries += ressourcesQuery return statusResult } override fun syncPull(sinceIso: String, ressourcesQuery: String?): AilianceApiClient.ApiResult<SyncPullResponse> { pullQueries += ressourcesQuery pullSince += sinceIso return pullResult } override fun createContact(jsonBody: String): AilianceApiClient.ApiResult<String> { createContactCalls += jsonBody return createContactResult } override fun updateContact(id: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") override fun deleteContact(id: String) = AilianceApiClient.ApiResult.Ok(Unit) override fun createEntreprise(jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") override fun updateEntreprise(id: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") override fun deleteEntreprise(id: String) = AilianceApiClient.ApiResult.Ok(Unit) override fun createProjet(jsonBody: String): AilianceApiClient.ApiResult<String> { createProjetCalls += jsonBody return createProjetResult } override fun updateProjet(id: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") override fun deleteProjet(id: String) = AilianceApiClient.ApiResult.Ok(Unit) override fun createTache(projetId: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") override fun updateTache(projetId: String, tacheId: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") override fun deleteTache(projetId: String, tacheId: String) = AilianceApiClient.ApiResult.Ok(Unit) override fun moveTache(projetId: String, tacheId: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") /** Bascules reçues : `(projetId, tacheId, sousTacheId)`. */ val toggleSousTacheCalls = mutableListOf<Triple<String, String, String>>() override fun toggleSousTache( projetId: String, tacheId: String, sousTacheId: String, ): AilianceApiClient.ApiResult<String> { toggleSousTacheCalls += Triple(projetId, tacheId, sousTacheId) return AilianceApiClient.ApiResult.Ok("{}") } var createInteractionResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("""{"id":"interaction-generated"}""") val createInteractionCalls = mutableListOf<Pair<String, String>>() // contactId, jsonBody override fun createInteraction(contactId: String, jsonBody: String): AilianceApiClient.ApiResult<String> { createInteractionCalls += contactId to jsonBody return createInteractionResult } var deleteInteractionResult: AilianceApiClient.ApiResult<Unit> = AilianceApiClient.ApiResult.Ok(Unit) val deleteInteractionCalls = mutableListOf<String>() // iid override fun deleteInteraction(iid: String): AilianceApiClient.ApiResult<Unit> { deleteInteractionCalls += iid return deleteInteractionResult } var relancerTranscriptionInteractionResult: AilianceApiClient.ApiResult<Unit> = AilianceApiClient.ApiResult.Ok(Unit) val relancerTranscriptionInteractionCalls = mutableListOf<Pair<String, String>>() // contactServerId, iid override fun relancerTranscriptionInteraction(contactServerId: String, iid: String): AilianceApiClient.ApiResult<Unit> { relancerTranscriptionInteractionCalls += contactServerId to iid return relancerTranscriptionInteractionResult } var relancerTranscriptionNoteResult: AilianceApiClient.ApiResult<Unit> = AilianceApiClient.ApiResult.Ok(Unit) val relancerTranscriptionNoteCalls = mutableListOf<Pair<String, String>>() // projetServerId, nid override fun relancerTranscriptionNote(projetServerId: String, nid: String): AilianceApiClient.ApiResult<Unit> { relancerTranscriptionNoteCalls += projetServerId to nid return relancerTranscriptionNoteResult } override fun listRdv() = AilianceApiClient.ApiResult.Ok(emptyList<RendezVousDto>()) override fun createRdv(jsonBody: String): AilianceApiClient.ApiResult<String> { createRdvCalls += jsonBody return createRdvResult } override fun getRdv(id: String) = error("not used") override fun updateRdv(id: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}") override fun deleteRdv(id: String) = AilianceApiClient.ApiResult.Ok(Unit) override fun getRessourcesCatalogue() = getRessourcesCatalogueOverride ?: AilianceApiClient.ApiResult.Ok(RessourcesCatalogueDto()) override fun listReservations(genre: String, resourceId: String) = AilianceApiClient.ApiResult.Ok(emptyList<ReservationDto>()) override fun createReservation(genre: String, resourceId: String, jsonBody: String): AilianceApiClient.ApiResult<String> { createReservationCalls += Triple(genre, resourceId, jsonBody) return createReservationResult } override fun updateReservation(genre: String, resourceId: String, reservationId: String, jsonBody: String) = updateReservationResult val deleteReservationCalls = mutableListOf<Triple<String, String, String>>() override fun deleteReservation(genre: String, resourceId: String, reservationId: String): AilianceApiClient.ApiResult<Unit> { deleteReservationCalls += Triple(genre, resourceId, reservationId) return AilianceApiClient.ApiResult.Ok(Unit) } override fun listIndisponibilites(genre: String, resourceId: String) = AilianceApiClient.ApiResult.Ok(emptyList<IndisponibiliteDto>()) var uploadCarteResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("{}") var uploadPhotoResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("{}") val uploadCarteCalls = mutableListOf<Pair<String, Int>>() val uploadPhotoCalls = mutableListOf<Pair<String, Int>>() var downloadCarteResult: AilianceApiClient.ApiResult<ByteArray> = AilianceApiClient.ApiResult.Err(404, "absent") var downloadPhotoResult: AilianceApiClient.ApiResult<ByteArray> = AilianceApiClient.ApiResult.Err(404, "absent") val downloadCarteCalls = mutableListOf<String>() val downloadPhotoCalls = mutableListOf<String>() override fun uploadContactCarte( id: String, bytes: ByteArray, filename: String, contentType: String, ): AilianceApiClient.ApiResult<String> { uploadCarteCalls += id to bytes.size return uploadCarteResult } override fun uploadContactPhoto( id: String, bytes: ByteArray, filename: String, contentType: String, ): AilianceApiClient.ApiResult<String> { uploadPhotoCalls += id to bytes.size return uploadPhotoResult } override fun downloadContactCarte(id: String): AilianceApiClient.ApiResult<ByteArray> { downloadCarteCalls += id return downloadCarteResult } override fun downloadContactPhoto(id: String): AilianceApiClient.ApiResult<ByteArray> { downloadPhotoCalls += id return downloadPhotoResult } var uploadInteractionAudioResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("{}") val uploadInteractionAudioCalls = mutableListOf<Triple<String, String, Int>>() // contactId, iid, bytes size override fun uploadInteractionAudio( contactId: String, iid: String, bytes: ByteArray, filename: String, contentType: String, ): AilianceApiClient.ApiResult<String> { uploadInteractionAudioCalls += Triple(contactId, iid, bytes.size) return uploadInteractionAudioResult } override fun downloadInteractionAudio(contactId: String, iid: String): AilianceApiClient.ApiResult<ByteArray> = AilianceApiClient.ApiResult.Err(404, "absent") var createNoteProjetResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("""{"id":"note-generated"}""") val createNoteProjetCalls = mutableListOf<Pair<String, String>>() // projetId, jsonBody override fun createNoteProjet(projetId: String, jsonBody: String): AilianceApiClient.ApiResult<String> { createNoteProjetCalls += projetId to jsonBody return createNoteProjetResult } val updateNoteProjetCalls = mutableListOf<Triple<String, String, String>>() // projetId, nid, jsonBody override fun updateNoteProjet(projetId: String, nid: String, jsonBody: String): AilianceApiClient.ApiResult<String> { updateNoteProjetCalls += Triple(projetId, nid, jsonBody) return AilianceApiClient.ApiResult.Ok("{}") } val deleteNoteProjetCalls = mutableListOf<Pair<String, String>>() // projetId, nid override fun deleteNoteProjet(projetId: String, nid: String): AilianceApiClient.ApiResult<Unit> { deleteNoteProjetCalls += projetId to nid return AilianceApiClient.ApiResult.Ok(Unit) } var uploadNoteAudioResult: AilianceApiClient.ApiResult<String> = AilianceApiClient.ApiResult.Ok("{}") val uploadNoteAudioCalls = mutableListOf<Triple<String, String, Int>>() // projetId, nid, bytes size override fun uploadNoteAudio( projetId: String, nid: String, bytes: ByteArray, filename: String, contentType: String, ): AilianceApiClient.ApiResult<String> { uploadNoteAudioCalls += Triple(projetId, nid, bytes.size) return uploadNoteAudioResult } override fun downloadNoteAudio(projetId: String, nid: String): AilianceApiClient.ApiResult<ByteArray> = AilianceApiClient.ApiResult.Err(404, "absent") }
GitRust