Add photo upload failure details
This commit is contained in:
@@ -39,4 +39,16 @@ class ApiErrorMapperTest {
|
||||
assertTrue(error.retryable)
|
||||
assertEquals("Serwer nie potwierdził operacji. Aplikacja spróbuje ponownie.", error.message)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun keepsRawServerResponseForTroubleshooting() {
|
||||
val body = """{"code":"PHOTO_SERVER_UNAVAILABLE","message":"Storage timeout","retryable":true}"""
|
||||
val error = ApiErrorMapper.mapHttpStatus(503, body)
|
||||
|
||||
assertEquals(ApiErrorKind.Server, error.kind)
|
||||
assertEquals(503, error.statusCode)
|
||||
assertEquals("PHOTO_SERVER_UNAVAILABLE", error.code)
|
||||
assertEquals("Storage timeout", error.message)
|
||||
assertEquals(body, error.responseBody)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package pl.firmatpp.kierowca.data.upload
|
||||
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import pl.firmatpp.kierowca.data.ApiError
|
||||
import pl.firmatpp.kierowca.data.ApiErrorKind
|
||||
|
||||
class PhotoUploadFailureDetailsTest {
|
||||
@Test
|
||||
fun describesServerFailureWithStatusCodeBackendCodeAndResponseBody() {
|
||||
val details = PhotoUploadFailureDetails.fromApiError(
|
||||
ApiError(
|
||||
kind = ApiErrorKind.Server,
|
||||
message = "Storage timeout",
|
||||
retryable = true,
|
||||
code = "PHOTO_STORAGE_FAILED",
|
||||
statusCode = 503,
|
||||
responseBody = """{"code":"PHOTO_STORAGE_FAILED","message":"Storage timeout"}""",
|
||||
),
|
||||
)
|
||||
|
||||
assertTrue(details.contains("Typ: błąd serwera"))
|
||||
assertTrue(details.contains("HTTP: 503"))
|
||||
assertTrue(details.contains("Kod: PHOTO_STORAGE_FAILED"))
|
||||
assertTrue(details.contains("Odpowiedź serwera:"))
|
||||
assertTrue(details.contains("Storage timeout"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun describesNetworkFailureWithoutHttpStatus() {
|
||||
val details = PhotoUploadFailureDetails.fromApiError(
|
||||
ApiError(
|
||||
kind = ApiErrorKind.Network,
|
||||
message = "Nie udało się połączyć z serwerem.",
|
||||
retryable = true,
|
||||
),
|
||||
)
|
||||
|
||||
assertTrue(details.contains("Typ: błąd komunikacji"))
|
||||
assertTrue(details.contains("Nie udało się połączyć z serwerem."))
|
||||
assertFalse(details.contains("HTTP:"))
|
||||
}
|
||||
}
|
||||
@@ -111,6 +111,16 @@ class DriverUiRulesTest {
|
||||
assertFalse(canRetryPhotoUpload("CANCELLED"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun showsFailureDetailsOnlyForFailedUploadsWithErrorMessage() {
|
||||
assertTrue(canShowPhotoUploadFailureDetails("FAILED_RETRYABLE", "Typ: błąd serwera"))
|
||||
assertTrue(canShowPhotoUploadFailureDetails("FAILED_PERMANENT", "Typ: błąd aplikacji"))
|
||||
assertFalse(canShowPhotoUploadFailureDetails("FAILED_RETRYABLE", null))
|
||||
assertFalse(canShowPhotoUploadFailureDetails("FAILED_RETRYABLE", ""))
|
||||
assertFalse(canShowPhotoUploadFailureDetails("UPLOADING", "Typ: błąd serwera"))
|
||||
assertFalse(canShowPhotoUploadFailureDetails("CONFIRMED", "Typ: błąd serwera"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun createsFullScreenPreviewForLocalUploadBeforeRouteRefresh() {
|
||||
val photo = localUploadPreviewPhoto(upload(status = "CONFIRMED", serverPhotoId = "55"))
|
||||
|
||||
Reference in New Issue
Block a user