Skip to content
This repository was archived by the owner on Jul 20, 2026. It is now read-only.

Commit 8991774

Browse files
committed
unit (and ui) test FINALLY done
1 parent 25a6097 commit 8991774

6 files changed

Lines changed: 120 additions & 41 deletions

File tree

.idea/androidTestResultsUserPreferences.xml

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/androidTest/java/fr/utbm/sy43/ExampleInstrumentedTest.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package fr.utbm.sy43
2+
3+
import androidx.compose.ui.test.*
4+
import androidx.compose.ui.test.junit4.createAndroidComposeRule
5+
import androidx.test.ext.junit.runners.AndroidJUnit4
6+
import fr.utbm.sy43.pilulito.MainActivity
7+
import org.junit.Rule
8+
import org.junit.Test
9+
import org.junit.runner.RunWith
10+
11+
@RunWith(AndroidJUnit4::class)
12+
class SignUpAndAddPosologyUiTest {
13+
14+
@get:Rule
15+
val composeTestRule = createAndroidComposeRule<MainActivity>()
16+
17+
@Test
18+
fun savePrescription_fillsFormAndSaves() {
19+
20+
composeTestRule.onNodeWithText("Don't have an account? Click here").performClick()
21+
composeTestRule.waitForIdle()
22+
23+
composeTestRule.onNodeWithTag("Name").performTextInput("John")
24+
composeTestRule.onNodeWithTag("Surname").performTextInput("Doe")
25+
composeTestRule.onNodeWithTag("Login").performTextInput("johndoe@aaaaaa.com")
26+
composeTestRule.onNodeWithTag("Password").performTextInput("johndoe1234")
27+
composeTestRule.waitForIdle()
28+
29+
composeTestRule.onNodeWithText("Sign up").performClick()
30+
composeTestRule.waitForIdle()
31+
32+
composeTestRule.onRoot().printToLog("UI_TREE")
33+
34+
composeTestRule.waitUntil(timeoutMillis = 5000) {
35+
composeTestRule.onAllNodesWithTag("Add med")
36+
.fetchSemanticsNodes().isNotEmpty()
37+
}
38+
39+
composeTestRule.onNodeWithTag("Add med").performClick()
40+
composeTestRule.waitForIdle()
41+
42+
composeTestRule.onNodeWithText("Select a medication").performClick()
43+
composeTestRule.waitForIdle()
44+
45+
composeTestRule.onNodeWithText("Doliprane").performClick()
46+
composeTestRule.waitForIdle()
47+
48+
composeTestRule.onNodeWithText("Save prescription").performClick()
49+
composeTestRule.waitForIdle()
50+
51+
composeTestRule.onNodeWithText("Doliprane").assertIsDisplayed()
52+
}
53+
}

app/src/test/java/fr/utbm/sy43/ExampleUnitTest.kt

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package fr.utbm.sy43
2+
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package fr.utbm.sy43
2+
3+
import org.junit.Test
4+
5+
import org.junit.Assert.*
6+
7+
/**
8+
* Example local unit test, which will execute on the development machine (host).
9+
*
10+
* See [testing documentation](http://d.android.com/tools/testing).
11+
*/
12+
class ExampleUnitTest {
13+
14+
@Test
15+
fun onQuantityChanged_updatesQuantity_whenValid() {
16+
val viewModel = createViewModel()
17+
viewModel.onQuantityChanged(3)
18+
assertEquals(3, viewModel.uiState.value.quantity)
19+
}
20+
21+
@Test
22+
fun onQuantityChanged_ignoresInvalidValue() {
23+
val viewModel = createViewModel()
24+
viewModel.onQuantityChanged(0) // your guard: qty >= 1
25+
assertEquals(1, viewModel.uiState.value.quantity) // unchanged from default
26+
}
27+
28+
@Test
29+
fun onDurationChanged_ignoresZeroOrNegative() {
30+
val viewModel = createViewModel()
31+
viewModel.onDurationChanged(-5)
32+
assertEquals(7, viewModel.uiState.value.durationDays) // unchanged from default
33+
}
34+
35+
@Test
36+
fun onDrugSelected_updatesSelectedDrugAndClearsError() {
37+
val viewModel = createViewModel()
38+
val drug = Drug(id = "drug_1", name = "Doliprane", dosage = "1000mg", form = "Tablet")
39+
viewModel.onDrugSelected(drug)
40+
assertEquals(drug, viewModel.uiState.value.selectedDrug)
41+
assertNull(viewModel.uiState.value.errorMessage)
42+
}
43+
}

0 commit comments

Comments
 (0)