From 48b3b83cae54bbd8a8f65572077ac065083f397f Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 8 Sep 2020 05:53:06 +0530 Subject: [PATCH 1/4] Set test tag on ItemAddDialog Signed-off-by: Harsh Shandilya --- app/src/main/java/dev/msfjarvis/todo/MainActivity.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt b/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt index 56e1a3c5..0987226f 100644 --- a/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt @@ -22,8 +22,7 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.setContent -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.semantics.testTag +import androidx.compose.ui.platform.testTag import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp import androidx.ui.tooling.preview.Preview @@ -64,6 +63,7 @@ fun TodoApp( ItemAddDialog( showingDialog = showingDialog, onAdd = onAdd, + modifier = Modifier.testTag("item_dialog") ) } @@ -73,7 +73,7 @@ fun TodoApp( FloatingActionButton( onClick = { showingDialog.value = true }, elevation = 8.dp, - modifier = Modifier.semantics { testTag = "fab" } + modifier = Modifier.testTag("fab") ) { IconResource( resourceId = R.drawable.ic_exposure_plus_1_24dp, @@ -96,6 +96,7 @@ fun TodoApp( fun ItemAddDialog( showingDialog: MutableState, onAdd: (item: TodoItem) -> Unit, + modifier: Modifier = Modifier, ) { var newItemName by mutableStateOf(TextFieldValue("")) val hideDialog = { showingDialog.value = false } @@ -121,7 +122,8 @@ fun ItemAddDialog( ) { Text(text = "Add") } - } + }, + modifier = Modifier then modifier, ) } From e0e28b5e35eff3c0a2c2183e66333b099f0d4030 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 8 Sep 2020 05:54:24 +0530 Subject: [PATCH 2/4] Add test to check item add dialog is shown Signed-off-by: Harsh Shandilya --- .../java/dev/msfjarvis/todo/MainActivityTest.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt b/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt index 2dc977b5..a6c26a11 100644 --- a/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt +++ b/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt @@ -2,7 +2,8 @@ package dev.msfjarvis.todo import androidx.ui.test.assertIsDisplayed import androidx.ui.test.createComposeRule -import androidx.ui.test.onNodeWithText +import androidx.ui.test.onNodeWithTag +import androidx.ui.test.performClick import dev.msfjarvis.todo.data.model.TodoItem import dev.msfjarvis.todo.ui.TodoTheme import org.junit.Rule @@ -14,10 +15,10 @@ class MainActivityTest { val composeTestRule = createComposeRule() @Test - fun test_item_addition() { + fun item_add_dialog_shows_on_fab_click() { composeTestRule.setContent { TodoTheme { - val items = arrayListOf(TodoItem("Item 1")) + val items = arrayListOf() TodoApp( items, items::add, @@ -25,7 +26,7 @@ class MainActivityTest { ) } } - //onNode(hasTestTag("fab")).performClick() - onNodeWithText("Item 1").assertIsDisplayed() + onNodeWithTag("fab").performClick() + onNodeWithTag("item_dialog").assertIsDisplayed() } } From 0ccd3b353d35bbb965840f372b86d0061fec7394 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 8 Sep 2020 05:58:31 +0530 Subject: [PATCH 3/4] Add test to ensure new item is added correctly Signed-off-by: Harsh Shandilya --- .../dev/msfjarvis/todo/MainActivityTest.kt | 23 +++++++++++++++++++ .../java/dev/msfjarvis/todo/MainActivity.kt | 4 +++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt b/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt index a6c26a11..0c287613 100644 --- a/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt +++ b/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt @@ -1,9 +1,13 @@ package dev.msfjarvis.todo +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.ui.test.assertIsDisplayed import androidx.ui.test.createComposeRule import androidx.ui.test.onNodeWithTag +import androidx.ui.test.onNodeWithText import androidx.ui.test.performClick +import androidx.ui.test.performTextInput import dev.msfjarvis.todo.data.model.TodoItem import dev.msfjarvis.todo.ui.TodoTheme import org.junit.Rule @@ -29,4 +33,23 @@ class MainActivityTest { onNodeWithTag("fab").performClick() onNodeWithTag("item_dialog").assertIsDisplayed() } + + @Test + fun item_addition_adds_new_entry() { + composeTestRule.setContent { + val items by mutableStateOf(arrayListOf()) + TodoTheme { + TodoApp( + items, + items::add, + items::remove, + ) + } + } + onNodeWithText("Item 1").assertDoesNotExist() + onNodeWithTag("fab").performClick() + onNodeWithTag("item_name").performTextInput("Item 1") + onNodeWithTag("add_button").performClick() + onNodeWithText("Item 1").assertIsDisplayed() + } } diff --git a/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt b/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt index 0987226f..c5d0f85e 100644 --- a/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt @@ -108,6 +108,7 @@ fun ItemAddDialog( value = newItemName, onValueChange = { newItemName = it }, label = { Text(text = "Name") }, + modifier = Modifier.testTag("item_name") ) }, confirmButton = { @@ -118,7 +119,8 @@ fun ItemAddDialog( newItemName = TextFieldValue("") hideDialog.invoke() } - } + }, + modifier = Modifier.testTag("add_button") ) { Text(text = "Add") } From 272f0d1d99cc6b722f05a2bfe476249cb8d8c7b8 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 8 Sep 2020 05:59:49 +0530 Subject: [PATCH 4/4] Add test to ensure new item is not added if name is empty Signed-off-by: Harsh Shandilya --- .../dev/msfjarvis/todo/MainActivityTest.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt b/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt index 0c287613..1439d455 100644 --- a/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt +++ b/app/src/androidTest/java/dev/msfjarvis/todo/MainActivityTest.kt @@ -52,4 +52,22 @@ class MainActivityTest { onNodeWithTag("add_button").performClick() onNodeWithText("Item 1").assertIsDisplayed() } + + @Test + fun item_addition_with_empty_name_does_not_add_new_entry() { + composeTestRule.setContent { + val items by mutableStateOf(arrayListOf()) + TodoTheme { + TodoApp( + items, + items::add, + items::remove, + ) + } + } + onNodeWithText("Item 1").assertDoesNotExist() + onNodeWithTag("fab").performClick() + onNodeWithTag("add_button").performClick() + onNodeWithText("Item 1").assertDoesNotExist() + } }