* test(#291): add coverage for 3 critical untested components - NavigationController dedup guard (line 45): 14 pure unit tests for navigateTo, resetTo, goBack, primary-screen clearing, and null guards. - NotificationReplyReceiver: 11 MockK-based tests covering the full WS+Room+notification flow: valid reply sends WS message, persists to Room with correct entity shape, shows replied confirmation notification, finishes PendingResult, and gracefully handles null/blank inputs and Room failures. - ChatNotificationService isAppInForeground flag: 5 tests verifying companion object toggle, volatile modifier (thread safety), default false state, and idempotent calls. - Fix: add @Volatile to isAppInForeground (was a plain var read from background coroutine and written from UI thread) Closes #291 * fix(#291): fix MockK type errors in test compilation * fix(#291): fix test assertions and goAsync mock for CI * fix(#291): wrap final BroadcastReceiver.goAsync() with open Kotlin wrapper * chore: trigger CI on latest fix commit * fix(#291): make NotificationReplyReceiver open so tests can subclass it * fix(#291): extract buildReplyNotification() to avoid 'not mocked' framework error NotificationCompat.Builder.build() internally calls android.app.Notification.Builder methods (e.g. setWhen) that throw RuntimeException with 'Method setWhen in android.app.Notification.Builder not mocked' in unit tests — the standard Android unit test environment does not provide real framework implementations. Extracting notification creation into an open method (same pattern as goAsyncCompat()) lets tests override it to return a mock Notification, avoiding the framework call entirely. * style: fix ktlint blank-line-before-declaration in test --------- Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
bbe3b00ccb
commit
c44f4c3068
5 files changed
+632
-11
No files matched your search
@@ -57,6 +57,7 @@ class ChatNotificationService : Service() {
|
||||
internal const val NOTIFICATION_ID = 1
|
||||
internal const val PENDING_NOTIFICATION_ID = 2
|
||||
|
||||
@Volatile
|
||||
private var isAppInForeground = false
|
||||
|
||||
fun setAppForeground(foreground: Boolean) {
|
||||
|
||||
Reference in new issue
Block a user