FakeAilianceApi.kt 124 lignes · 6484 octets
package fr.ebii.card2vcf.sync

/** Fake [AilianceApi] configurable par test ; par défaut tout répond Ok vide. Partagé par [SyncEngineTest] et [AgendaSyncEngineTest]. */
class FakeAilianceApi : AilianceApi {
    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 statusQueries = mutableListOf<String?>()
    var pullQueries = mutableListOf<String?>()

    override fun authCle(nom: String, motDePasse: String) =
        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
        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.Ok("{}")
    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("{}")
    override fun createInteraction(contactId: String, jsonBody: String) = AilianceApiClient.ApiResult.Ok("{}")
    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() = 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
    }
}