Skip to content

Commit a568bf3

Browse files
Copilothoc081098
andcommitted
Add comprehensive tests for validation error mapping
Co-authored-by: hoc081098 <[email protected]>
1 parent 988da4e commit a568bf3

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

data/src/test/java/com/hoc/flowmvi/data/mapper/UserErrorMapperTest.kt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,52 @@ class UserErrorMapperTest {
171171
)
172172
}
173173

174+
@Test
175+
fun test_validationErrorMapping_withNullData_returnsAllErrors() {
176+
val result = errorMapper(buildHttpException("validation-failed", null))
177+
assertEquals(UserError.ValidationFailed(UserValidationError.VALUES_SET), result)
178+
}
179+
180+
@Test
181+
fun test_validationErrorMapping_withListOfErrors() {
182+
val data = listOf("invalid-email-address", "too-short-first-name")
183+
val result = errorMapper(buildHttpException("validation-failed", data))
184+
assertEquals(
185+
UserError.ValidationFailed(
186+
nonEmptySetOf(
187+
UserValidationError.INVALID_EMAIL_ADDRESS,
188+
UserValidationError.TOO_SHORT_FIRST_NAME,
189+
),
190+
),
191+
result,
192+
)
193+
}
194+
195+
@Test
196+
fun test_validationErrorMapping_withMapContainingErrors() {
197+
val data = mapOf("errors" to listOf("TOO_SHORT_LAST_NAME"))
198+
val result = errorMapper(buildHttpException("validation-failed", data))
199+
assertEquals(
200+
UserError.ValidationFailed(nonEmptySetOf(UserValidationError.TOO_SHORT_LAST_NAME)),
201+
result,
202+
)
203+
}
204+
205+
@Test
206+
fun test_validationErrorMapping_withInvalidData_returnsAllErrors() {
207+
val data = listOf("unknown-error", "another-unknown")
208+
val result = errorMapper(buildHttpException("validation-failed", data))
209+
// Falls back to all errors when none can be parsed
210+
assertEquals(UserError.ValidationFailed(UserValidationError.VALUES_SET), result)
211+
}
212+
213+
@Test
214+
fun test_validationErrorMapping_withMixedCaseErrors() {
215+
val data = listOf("INVALID_EMAIL_ADDRESS", "too-short-first-name", "TOO-SHORT-LAST-NAME")
216+
val result = errorMapper(buildHttpException("validation-failed", data))
217+
assertEquals(UserError.ValidationFailed(UserValidationError.VALUES_SET), result)
218+
}
219+
174220
@Test
175221
fun test_withOtherwiseExceptions_returnsUnexpectedError() {
176222
assertEquals(

0 commit comments

Comments
 (0)