Skip to content

Commit 135509f

Browse files
authored
Merge pull request #178 from synonymdev/feat/widgets-blocks
Widgets - Blocks
2 parents 605e40c + 508d563 commit 135509f

File tree

20 files changed

+2275
-11
lines changed

20 files changed

+2275
-11
lines changed
Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
package to.bitkit.ui.screens.widgets.blocks
2+
3+
import androidx.compose.ui.test.assertTextEquals
4+
import androidx.compose.ui.test.junit4.createComposeRule
5+
import androidx.compose.ui.test.onNodeWithTag
6+
import org.junit.Rule
7+
import org.junit.Test
8+
import to.bitkit.ui.theme.AppThemeSurface
9+
10+
class BlockCardTest {
11+
12+
@get:Rule
13+
val composeTestRule = createComposeRule()
14+
15+
private val testBlock = "761,405"
16+
private val testTime = "01:31:42 UTC"
17+
private val testDate = "11/2/2022"
18+
private val testTransactions = "2,175"
19+
private val testSize = "1,606Kb"
20+
private val testSource = "mempool.io"
21+
22+
@Test
23+
fun testBlockCardWithAllElements() {
24+
// Arrange & Act
25+
composeTestRule.setContent {
26+
AppThemeSurface {
27+
BlockCard(
28+
showWidgetTitle = true,
29+
showBlock = true,
30+
showTime = true,
31+
showDate = true,
32+
showTransactions = true,
33+
showSize = true,
34+
showSource = true,
35+
block = testBlock,
36+
time = testTime,
37+
date = testDate,
38+
transactions = testTransactions,
39+
size = testSize,
40+
source = testSource
41+
)
42+
}
43+
}
44+
45+
// Assert all elements exist
46+
composeTestRule.onNodeWithTag("block_card_widget_title_row", useUnmergedTree = true).assertExists()
47+
composeTestRule.onNodeWithTag("block_card_widget_title_icon", useUnmergedTree = true).assertExists()
48+
composeTestRule.onNodeWithTag("block_card_widget_title_text", useUnmergedTree = true).assertExists()
49+
composeTestRule.onNodeWithTag("block_card_block_row", useUnmergedTree = true).assertExists()
50+
composeTestRule.onNodeWithTag("block_card_time_row", useUnmergedTree = true).assertExists()
51+
composeTestRule.onNodeWithTag("block_card_date_row", useUnmergedTree = true).assertExists()
52+
composeTestRule.onNodeWithTag("block_card_transactions_row", useUnmergedTree = true).assertExists()
53+
composeTestRule.onNodeWithTag("block_card_size_row", useUnmergedTree = true).assertExists()
54+
composeTestRule.onNodeWithTag("block_card_source_row", useUnmergedTree = true).assertExists()
55+
56+
// Verify text content
57+
composeTestRule.onNodeWithTag("block_card_block_text", useUnmergedTree = true).assertTextEquals(testBlock)
58+
composeTestRule.onNodeWithTag("block_card_time_text", useUnmergedTree = true).assertTextEquals(testTime)
59+
composeTestRule.onNodeWithTag("block_card_date_text", useUnmergedTree = true).assertTextEquals(testDate)
60+
composeTestRule.onNodeWithTag("block_card_transactions_text", useUnmergedTree = true).assertTextEquals(testTransactions)
61+
composeTestRule.onNodeWithTag("block_card_size_text", useUnmergedTree = true).assertTextEquals(testSize)
62+
composeTestRule.onNodeWithTag("block_card_source_text", useUnmergedTree = true).assertTextEquals(testSource)
63+
}
64+
65+
@Test
66+
fun testBlockCardWithoutWidgetTitle() {
67+
// Arrange & Act
68+
composeTestRule.setContent {
69+
AppThemeSurface {
70+
BlockCard(
71+
showWidgetTitle = false,
72+
showBlock = true,
73+
showTime = true,
74+
showDate = true,
75+
showTransactions = true,
76+
showSize = true,
77+
showSource = true,
78+
block = testBlock,
79+
time = testTime,
80+
date = testDate,
81+
transactions = testTransactions,
82+
size = testSize,
83+
source = testSource
84+
)
85+
}
86+
}
87+
88+
// Assert main elements exist
89+
composeTestRule.onNodeWithTag("block_card_block_row", useUnmergedTree = true).assertExists()
90+
composeTestRule.onNodeWithTag("block_card_source_row", useUnmergedTree = true).assertExists()
91+
92+
// Assert widget title elements do not exist
93+
composeTestRule.onNodeWithTag("block_card_widget_title_row", useUnmergedTree = true).assertDoesNotExist()
94+
composeTestRule.onNodeWithTag("block_card_widget_title_icon", useUnmergedTree = true).assertDoesNotExist()
95+
composeTestRule.onNodeWithTag("block_card_widget_title_text", useUnmergedTree = true).assertDoesNotExist()
96+
}
97+
98+
@Test
99+
fun testBlockCardWithoutSource() {
100+
// Arrange & Act
101+
composeTestRule.setContent {
102+
AppThemeSurface {
103+
BlockCard(
104+
showWidgetTitle = true,
105+
showBlock = true,
106+
showTime = true,
107+
showDate = true,
108+
showTransactions = true,
109+
showSize = true,
110+
showSource = false,
111+
block = testBlock,
112+
time = testTime,
113+
date = testDate,
114+
transactions = testTransactions,
115+
size = testSize,
116+
source = testSource
117+
)
118+
}
119+
}
120+
121+
// Assert main elements exist
122+
composeTestRule.onNodeWithTag("block_card_widget_title_row", useUnmergedTree = true).assertExists()
123+
composeTestRule.onNodeWithTag("block_card_block_row", useUnmergedTree = true).assertExists()
124+
125+
// Assert source elements do not exist
126+
composeTestRule.onNodeWithTag("block_card_source_row", useUnmergedTree = true).assertDoesNotExist()
127+
composeTestRule.onNodeWithTag("block_card_source_label", useUnmergedTree = true).assertDoesNotExist()
128+
composeTestRule.onNodeWithTag("block_card_source_text", useUnmergedTree = true).assertDoesNotExist()
129+
}
130+
131+
@Test
132+
fun testBlockCardMinimal() {
133+
// Arrange & Act - Only block number shown
134+
composeTestRule.setContent {
135+
AppThemeSurface {
136+
BlockCard(
137+
showWidgetTitle = false,
138+
showBlock = true,
139+
showTime = false,
140+
showDate = false,
141+
showTransactions = false,
142+
showSize = false,
143+
showSource = false,
144+
block = testBlock,
145+
time = "",
146+
date = "",
147+
transactions = "",
148+
size = "",
149+
source = ""
150+
)
151+
}
152+
}
153+
154+
// Assert only block row exists
155+
composeTestRule.onNodeWithTag("block_card_block_row", useUnmergedTree = true).assertExists()
156+
157+
// Assert other elements do not exist
158+
composeTestRule.onNodeWithTag("block_card_widget_title_row", useUnmergedTree = true).assertDoesNotExist()
159+
composeTestRule.onNodeWithTag("block_card_time_row", useUnmergedTree = true).assertDoesNotExist()
160+
composeTestRule.onNodeWithTag("block_card_source_row", useUnmergedTree = true).assertDoesNotExist()
161+
}
162+
163+
@Test
164+
fun testBlockCardWithEmptyValues() {
165+
// Arrange & Act
166+
composeTestRule.setContent {
167+
AppThemeSurface {
168+
BlockCard(
169+
showWidgetTitle = true,
170+
showBlock = true,
171+
showTime = true,
172+
showDate = true,
173+
showTransactions = true,
174+
showSize = true,
175+
showSource = true,
176+
block = "",
177+
time = "",
178+
date = "",
179+
transactions = "",
180+
size = "",
181+
source = ""
182+
)
183+
}
184+
}
185+
186+
// Assert only widget title and labels exist (since values are empty)
187+
composeTestRule.onNodeWithTag("block_card_widget_title_row", useUnmergedTree = true).assertExists()
188+
189+
// Assert text elements don't exist (since values are empty)
190+
191+
composeTestRule.onNodeWithTag("block_card_time_label", useUnmergedTree = true).assertDoesNotExist()
192+
composeTestRule.onNodeWithTag("block_card_date_label", useUnmergedTree = true).assertDoesNotExist()
193+
composeTestRule.onNodeWithTag("block_card_transactions_label", useUnmergedTree = true).assertDoesNotExist()
194+
composeTestRule.onNodeWithTag("block_card_size_label", useUnmergedTree = true).assertDoesNotExist()
195+
composeTestRule.onNodeWithTag("block_card_source_label", useUnmergedTree = true).assertDoesNotExist()
196+
197+
composeTestRule.onNodeWithTag("block_card_block_label", useUnmergedTree = true).assertDoesNotExist()
198+
composeTestRule.onNodeWithTag("block_card_block_text", useUnmergedTree = true).assertDoesNotExist()
199+
composeTestRule.onNodeWithTag("block_card_time_text", useUnmergedTree = true).assertDoesNotExist()
200+
composeTestRule.onNodeWithTag("block_card_date_text", useUnmergedTree = true).assertDoesNotExist()
201+
composeTestRule.onNodeWithTag("block_card_transactions_text", useUnmergedTree = true).assertDoesNotExist()
202+
composeTestRule.onNodeWithTag("block_card_size_text", useUnmergedTree = true).assertDoesNotExist()
203+
composeTestRule.onNodeWithTag("block_card_source_text", useUnmergedTree = true).assertDoesNotExist()
204+
}
205+
206+
@Test
207+
fun testAllElementsExistInFullConfiguration() {
208+
// Arrange & Act
209+
composeTestRule.setContent {
210+
AppThemeSurface {
211+
BlockCard(
212+
showWidgetTitle = true,
213+
showBlock = true,
214+
showTime = true,
215+
showDate = true,
216+
showTransactions = true,
217+
showSize = true,
218+
showSource = true,
219+
block = testBlock,
220+
time = testTime,
221+
date = testDate,
222+
transactions = testTransactions,
223+
size = testSize,
224+
source = testSource
225+
)
226+
}
227+
}
228+
229+
// Assert all tagged elements exist
230+
composeTestRule.onNodeWithTag("block_card_widget_title_row", useUnmergedTree = true).assertExists()
231+
composeTestRule.onNodeWithTag("block_card_widget_title_icon", useUnmergedTree = true).assertExists()
232+
composeTestRule.onNodeWithTag("block_card_widget_title_text", useUnmergedTree = true).assertExists()
233+
composeTestRule.onNodeWithTag("block_card_block_row", useUnmergedTree = true).assertExists()
234+
composeTestRule.onNodeWithTag("block_card_block_label", useUnmergedTree = true).assertExists()
235+
composeTestRule.onNodeWithTag("block_card_block_text", useUnmergedTree = true).assertExists()
236+
composeTestRule.onNodeWithTag("block_card_time_row", useUnmergedTree = true).assertExists()
237+
composeTestRule.onNodeWithTag("block_card_time_label", useUnmergedTree = true).assertExists()
238+
composeTestRule.onNodeWithTag("block_card_time_text", useUnmergedTree = true).assertExists()
239+
composeTestRule.onNodeWithTag("block_card_date_row", useUnmergedTree = true).assertExists()
240+
composeTestRule.onNodeWithTag("block_card_date_label", useUnmergedTree = true).assertExists()
241+
composeTestRule.onNodeWithTag("block_card_date_text", useUnmergedTree = true).assertExists()
242+
composeTestRule.onNodeWithTag("block_card_transactions_row", useUnmergedTree = true).assertExists()
243+
composeTestRule.onNodeWithTag("block_card_transactions_label", useUnmergedTree = true).assertExists()
244+
composeTestRule.onNodeWithTag("block_card_transactions_text", useUnmergedTree = true).assertExists()
245+
composeTestRule.onNodeWithTag("block_card_size_row", useUnmergedTree = true).assertExists()
246+
composeTestRule.onNodeWithTag("block_card_size_label", useUnmergedTree = true).assertExists()
247+
composeTestRule.onNodeWithTag("block_card_size_text", useUnmergedTree = true).assertExists()
248+
composeTestRule.onNodeWithTag("block_card_source_row", useUnmergedTree = true).assertExists()
249+
composeTestRule.onNodeWithTag("block_card_source_label", useUnmergedTree = true).assertExists()
250+
composeTestRule.onNodeWithTag("block_card_source_text", useUnmergedTree = true).assertExists()
251+
}
252+
}

0 commit comments

Comments
 (0)