miPlodder commented on a change in pull request #112:
URL: https://github.com/apache/fineract-cn-mobile/pull/112#discussion_r482051034
##########
File path:
app/src/androidTest/java/org/apache/fineract/ui/online/groups/creategroup/CreateGroupActivityAndroidTest.kt
##########
@@ -0,0 +1,114 @@
+package org.apache.fineract.ui.online.groups.creategroup
+
+import android.content.Intent
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.action.ViewActions.click
+import androidx.test.espresso.action.ViewActions.typeText
+import androidx.test.espresso.assertion.ViewAssertions.matches
+import androidx.test.espresso.matcher.ViewMatchers.*
+import androidx.test.rule.ActivityTestRule
+import androidx.test.runner.AndroidJUnit4
+import org.apache.fineract.R
+import org.apache.fineract.ui.online.groups.GroupAction
+import org.apache.fineract.utils.Constants
+import org.hamcrest.Matchers.not
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Created by Ahmad Jawid Muhammadi on 30/8/20.
+ */
+
+@RunWith(AndroidJUnit4::class)
+class CreateGroupActivityAndroidTest {
+
+ @get:Rule
+ var activityTestRule =
+
ActivityTestRule<CreateGroupActivity>(CreateGroupActivity::class.java, false,
false)
+
+ @Before
+ fun before() {
+ //Open CreateGroupActivity with an intent by putting create group
action as an extra
+ val intent = Intent().apply {
+ putExtra(Constants.GROUP_ACTION, GroupAction.CREATE)
+ }
+ activityTestRule.launchActivity(intent)
+ }
+
+ @Test
+ fun testCreateGroupItem() {
+ onView(withId(R.id.etIdentifier))
+ .perform(typeText("testIdentifier"))
+ onView(withId(R.id.etGroupDefinitionIdentifier))
+ .perform(typeText("group definition"))
+ onView(withId(R.id.etName))
+ .perform(typeText("group name"))
+ onView(withId(R.id.etOffice))
+ .perform(typeText("office name"))
+ onView(withId(R.id.etAssignedEmployee))
+ .perform(typeText("assignedEmployee"))
+
+ //go to next fragment
+ onView(withText("NEXT")).perform(click())
+
+ //Add a member
+ onView(withId(R.id.ibAddMember))
+ .perform(click())
+ onView(withId(R.id.etNewMember))
+ .perform(typeText("Ahmad"))
+ onView(withId((R.id.btnAddMember)))
+ .perform(click())
+ onView(withText("NEXT")).perform(click())
+
+ //Add leader name
+ onView(withId(R.id.ibAddLeader))
+ .perform(click())
+ onView(withId(R.id.etNewLeader))
+ .perform(typeText("Jawid"))
+ onView(withId((R.id.btnAddLeader)))
+ .perform(click())
+ onView(withText("NEXT")).perform(click())
+
+ //fill address details
+ onView(withId(R.id.etStreet))
+ .perform(typeText("Street"))
+ onView(withId(R.id.etCity))
+ .perform(typeText("Pune"))
+ onView(withId(R.id.etRegion))
+ .perform(typeText("Region"))
+ onView(withId(R.id.etPostalCode))
+ .perform(typeText("411048"))
+ onView(withId(R.id.etCountry))
+ .perform(typeText("India"))
+ onView(withText("NEXT")).perform(click())
+ onView(withText("COMPLETE")).perform(click())
+
+ //Check if the creating group error message has been displayed
+ onView(withText("Error while creating group"))
+ .check(matches(isDisplayed()))
+ }
+
+ @Test
+ fun testInvalidOfficeName() {
Review comment:
Lets keep names, as `test<FlowName>_<InvalidCase>`.
If I'm not wrong, this is negative case for `createGroupItem`, if yes, then
name it as `testCreateGroupItem_invalidOfficeName` and follow the same
convention for others testcases.
suffix the success flow with `_success`, if needed
##########
File path: app/build.gradle
##########
@@ -173,6 +173,7 @@ dependencies {
androidTestImplementation
"androidx.test.espresso:espresso-core:$espressoVersion"
androidTestImplementation "androidx.test:runner:$runnerVersion"
androidTestImplementation "androidx.test:rules:$rulesVersion"
+ androidTestImplementation "androidx.test.espresso:espresso-contrib:
$espressonContribute"
Review comment:
This dependency is already existing. please check
##########
File path:
app/src/androidTest/java/org/apache/fineract/ui/online/groups/grouplist/GroupListFragmentAndroidTest.kt
##########
@@ -0,0 +1,54 @@
+package org.apache.fineract.ui.online.groups.grouplist
+
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.action.ViewActions.click
+import androidx.test.espresso.assertion.ViewAssertions.matches
+import androidx.test.espresso.contrib.DrawerActions
+import androidx.test.espresso.contrib.NavigationViewActions
+import androidx.test.espresso.contrib.RecyclerViewActions
+import androidx.test.espresso.matcher.ViewMatchers.*
+import androidx.test.rule.ActivityTestRule
+import androidx.test.runner.AndroidJUnit4
+import org.apache.fineract.R
+import org.apache.fineract.ui.adapters.GroupsAdapter
+import org.apache.fineract.ui.online.DashboardActivity
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Created by Ahmad Jawid Muhammadi on 30/8/20.
+ */
+
+@RunWith(AndroidJUnit4::class)
+class GroupListFragmentAndroidTest {
+
+ @get:Rule
+ val activityRule =
+ ActivityTestRule<DashboardActivity>(DashboardActivity::class.java)
+
+ @Test
+ fun testOpenDrawer_OpenGroupList_ClickOnRecyclerViewItem() {
+
+ //Open drawer
+ onView(withId(R.id.drawer_layout))
+ .perform(DrawerActions.open())
+
+ //From NavigationView navigate to Group list screen
+ onView(withId(R.id.nav_view))
+ .perform(NavigationViewActions.navigateTo(R.id.item_groups))
+
+ //Click on group item
+ onView(withId(R.id.rvGroups)).perform(
+ RecyclerViewActions.actionOnItem<GroupsAdapter.ViewHolder>(
+ hasDescendant(withText("group001")),
+ click()
+ )
+ )
+
+ //Assert if thw item has been displayed correctly
+ onView(withId(R.id.tvIdentifier))
Review comment:
if possible can we add more assertions, for better-automated UI testing,
same applies to other test cases.
##########
File path:
app/src/androidTest/java/org/apache/fineract/ui/online/groups/creategroup/CreateGroupActivityAndroidTest.kt
##########
@@ -0,0 +1,87 @@
+package org.apache.fineract.ui.online.groups.creategroup
+
+import android.content.Intent
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.action.ViewActions.click
+import androidx.test.espresso.action.ViewActions.typeText
+import androidx.test.espresso.matcher.ViewMatchers.withId
+import androidx.test.espresso.matcher.ViewMatchers.withText
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.rule.ActivityTestRule
+import org.apache.fineract.R
+import org.apache.fineract.ui.online.groups.GroupAction
+import org.apache.fineract.utils.Constants
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Created by Ahmad Jawid Muhammadi on 30/8/20.
+ */
+
+@RunWith(AndroidJUnit4::class)
+class CreateGroupActivityAndroidTest {
+
+ @get:Rule
+ var activityTestRule =
+
ActivityTestRule<CreateGroupActivity>(CreateGroupActivity::class.java, false,
false)
+
+ @Before
+ fun before() {
+ //Open CreateGroupActivity with an intent by putting create group
action as an extra
+ val intent = Intent().apply {
+ putExtra(Constants.GROUP_ACTION, GroupAction.CREATE)
+ }
+ activityTestRule.launchActivity(intent)
+ }
+
+ @Test
+ fun createGroupItem() {
+ onView(withId(R.id.etIdentifier))
+ .perform(typeText("testIdentifier"))
+ onView(withId(R.id.etGroupDefinitionIdentifier))
+ .perform(typeText("group definition"))
+ onView(withId(R.id.etName))
+ .perform(typeText("group name"))
+ onView(withId(R.id.etOffice))
+ .perform(typeText("office name"))
+ onView(withId(R.id.etAssignedEmployee))
+ .perform(typeText("assignedEmployee"))
+
+ //go to next fragment
+ onView(withText("NEXT")).perform(click())
+
+ //Add a member
+ onView(withId(R.id.ibAddMember))
+ .perform(click())
+ onView(withId(R.id.etNewMember))
+ .perform(typeText("Ahmad"))
+ onView(withId((R.id.btnAddMember)))
+ .perform(click())
+ onView(withText("NEXT")).perform(click())
+
+ //Add leader name
+ onView(withId(R.id.ibAddLeader))
+ .perform(click())
+ onView(withId(R.id.etNewLeader))
+ .perform(typeText("Jawid"))
+ onView(withId((R.id.btnAddLeader)))
+ .perform(click())
+ onView(withText("NEXT")).perform(click())
+
+ //fill address details
+ onView(withId(R.id.etStreet))
+ .perform(typeText("Street"))
+ onView(withId(R.id.etCity))
+ .perform(typeText("Pune"))
+ onView(withId(R.id.etRegion))
+ .perform(typeText("Region"))
+ onView(withId(R.id.etPostalCode))
+ .perform(typeText("411048"))
+ onView(withId(R.id.etCountry))
+ .perform(typeText("India"))
+ onView(withText("NEXT")).perform(click())
+ onView(withText("COMPLETE")).perform(click())
Review comment:
How you're ensuring whether the call is an actual or fake API call,
please clarify.
##########
File path:
app/src/androidTest/java/org/apache/fineract/ui/online/groups/grouplist/GroupListFragmentAndroidTest.kt
##########
@@ -0,0 +1,54 @@
+package org.apache.fineract.ui.online.groups.grouplist
+
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.action.ViewActions.click
+import androidx.test.espresso.assertion.ViewAssertions.matches
+import androidx.test.espresso.contrib.DrawerActions
+import androidx.test.espresso.contrib.NavigationViewActions
+import androidx.test.espresso.contrib.RecyclerViewActions
+import androidx.test.espresso.matcher.ViewMatchers.*
+import androidx.test.rule.ActivityTestRule
+import androidx.test.runner.AndroidJUnit4
+import org.apache.fineract.R
+import org.apache.fineract.ui.adapters.GroupsAdapter
+import org.apache.fineract.ui.online.DashboardActivity
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Created by Ahmad Jawid Muhammadi on 30/8/20.
+ */
+
+@RunWith(AndroidJUnit4::class)
+class GroupListFragmentAndroidTest {
+
+ @get:Rule
+ val activityRule =
+ ActivityTestRule<DashboardActivity>(DashboardActivity::class.java)
+
+ @Test
+ fun testOpenDrawer_OpenGroupList_ClickOnRecyclerViewItem() {
Review comment:
`testNavDrawer` makes more sense. suffix looks good!
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]