Coverage Summary for Class: DeleteBudgetUseCase (com.georgeci.moneysurfer.domain.usecase)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| DeleteBudgetUseCase |
100%
(2/2)
|
50%
(1/2)
|
100%
(5/5)
|
95.6%
(43/45)
|
| DeleteBudgetUseCase$invoke$1 |
|
| Total |
100%
(2/2)
|
50%
(1/2)
|
100%
(5/5)
|
95.6%
(43/45)
|
package com.georgeci.moneysurfer.domain.usecase
import com.georgeci.moneysurfer.domain.model.Budget
import com.georgeci.moneysurfer.domain.primitives.BudgetId
import com.georgeci.moneysurfer.domain.repositories.BudgetRepository
import org.koin.core.annotation.Single
/**
* Hard delete. Returns the removed budget so the caller can offer an Undo — the regular
* "get it out of my way" path is [ArchiveBudgetUseCase], which keeps the row.
*/
@Single
class DeleteBudgetUseCase(
private val budgetRepository: BudgetRepository,
) {
suspend operator fun invoke(id: BudgetId): Budget? {
val existing = budgetRepository.getById(id) ?: return null
budgetRepository.delete(id)
return existing
}
}