-
Notifications
You must be signed in to change notification settings - Fork 0
Test Fixtures
Ali Sadeghi edited this page Feb 5, 2026
·
7 revisions
Generates comprehensive test fixtures for domain models AND UI test fixtures.
Spawned by: feature-test command
object LoginFixtures {
// Core factories
fun createUser(
id: String = "user-123",
name: String = "Test User",
email: String = "test@example.com"
) = User(id, name, email)
fun createUserList(count: Int = 3) =
(1..count).map { createUser(id = "id-$it") }
// Edge cases (MANDATORY)
fun createUserWithNullOptionals() = createUser(name = null)
fun createUserWithEmptyStrings() = createUser(name = "")
fun createUserWithSpecialCharacters() = createUser(name = "Test's \"User\" <>&")
fun createUserWithUnicode() = createUser(name = "Test 日本語 emoji")
// Error helpers (using ErrorConst)
val networkError = ErrorConst.NoNetwork
val unauthorizedError = ErrorConst.Unauthorized
val serverError = ErrorConst.ServerUnknownError(500)
val notFoundError = ErrorModel.MessageCode("Not found", 404)
// Either helpers
fun createSuccessUser() = Either.Success(createUser())
fun createFailureUser(error: ErrorModel = networkError) = Either.Failure(error)
// JSON responses (for MockEngine)
val validUserJson = """{"id": "user-123", "name": "Test User"}"""
val error401Json = """{"detail": "Unauthorized", "code": null}"""
val error500Json = """{"detail": "Server error", "code": 5001}"""
}object LoginUiFixtures {
// 4 mandatory states
fun createUninitializedState() = LoginUiModel(state = UiState.Uninitialized)
fun createLoadingState() = LoginUiModel(state = UiState.Loading)
fun createSuccessState() = LoginUiModel(state = UiState.Success(LoginFixtures.createUser()))
fun createEmptyState() = LoginUiModel(state = UiState.Success(emptyList()))
fun createErrorState(msg: String = "Error") = LoginUiModel(state = UiState.Failed(ErrorModel.Message(msg)))
// Error variations (using ErrorConst messages)
fun createNetworkErrorState() = createErrorState("Error, Check your connection and try again.")
fun createUnauthorizedErrorState() = createErrorState("You must login (#1001)")
fun createServerErrorState() = createErrorState("An unknown network error has occurred! (#500)")
}- All fixtures use
ErrorConstfrom{CORE_DATA_PKG}for consistent error handling - Edge case factories are mandatory (null optionals, empty strings, unicode, etc.)
- JSON responses match
NetworkErrorModelformat:{"detail": "...", "code": ...} - UI fixtures cover all 4 states: Uninitialized, Loading, Success, Failed
Back to Testing Agents | Agents