1
+ package dev.aungkyawpaing.ccdroidx.feature.widget
2
+
3
+ import androidx.compose.ui.unit.DpSize
4
+ import androidx.compose.ui.unit.dp
5
+ import androidx.glance.action.ActionParameters
6
+ import androidx.glance.action.actionParametersOf
7
+ import androidx.glance.appwidget.testing.unit.assertHasRunCallbackClickAction
8
+ import androidx.glance.appwidget.testing.unit.runGlanceAppWidgetUnitTest
9
+ import androidx.glance.testing.unit.assertHasStartActivityClickAction
10
+ import androidx.glance.testing.unit.hasContentDescription
11
+ import androidx.glance.testing.unit.hasTestTag
12
+ import androidx.glance.testing.unit.hasText
13
+ import androidx.test.core.app.ApplicationProvider
14
+ import androidx.test.ext.junit.runners.AndroidJUnit4
15
+ import dev.aungkyawpaing.ccdroidx._testhelper_.ProjectBuilder
16
+ import dev.aungkyawpaing.ccdroidx.feature.MainActivity
17
+ import org.junit.Test
18
+ import org.junit.runner.RunWith
19
+
20
+ @RunWith(AndroidJUnit4 ::class )
21
+ class DashboardWidgetTest {
22
+
23
+ @Test
24
+ fun renderWithSomeFailingProjects () = runGlanceAppWidgetUnitTest {
25
+ setAppWidgetSize(DpSize (100 .dp, 150 .dp))
26
+ setContext(ApplicationProvider .getApplicationContext())
27
+
28
+ val failingProjects = listOf (
29
+ ProjectBuilder .buildProject(id = 0L , name = " some project 0" , webUrl = " some-url-0" ),
30
+ ProjectBuilder .buildProject(id = 1L , name = " some project 1" , webUrl = " some-url-1" ),
31
+ )
32
+
33
+ provideComposable {
34
+ DashboardWidgetContent (failingProjects = failingProjects)
35
+ }
36
+
37
+ onNode(hasText(" 2 Red" )).assertExists()
38
+ onNode(hasText(" some project 0" )).assertExists()
39
+ onNode(hasTestTag(" Project 0 - row" )).assertHasStartActivityClickAction<MainActivity >(
40
+ actionParametersOf(
41
+ ActionParameters .Key <String >(MainActivity .INTENT_EXTRA_URL ) to " some-url-0"
42
+ )
43
+ )
44
+ onNode(hasText(" some project 1" )).assertExists()
45
+ onNode(hasTestTag(" Project 1 - row" )).assertHasStartActivityClickAction<MainActivity >(
46
+ actionParametersOf(
47
+ ActionParameters .Key <String >(MainActivity .INTENT_EXTRA_URL ) to " some-url-1"
48
+ )
49
+ )
50
+ onNode(hasContentDescription(" Sync Project Status" )).assertHasRunCallbackClickAction<WidgetRefreshAction >()
51
+ }
52
+
53
+ @Test
54
+ fun renderWithNoFailingProjects () = runGlanceAppWidgetUnitTest {
55
+ setAppWidgetSize(DpSize (100 .dp, 150 .dp))
56
+ setContext(ApplicationProvider .getApplicationContext())
57
+
58
+ provideComposable {
59
+ DashboardWidgetContent (failingProjects = emptyList())
60
+ }
61
+
62
+ onNode(hasText(" All Green" )).assertExists()
63
+ onNode(hasContentDescription(" Sync Project Status" )).assertHasRunCallbackClickAction<WidgetRefreshAction >()
64
+ }
65
+ }
0 commit comments