Browse Source

Improve testing for SendFilesDialog

 * Add tests for mixed type files
 * Add integration tests, not only screenshot

Signed-off-by: Álvaro Brey Vilas <alvaro.brey@nextcloud.com>
Álvaro Brey Vilas 3 years ago
parent
commit
9d856da33a

+ 0 - 0
screenshots/gplay/debug/com.owncloud.android.ui.dialog.SendFilesDialogTest_showDialog.png → screenshots/gplay/debug/com.owncloud.android.ui.dialog.SendFilesDialogTest_showDialogDifferentTypes_Screenshot.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.SendFilesDialogTest_showDialog_Screenshot.png


+ 54 - 12
src/androidTest/java/com/owncloud/android/ui/dialog/SendFilesDialogTest.kt

@@ -22,43 +22,85 @@
 package com.owncloud.android.ui.dialog
 
 import androidx.fragment.app.FragmentManager
+import androidx.recyclerview.widget.RecyclerView
 import androidx.test.espresso.intent.rule.IntentsTestRule
 import androidx.test.platform.app.InstrumentationRegistry
 import com.nextcloud.client.TestActivity
 import com.owncloud.android.AbstractIT
+import com.owncloud.android.R
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.utils.ScreenshotTest
+import org.junit.Assert
 import org.junit.Rule
 import org.junit.Test
 
 class SendFilesDialogTest : AbstractIT() {
+    companion object {
+        private val FILES_SAME_TYPE = setOf(
+            OCFile("/1.jpg").apply {
+                mimeType = "image/jpg"
+            },
+            OCFile("/2.jpg").apply {
+                mimeType = "image/jpg"
+            }
+        )
+        private val FILES_MIXED_TYPE = setOf(
+            OCFile("/1.jpg").apply {
+                mimeType = "image/jpg"
+            },
+            OCFile("/2.pdf").apply {
+                mimeType = "application/pdf"
+            },
+            OCFile("/3.png").apply {
+                mimeType = "image/png"
+            }
+        )
+    }
+
     @get:Rule
     val testActivityRule = IntentsTestRule(TestActivity::class.java, true, false)
 
-    @Test
-    @ScreenshotTest
-    fun showDialog() {
+    private fun showDialog(files: Set<OCFile>): SendFilesDialog {
         val activity = testActivityRule.launchActivity(null)
 
         val fm: FragmentManager = activity.supportFragmentManager
         val ft = fm.beginTransaction()
         ft.addToBackStack(null)
 
-        val files = setOf(
-            OCFile("/1.jpg").apply {
-                mimeType = "image/jpg"
-            },
-            OCFile("/2.jpg").apply {
-                mimeType = "image/jpg"
-            }
-        )
-
         val sut = SendFilesDialog.newInstance(files)
         sut.show(ft, "TAG_SEND_SHARE_DIALOG")
 
         InstrumentationRegistry.getInstrumentation().waitForIdleSync()
         shortSleep()
 
+        return sut
+    }
+
+    @Test
+    fun showDialog() {
+        val sut = showDialog(FILES_SAME_TYPE)
+        val recyclerview: RecyclerView = sut.requireDialog().findViewById(R.id.send_button_recycler_view)
+        Assert.assertNotEquals("Send button list is empty", 0, recyclerview.adapter?.itemCount)
+    }
+
+    @Test
+    @ScreenshotTest
+    fun showDialog_Screenshot() {
+        val sut = showDialog(FILES_SAME_TYPE)
+        sut.requireDialog().window?.decorView.let { screenshot(it) }
+    }
+
+    @Test
+    fun showDialogDifferentTypes() {
+        val sut = showDialog(FILES_MIXED_TYPE)
+        val recyclerview: RecyclerView = sut.requireDialog().findViewById(R.id.send_button_recycler_view)
+        Assert.assertNotEquals("Send button list is empty", 0, recyclerview.adapter?.itemCount)
+    }
+
+    @Test
+    @ScreenshotTest
+    fun showDialogDifferentTypes_Screenshot() {
+        val sut = showDialog(FILES_MIXED_TYPE)
         sut.requireDialog().window?.decorView.let { screenshot(it) }
     }
 }