Coverage Summary for Class: GoalActionError (com.georgeci.moneysurfer.domain.usecase)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| GoalActionError$CurrencyMismatch |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| GoalActionError$GoalNotAcceptingContributions |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| GoalActionError$GoalNotFound |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| GoalActionError$InvalidAmount |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| GoalActionError$InvalidTarget |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| GoalActionError$LocalWriteFailed |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/7)
|
| GoalActionError$StatusNotSettable |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| GoalActionError$WithdrawalBelowZero |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| GoalActionError$WorkspaceNotFound |
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
| Total |
88.9%
(8/9)
|
|
88.9%
(8/9)
|
69.6%
(16/23)
|
package com.georgeci.moneysurfer.domain.usecase
sealed interface GoalActionError {
data object GoalNotFound : GoalActionError
data object WorkspaceNotFound : GoalActionError
/** The goal's currency is not the workspace base currency — v1 supports no other. */
data object CurrencyMismatch : GoalActionError
/** Target must be a positive amount. */
data object InvalidTarget : GoalActionError
/** A contribution of zero moves nothing and is rejected. */
data object InvalidAmount : GoalActionError
/** A withdrawal cannot take the saved amount below zero. */
data object WithdrawalBelowZero : GoalActionError
/** PAUSED and ARCHIVED goals take no new money. */
data object GoalNotAcceptingContributions : GoalActionError
/** COMPLETED is derived from progress and cannot be set by hand. */
data object StatusNotSettable : GoalActionError
data class LocalWriteFailed(val cause: Throwable) : GoalActionError
}