feat(#1222): add background connection toggle to chat menu (#1235)

This commit is contained in:
m57 authored and GitHub committed 2026-09-23 11:50:18 +03:00
1 parent ee634e2abb
commit 721edef618
4 files changed
+112 -1

No files matched your search

@@ -0,0 +1,47 @@
package com.m57.hermescontrol.ui.chat
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertIsOff
import androidx.compose.ui.test.assertIsOn
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performClick
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Assert.assertEquals
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class ChatBackgroundConnectionMenuItemTest {
@get:Rule
val compose = createComposeRule()
@Test
fun menuReflectsStateAndTogglesInBothDirections() {
var enabled by mutableStateOf(false)
compose.setContent {
ChatBackgroundConnectionMenuItem(
checked = enabled,
onToggle = { enabled = it },
)
}
compose.onNodeWithTag("chat_menu_keep_connected").assertIsDisplayed()
compose.onNodeWithTag("chat_menu_keep_connected_checkbox", useUnmergedTree = true).assertIsOff()
compose.onNodeWithTag("chat_menu_keep_connected").performClick()
compose.onNodeWithTag("chat_menu_keep_connected_checkbox", useUnmergedTree = true).assertIsOn()
compose.runOnIdle { assertEquals(true, enabled) }
// The next opening reads the externally changed value rather than a stale menu snapshot.
compose.runOnIdle { enabled = false }
compose.onNodeWithTag("chat_menu_keep_connected_checkbox", useUnmergedTree = true).assertIsOff()
compose.runOnIdle { enabled = true }
compose.onNodeWithTag("chat_menu_keep_connected_checkbox", useUnmergedTree = true).performClick()
compose.onNodeWithTag("chat_menu_keep_connected_checkbox", useUnmergedTree = true).assertIsOff()
compose.runOnIdle { assertEquals(false, enabled) }
}
}