Coverage Summary for Class: CreateWorkspaceError (com.georgeci.moneysurfer.domain.usecase)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| CreateWorkspaceError$LocalWriteFailed |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(7/7)
|
| CreateWorkspaceError$NoCurrentUser |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| CreateWorkspaceError$RemoteSyncFailed |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(7/7)
|
| Total |
100%
(3/3)
|
|
100%
(3/3)
|
100%
(16/16)
|
package com.georgeci.moneysurfer.domain.usecase
/**
* Typed failure for [CreateWorkspaceUseCase]. UI maps each variant to a user-facing
* message. Cause-bearing variants keep the underlying [Throwable] so reporting can log it.
*/
sealed interface CreateWorkspaceError {
/** No `currentUserId` in session — caller should not even be on the create screen. */
data object NoCurrentUser : CreateWorkspaceError
/** Local Room insert failed (disk full, FK violation, etc.). Workspace was NOT created. */
data class LocalWriteFailed(val cause: Throwable) : CreateWorkspaceError
/**
* Remote `syncWorkspace` push failed (PERMISSION_DENIED, network, etc.).
* The local Room rows ARE persisted, but the workspace is not pinned and not
* registered under `users/{uid}.workspaceIds` — caller can let the user retry,
* or surface the workspace via the selector for a later manual sync.
*/
data class RemoteSyncFailed(val cause: Throwable) : CreateWorkspaceError
}