Strangler lane 4 of 6 (coverage → >95%; see lane 1). Depends on #192 / PR #241.
Scope: all ui/** ViewModels + UI state holders, plus the non-UI logic modules reporting/**, push/**, power/**, contacts/**.
Test approach: JVM unit — coroutines-test, Turbine, MockK, and the existing fakes (FakeAccountRepository, etc.). Drive each ViewModel's state transitions (loading/empty/error/content), events, and edge cases; cover the module logic classes directly.
Target: ≥95% for the packages in scope; then ratchet the floor.
**Strangler lane 4 of 6** (coverage → >95%; see lane 1). Depends on #192 / PR #241.
**Scope:** all `ui/**` ViewModels + UI state holders, plus the non-UI logic modules `reporting/**`, `push/**`, `power/**`, `contacts/**`.
**Test approach:** JVM unit — coroutines-test, Turbine, MockK, and the existing fakes (`FakeAccountRepository`, etc.). Drive each ViewModel's state transitions (loading/empty/error/content), events, and edge cases; cover the module logic classes directly.
**Target:** ≥95% for the packages in scope; then ratchet the floor.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Strangler lane 4 of 6 (coverage → >95%; see lane 1). Depends on #192 / PR #241.
Scope: all
ui/**ViewModels + UI state holders, plus the non-UI logic modulesreporting/**,push/**,power/**,contacts/**.Test approach: JVM unit — coroutines-test, Turbine, MockK, and the existing fakes (
FakeAccountRepository, etc.). Drive each ViewModel's state transitions (loading/empty/error/content), events, and edge cases; cover the module logic classes directly.Target: ≥95% for the packages in scope; then ratchet the floor.