Skip to content

Test Fixtures

Ali Sadeghi edited this page Feb 5, 2026 · 7 revisions

Test Fixtures Agent

Generates comprehensive test fixtures for domain models AND UI test fixtures.

Spawned by: Feature-Test command

What It Generates

1. Domain Fixtures ({Feature}Fixtures.kt)

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}"""
}

2. UI Fixtures ({Feature}UiFixtures.kt)

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)")
}

Key Features

  • All fixtures use ErrorConst from {CORE_DATA_PKG} for consistent error handling
  • Edge case factories are mandatory (null optionals, empty strings, unicode, etc.)
  • JSON responses match NetworkErrorModel format: {"detail": "...", "code": ...}
  • UI fixtures cover all 4 states: Uninitialized, Loading, Success, Failed

Back to Testing-Agents | Agents

Clone this wiki locally