ActivitiesActivityIT.kt 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /*
  2. * Nextcloud - Android Client
  3. *
  4. * SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me>
  5. * SPDX-FileCopyrightText: 2020 Nextcloud GmbH
  6. * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
  7. */
  8. package com.nextcloud.client
  9. import android.view.View
  10. import androidx.test.espresso.Espresso
  11. import androidx.test.espresso.contrib.DrawerActions
  12. import androidx.test.espresso.intent.rule.IntentsTestRule
  13. import androidx.test.espresso.matcher.ViewMatchers.withId
  14. import com.facebook.testing.screenshot.Screenshot
  15. import com.owncloud.android.AbstractIT
  16. import com.owncloud.android.R
  17. import com.owncloud.android.lib.resources.activities.model.Activity
  18. import com.owncloud.android.lib.resources.activities.model.RichElement
  19. import com.owncloud.android.lib.resources.activities.model.RichObject
  20. import com.owncloud.android.lib.resources.activities.models.PreviewObject
  21. import com.owncloud.android.lib.resources.status.OCCapability
  22. import com.owncloud.android.ui.activities.ActivitiesActivity
  23. import com.owncloud.android.utils.ScreenshotTest
  24. import org.junit.Rule
  25. import org.junit.Test
  26. import java.util.GregorianCalendar
  27. class ActivitiesActivityIT : AbstractIT() {
  28. @get:Rule
  29. var activityRule = IntentsTestRule(ActivitiesActivity::class.java, true, false)
  30. @Test
  31. @ScreenshotTest
  32. fun openDrawer() {
  33. val sut = activityRule.launchActivity(null)
  34. shortSleep()
  35. Espresso.onView(withId(R.id.drawer_layout)).perform(DrawerActions.open())
  36. sut.runOnUiThread {
  37. sut.dismissSnackbar()
  38. }
  39. shortSleep()
  40. waitForIdleSync()
  41. screenshot(sut)
  42. }
  43. @Test
  44. @ScreenshotTest
  45. fun loading() {
  46. val sut: ActivitiesActivity = activityRule.launchActivity(null).apply {
  47. runOnUiThread {
  48. dismissSnackbar()
  49. binding.emptyList.root.visibility = View.GONE
  50. binding.swipeContainingList.visibility = View.GONE
  51. binding.loadingContent.visibility = View.VISIBLE
  52. }
  53. }
  54. shortSleep()
  55. waitForIdleSync()
  56. Screenshot.snap(sut.binding.loadingContent).record()
  57. }
  58. @Test
  59. @ScreenshotTest
  60. fun empty() {
  61. val sut: ActivitiesActivity = activityRule.launchActivity(null)
  62. sut.runOnUiThread {
  63. sut.showActivities(mutableListOf(), nextcloudClient, -1)
  64. sut.setProgressIndicatorState(false)
  65. sut.dismissSnackbar()
  66. }
  67. shortSleep()
  68. waitForIdleSync()
  69. screenshot(sut)
  70. }
  71. @Test
  72. @ScreenshotTest
  73. @SuppressWarnings("MagicNumber")
  74. fun showActivities() {
  75. val capability = OCCapability()
  76. capability.versionMayor = 20
  77. fileDataStorageManager.saveCapabilities(capability)
  78. val sut: ActivitiesActivity = activityRule.launchActivity(null)
  79. val date = GregorianCalendar()
  80. date.set(2005, 4, 17, 10, 35, 30) // random date
  81. val richObjectList: ArrayList<RichObject> = ArrayList()
  82. richObjectList.add(RichObject("file", "abc", "text.txt", "/text.txt", "link", "tag"))
  83. richObjectList.add(RichObject("file", "1", "text.txt", "/text.txt", "link", "tag"))
  84. val previewObjectList1: ArrayList<PreviewObject> = ArrayList()
  85. previewObjectList1.add(PreviewObject(1, "source", "link", true, "text/plain", "view", "test1.txt"))
  86. val previewObjectList3: ArrayList<PreviewObject> = ArrayList()
  87. previewObjectList3.add(PreviewObject(1, "source", "link", true, "image/jpg", "view", "test1.jpg"))
  88. val activities = mutableListOf(
  89. Activity(
  90. 1,
  91. date.time,
  92. date.time,
  93. "files",
  94. "file_changed",
  95. "user1",
  96. "user1",
  97. "You changed text.txt",
  98. "",
  99. "icon",
  100. "link",
  101. "files",
  102. "1",
  103. "/text.txt",
  104. previewObjectList1,
  105. RichElement("", richObjectList)
  106. ),
  107. Activity(
  108. 1,
  109. date.time,
  110. date.time,
  111. "dav",
  112. "calendar_event",
  113. "user1",
  114. "user1",
  115. "You have deleted calendar entry Appointment",
  116. "",
  117. "icon",
  118. "link",
  119. "calendar",
  120. "35",
  121. "",
  122. ArrayList<PreviewObject>(),
  123. RichElement()
  124. ),
  125. Activity(
  126. 1,
  127. date.time,
  128. date.time,
  129. "files",
  130. "file_changed",
  131. "user1",
  132. "user1",
  133. "You changed image.jpg",
  134. "",
  135. "icon",
  136. "link",
  137. "files",
  138. "1",
  139. "/image.jpg",
  140. previewObjectList3,
  141. RichElement("", richObjectList)
  142. )
  143. )
  144. sut.runOnUiThread {
  145. sut.showActivities(activities as List<Any>?, nextcloudClient, -1)
  146. sut.setProgressIndicatorState(false)
  147. sut.dismissSnackbar()
  148. }
  149. longSleep()
  150. waitForIdleSync()
  151. screenshot(sut)
  152. }
  153. @Test
  154. @ScreenshotTest
  155. fun error() {
  156. val sut: ActivitiesActivity = activityRule.launchActivity(null)
  157. shortSleep()
  158. sut.runOnUiThread {
  159. sut.showEmptyContent("Error", "Error! Please try again later!")
  160. sut.setProgressIndicatorState(false)
  161. sut.dismissSnackbar()
  162. }
  163. shortSleep()
  164. shortSleep()
  165. waitForIdleSync()
  166. screenshot(sut)
  167. }
  168. }