diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/CustomViewMatchers.kt b/app/src/androidTest/java/h_mal/appttude/com/driver/CustomViewMatchers.kt index 09472ef..913a2cf 100644 --- a/app/src/androidTest/java/h_mal/appttude/com/driver/CustomViewMatchers.kt +++ b/app/src/androidTest/java/h_mal/appttude/com/driver/CustomViewMatchers.kt @@ -1,6 +1,7 @@ package h_mal.appttude.com.driver import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.Drawable import android.view.View import android.widget.EditText import android.widget.ImageView diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/FormRobot.kt b/app/src/androidTest/java/h_mal/appttude/com/driver/FormRobot.kt index 24f2967..8409f88 100644 --- a/app/src/androidTest/java/h_mal/appttude/com/driver/FormRobot.kt +++ b/app/src/androidTest/java/h_mal/appttude/com/driver/FormRobot.kt @@ -1,5 +1,6 @@ package h_mal.appttude.com.driver +import androidx.annotation.IdRes import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.matcher.ViewMatchers.withId @@ -19,7 +20,6 @@ open class FormRobot : BaseTestRobot() { selectSingleImageFromGallery(filePath) { onView(withId(imagePickerLauncherViewId)).perform(click()) } - // click ok in date picker } fun selectMultipleImage(imagePickerLauncherViewId: Int, filePaths: Array) { @@ -28,6 +28,12 @@ open class FormRobot : BaseTestRobot() { } } + fun assertEmptyForm(@IdRes vararg ids: Int) { + ids.forEach { + matchText(it, "") + } + } + enum class FilePath(val path: String) { PROFILE_PIC("driver_profile_pic.jpg"), INSURANCE("driver_insurance.jpg"), diff --git a/app/src/androidTest/java/h_mal/appttude/com/driver/model/Date.kt b/app/src/androidTest/java/h_mal/appttude/com/driver/model/Date.kt new file mode 100644 index 0000000..87bbf84 --- /dev/null +++ b/app/src/androidTest/java/h_mal/appttude/com/driver/model/Date.kt @@ -0,0 +1,19 @@ +package h_mal.appttude.com.driver.model + +import java.time.LocalDate + +data class Date( + val dayOfMonth: Int, + val monthOfYear: Int, + val year: Int +) { + + companion object { + @JvmStatic + fun now(): Date { + val date = LocalDate.now() + return Date(date.dayOfMonth, date.month.value, date.year) + } + } + +} \ No newline at end of file diff --git a/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversLicenseRobot.kt b/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversLicenseRobot.kt index 0c3270f..eda3ab6 100644 --- a/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversLicenseRobot.kt +++ b/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversLicenseRobot.kt @@ -19,6 +19,11 @@ class DriversLicenseRobot : FormRobot() { submit() } + fun validateEmptyPage() { + assertEmptyForm(R.id.lic_no, R.id.lic_expiry) + // Todo: assert imageview has default image + } + fun validate() { checkImageViewHasImage(R.id.driversli_img) diff --git a/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversProfileRobot.kt b/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversProfileRobot.kt index da44a6a..f56e7b5 100644 --- a/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversProfileRobot.kt +++ b/app/src/androidTestDriver/java/h_mal/appttude/com/driver/robots/driver/DriversProfileRobot.kt @@ -2,6 +2,7 @@ package h_mal.appttude.com.driver.robots.driver import h_mal.appttude.com.driver.FormRobot import h_mal.appttude.com.driver.R +import h_mal.appttude.com.driver.model.Date fun driversProfile(func: DriversProfileRobot.() -> Unit) = DriversProfileRobot().apply { func() } class DriversProfileRobot : FormRobot() { @@ -10,9 +11,10 @@ class DriversProfileRobot : FormRobot() { fun enterAddress(address: String) = fillEditText(R.id.address_input, address) fun enterPostcode(postcode: String) = fillEditText(R.id.postcode_input, postcode) fun enterDateOfBirth(dob: String) = fillEditText(R.id.dob_input, dob) + fun enterDateOfBirth(dob: Date) = setDate(R.id.dob_input, dob.year, dob.monthOfYear, dob.dayOfMonth) fun enterNINumber(niNumber: String) = fillEditText(R.id.ni_number, niNumber) - fun enterDateFirstAvailable(year: Int, monthOfYear: Int, dayOfMonth: Int) = - setDate(R.id.date_first, year, monthOfYear, dayOfMonth) + fun enterDateFirstAvailable(date: Date) = + setDate(R.id.date_first, date.year, date.monthOfYear, date.dayOfMonth) fun selectImage() = selectSingleImage(R.id.add_photo, FilePath.PROFILE_PIC) @@ -20,11 +22,9 @@ class DriversProfileRobot : FormRobot() { name: String, address: String, postcode: String, - dob: String, + dob: Date, niNumber: String, - year: Int, - monthOfYear: Int, - dayOfMonth: Int + firstDateAvailable: Date ) { selectImage() enterName(name) @@ -32,7 +32,7 @@ class DriversProfileRobot : FormRobot() { enterPostcode(postcode) enterDateOfBirth(dob) enterNINumber(niNumber) - enterDateFirstAvailable(year, monthOfYear, dayOfMonth) + enterDateFirstAvailable(firstDateAvailable) submit() } } \ No newline at end of file diff --git a/app/src/androidTestDriver/java/h_mal/appttude/com/driver/tests/newUser/SubmitNewDataActivityTest.kt b/app/src/androidTestDriver/java/h_mal/appttude/com/driver/tests/newUser/SubmitNewDataActivityTest.kt index fe03e2c..dc3e9dd 100644 --- a/app/src/androidTestDriver/java/h_mal/appttude/com/driver/tests/newUser/SubmitNewDataActivityTest.kt +++ b/app/src/androidTestDriver/java/h_mal/appttude/com/driver/tests/newUser/SubmitNewDataActivityTest.kt @@ -1,13 +1,17 @@ package h_mal.appttude.com.driver.tests.newUser +import androidx.test.espresso.Espresso import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest import androidx.test.rule.GrantPermissionRule import h_mal.appttude.com.driver.FirebaseTest import h_mal.appttude.com.driver.R +import h_mal.appttude.com.driver.model.Date import h_mal.appttude.com.driver.robots.* import h_mal.appttude.com.driver.robots.driver.driversLicense +import h_mal.appttude.com.driver.robots.driver.driversProfile +import h_mal.appttude.com.driver.robots.driver.privateHireLicenseRobot import h_mal.appttude.com.driver.ui.MainActivity import org.junit.* import org.junit.runner.RunWith @@ -23,21 +27,50 @@ class SubmitNewDataActivityTest : GrantPermissionRule.grant(android.Manifest.permission.READ_EXTERNAL_STORAGE) @Test - fun verifyUserRegistration_validUsernameAndPassword_loggedIn() { + fun newUser_submitDriversDocuments_documentsSubmitted() { home { waitFor(2500) checkTitleExists(getResourceString(R.string.welcome_title)) requestProfile() openDriverProfile() } + // Submit drivers license driverScreen { driverLicense() } driversLicense { + validateEmptyPage() + waitFor(5000) submitForm("SAMPLE8456310LTU", 2022, 10, 2) - + // Todo: validate successful submission + Espresso.pressBack() + } + // Submit drivers profile + driverScreen { + driverProfile() + } + driversProfile { + // todo: validate empty page + submitForm( + name = "Basic Driver", + address = "123A Random Street, Suburb, County", + postcode = "AB12 3CD", + dob = Date(12, 12, 1989), + niNumber = "AB123456C", + firstDateAvailable = Date.now() + ) + // Todo: validate successful submission + Espresso.pressBack() + } + driverScreen { + privateHireLicense() + } + privateHireLicenseRobot { + // todo: validate empty page + submitForm("SAMPLE8456310LTU", 2022, 10, 2) + // Todo: validate successful submission + Espresso.pressBack() } - } }