diff --git a/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/SettingsActivityTest.kt b/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/SettingsActivityTest.kt index c620976..dec7b6d 100644 --- a/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/SettingsActivityTest.kt +++ b/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/SettingsActivityTest.kt @@ -4,10 +4,10 @@ import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertTextContains import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onAllNodesWithTag -import androidx.compose.ui.test.onNodeWithContentDescription import androidx.compose.ui.test.onNodeWithTag import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick +import androidx.test.rule.GrantPermissionRule import com.lorenzovainigli.foodexpirationdates.R import com.lorenzovainigli.foodexpirationdates.view.activity.MainActivity import com.lorenzovainigli.foodexpirationdates.view.composable.DateFormatDialog @@ -24,19 +24,25 @@ internal class SettingsActivityTest { @get:Rule val testRule = createAndroidComposeRule(MainActivity::class.java) + @Rule + @JvmField + var mGrantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant( + "android.permission.POST_NOTIFICATIONS" + ) + @Test fun changeDateFormat() { - testRule.onNodeWithContentDescription(testRule.activity.getString(R.string.menu)) - .performClick() - testRule.onNodeWithText(testRule.activity.getString(R.string.settings)).performClick() - testRule.onNodeWithTag(testRule.activity.getString(R.string.date_format)).performClick() - testRule.onNodeWithTag(DateFormatDialog).assertIsDisplayed() - val dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault()) - val firstRow = testRule.onAllNodesWithTag(DateFormatRow)[0] - val currentDate = dateFormat.format(Calendar.getInstance().time) - firstRow.assertTextContains(currentDate) - firstRow.performClick() - testRule.onNodeWithTag(testRule.activity.getString(R.string.date_format)).assertTextContains(currentDate) + testRule.run { + onNodeWithText(testRule.activity.getString(R.string.settings)).performClick() + onNodeWithTag(testRule.activity.getString(R.string.date_format)).performClick() + onNodeWithTag(DateFormatDialog).assertIsDisplayed() + val dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault()) + val firstRow = testRule.onAllNodesWithTag(DateFormatRow)[0] + val currentDate = dateFormat.format(Calendar.getInstance().time) + firstRow.assertTextContains(currentDate) + firstRow.performClick() + onNodeWithTag(testRule.activity.getString(R.string.date_format)).assertTextContains(currentDate) + } } } \ No newline at end of file diff --git a/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/activity/MainActivityTest.kt b/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/activity/MainActivityTest.kt index e8cb230..cd2717c 100644 --- a/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/activity/MainActivityTest.kt +++ b/app/src/androidTest/java/com/lorenzovainigli/foodexpirationdates/view/activity/MainActivityTest.kt @@ -19,7 +19,9 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith +import java.text.SimpleDateFormat import java.util.Calendar +import java.util.Locale @LargeTest @RunWith(AndroidJUnit4::class) @@ -74,7 +76,7 @@ class MainActivityTest { private fun clear(){ composeTestRule.run { onAllNodesWithTag("Delete item").apply { - fetchSemanticsNodes().forEachIndexed { i, _ -> + fetchSemanticsNodes().forEachIndexed { _, _ -> get(0).performClick() } } @@ -82,12 +84,19 @@ class MainActivityTest { } } + fun formatDateForDatePicker( + calendar: Calendar = Calendar.getInstance() + ): String { + val dateFormat = SimpleDateFormat("MMMM d", Locale.getDefault()) + return dateFormat.format(calendar.time) + } + @Test fun insertItemTest() { val name = "Test" insertItem( name = name, - date = Calendar.getInstance().get(Calendar.DAY_OF_MONTH).toString() + date = formatDateForDatePicker() ) composeTestRule.run { arrayOf( @@ -105,7 +114,7 @@ class MainActivityTest { val updatedName = "Test updated" insertItem( name = name, - date = Calendar.getInstance().get(Calendar.DAY_OF_MONTH).toString() + date = formatDateForDatePicker() ) composeTestRule.run { onNodeWithText(name).performClick() @@ -127,7 +136,7 @@ class MainActivityTest { val name = "Test" insertItem( name = name, - date = Calendar.getInstance().get(Calendar.DAY_OF_MONTH).toString() + date = formatDateForDatePicker() ) clear() } @@ -137,9 +146,9 @@ class MainActivityTest { for (i in 0 until 3) { insertItem( name = "Test item $i", - date = Calendar.getInstance().apply { + date = formatDateForDatePicker(Calendar.getInstance().apply { add(Calendar.DAY_OF_MONTH, i-1) - }.get(Calendar.DAY_OF_MONTH).toString() + }) ) } composeTestRule.run { diff --git a/app/src/androidTestFoss/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt b/app/src/androidTestFoss/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt index 56e4acd..9320322 100644 --- a/app/src/androidTestFoss/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt +++ b/app/src/androidTestFoss/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onNodeWithText import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.rule.GrantPermissionRule import androidx.test.uiautomator.UiDevice import com.lorenzovainigli.foodexpirationdates.view.activity.MainActivity import junit.framework.TestCase.assertFalse @@ -15,6 +16,12 @@ class FirebaseTest { @get:Rule val testRule = createAndroidComposeRule(MainActivity::class.java) + @Rule + @JvmField + var mGrantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant( + "android.permission.POST_NOTIFICATIONS" + ) + @Test fun firebaseNotEnabledOnFossBuild(){ testRule.onNodeWithText("Settings").assertIsDisplayed() diff --git a/app/src/androidTestFull/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt b/app/src/androidTestFull/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt index 434ac32..5c24a64 100644 --- a/app/src/androidTestFull/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt +++ b/app/src/androidTestFull/java/com/lorenzovainigli/foodexpirationdates/FirebaseTest.kt @@ -4,6 +4,7 @@ import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createAndroidComposeRule import androidx.compose.ui.test.onNodeWithText import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.rule.GrantPermissionRule import androidx.test.uiautomator.UiDevice import com.lorenzovainigli.foodexpirationdates.view.activity.MainActivity import junit.framework.TestCase.assertTrue @@ -15,6 +16,12 @@ class FirebaseTest { @get:Rule val testRule = createAndroidComposeRule(MainActivity::class.java) + @Rule + @JvmField + var mGrantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant( + "android.permission.POST_NOTIFICATIONS" + ) + @Test fun firebaseEnabledOnFullBuild(){ testRule.onNodeWithText("Settings").assertIsDisplayed()