mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Issue-5662-kotlinstyle (#5833)
* *.kt: bulk correction of formatting using ktlint --format * *.kt: replace wildcard imports and second stage auto format ktlint --format * QuizQuestionTest.kt: modified property names to camel case to meet ktlint standard * LevelControllerTest.kt: modified property names to camel case to meet ktlint standard * QuizActivityUnitTest.kt: modified property names to camel case to meet ktlint standard * MediaDetailFragmentUnitTests.kt: modified property names to camel case to meet ktlint standard * UploadWorker.kt: modified property names to camel case to meet ktlint standard * UploadClient.kt: modified property names to camel case to meet ktlint standard * BasePagingPresenter.kt: modified property names to camel case to meet ktlint standard * DescriptionEditActivity.kt: modified property names to camel case to meet ktlint standard * OnSwipeTouchListener.kt: modified property names to camel case to meet ktlint standard * MediaDetailFragmentUnitTests.kt: corrected excessive line length to meet ktlint standard * DepictedItem.kt: corrected property name format and catch format to for ktlint standard * UploadCategoryAdapter.kt: corrected class definition format to meet ktlint standard * CustomSelectorActivity.kt: reformatted function names to first letter lowercase to meet ktlint standard * MediaDetailFragmentUnitTests.kt: fix string literal indentation to meet ktlint standard * NotForUploadDao.kt: file renamed to match class name, new file NotForUploadStatusDao.kt * UploadedDao.kt: file renamed to match class name, new file UploadedStatusDao.kt * Urls.kt: fixed excessive line length for ktLint standard * Snak_partial.kt & Statement_partial.kt: refactored to remove underscores in class names to meet ktLint standard * *.kt: fixed consecutive KDOC error for ktLint * PageableBaseDataSourceTest.kt & UploadPresenterTest.kt: fixed excessive line lengths to meet ktLint standard * CheckboxTriStatesTest.kt: renamed file to match class name to meet ktLint standard * .kt: resolved backing-property-naming error in ktLint, made matching properties public, matched names and refactored * TestConnectionFactory.kt: fixed property naming to adhere to ktLint standard
This commit is contained in:
parent
950539c55c
commit
2d82a430c4
405 changed files with 11032 additions and 9137 deletions
|
|
@ -25,7 +25,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class AboutActivityTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule: ActivityTestRule<*> = ActivityTestRule(AboutActivity::class.java)
|
||||
|
||||
|
|
@ -36,7 +35,8 @@ class AboutActivityTest {
|
|||
device.setOrientationNatural()
|
||||
device.freezeRotation()
|
||||
Intents.init()
|
||||
Intents.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
Intents
|
||||
.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
.respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null))
|
||||
}
|
||||
|
||||
|
|
@ -47,11 +47,12 @@ class AboutActivityTest {
|
|||
|
||||
@Test
|
||||
fun testBuildNumber() {
|
||||
Espresso.onView(ViewMatchers.withId(R.id.about_version))
|
||||
Espresso
|
||||
.onView(ViewMatchers.withId(R.id.about_version))
|
||||
.check(
|
||||
ViewAssertions.matches(
|
||||
withText(getApplicationContext<CommonsApplication>().getVersionNameWithSha())
|
||||
)
|
||||
withText(getApplicationContext<CommonsApplication>().getVersionNameWithSha()),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -61,8 +62,8 @@ class AboutActivityTest {
|
|||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(Urls.WEBSITE_URL)
|
||||
)
|
||||
IntentMatchers.hasData(Urls.WEBSITE_URL),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -73,8 +74,8 @@ class AboutActivityTest {
|
|||
CoreMatchers.anyOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(Urls.FACEBOOK_WEB_URL),
|
||||
IntentMatchers.hasPackage(Urls.FACEBOOK_PACKAGE_NAME)
|
||||
)
|
||||
IntentMatchers.hasPackage(Urls.FACEBOOK_PACKAGE_NAME),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -84,8 +85,8 @@ class AboutActivityTest {
|
|||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(Urls.GITHUB_REPO_URL)
|
||||
)
|
||||
IntentMatchers.hasData(Urls.GITHUB_REPO_URL),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -95,8 +96,8 @@ class AboutActivityTest {
|
|||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(BuildConfig.PRIVACY_POLICY_URL)
|
||||
)
|
||||
IntentMatchers.hasData(BuildConfig.PRIVACY_POLICY_URL),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -108,8 +109,8 @@ class AboutActivityTest {
|
|||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData("${Urls.TRANSLATE_WIKI_URL}$langCode")
|
||||
)
|
||||
IntentMatchers.hasData("${Urls.TRANSLATE_WIKI_URL}$langCode"),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -119,27 +120,30 @@ class AboutActivityTest {
|
|||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(Urls.CREDITS_URL)
|
||||
)
|
||||
IntentMatchers.hasData(Urls.CREDITS_URL),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testLaunchUserGuide() {
|
||||
Espresso.onView(ViewMatchers.withId(R.id.about_user_guide)).perform(ViewActions.click())
|
||||
Intents.intended(CoreMatchers.allOf(IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(Urls.USER_GUIDE_URL)))
|
||||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(Urls.USER_GUIDE_URL),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun testLaunchAboutFaq() {
|
||||
Espresso.onView(ViewMatchers.withId(R.id.about_faq)).perform(ViewActions.click())
|
||||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(Urls.FAQ_URL)
|
||||
)
|
||||
IntentMatchers.hasData(Urls.FAQ_URL),
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,12 +18,14 @@ import fr.free.nrw.commons.auth.LoginActivity
|
|||
import fr.free.nrw.commons.auth.SignupActivity
|
||||
import org.hamcrest.CoreMatchers
|
||||
import org.hamcrest.CoreMatchers.not
|
||||
import org.junit.*
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class LoginActivityTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule = ActivityTestRule(LoginActivity::class.java)
|
||||
|
||||
|
|
@ -49,8 +51,8 @@ class LoginActivityTest {
|
|||
Intents.intended(
|
||||
CoreMatchers.allOf(
|
||||
IntentMatchers.hasAction(Intent.ACTION_VIEW),
|
||||
IntentMatchers.hasData(BuildConfig.FORGOT_PASSWORD_URL)
|
||||
)
|
||||
IntentMatchers.hasData(BuildConfig.FORGOT_PASSWORD_URL),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -64,4 +66,4 @@ class LoginActivityTest {
|
|||
fun orientationChange() {
|
||||
UITestHelper.changeOrientation(activityRule)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,20 +21,23 @@ import fr.free.nrw.commons.kvstore.JsonKvStore
|
|||
import fr.free.nrw.commons.notification.NotificationActivity
|
||||
import org.hamcrest.CoreMatchers
|
||||
import org.hamcrest.Matchers
|
||||
import org.junit.*
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class MainActivityTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule: ActivityTestRule<*> = ActivityTestRule(LoginActivity::class.java)
|
||||
|
||||
@get:Rule
|
||||
var mGrantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
|
||||
"android.permission.ACCESS_FINE_LOCATION"
|
||||
)
|
||||
var mGrantPermissionRule: GrantPermissionRule =
|
||||
GrantPermissionRule.grant(
|
||||
"android.permission.ACCESS_FINE_LOCATION",
|
||||
)
|
||||
|
||||
private val device: UiDevice =
|
||||
UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||
|
|
@ -48,7 +51,8 @@ class MainActivityTest {
|
|||
UITestHelper.loginUser()
|
||||
UITestHelper.skipWelcome()
|
||||
Intents.init()
|
||||
Intents.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
Intents
|
||||
.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
.respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null))
|
||||
val context = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
val storeName = context.packageName + "_preferences"
|
||||
|
|
@ -62,137 +66,149 @@ class MainActivityTest {
|
|||
|
||||
@Test
|
||||
fun testNearby() {
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
Espresso
|
||||
.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0,
|
||||
),
|
||||
1,
|
||||
),
|
||||
1
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
).perform(ViewActions.click())
|
||||
Espresso.onView(ViewMatchers.withId(R.id.fragmentContainer))
|
||||
).perform(ViewActions.click())
|
||||
Espresso
|
||||
.onView(ViewMatchers.withId(R.id.fragmentContainer))
|
||||
.check(matches(ViewMatchers.isDisplayed()))
|
||||
UITestHelper.sleep(10000)
|
||||
val actionMenuItemView2 = Espresso.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.list_sheet), ViewMatchers.withContentDescription("List"),
|
||||
childAtPosition(
|
||||
val actionMenuItemView2 =
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.list_sheet),
|
||||
ViewMatchers.withContentDescription("List"),
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.toolbar),
|
||||
1
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.toolbar),
|
||||
1,
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
)
|
||||
actionMenuItemView2.perform(ViewActions.click())
|
||||
UITestHelper.sleep(1000)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testExplore() {
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
Espresso
|
||||
.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0,
|
||||
),
|
||||
2,
|
||||
),
|
||||
2
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
).perform(ViewActions.click())
|
||||
Espresso.onView(ViewMatchers.withId(R.id.fragmentContainer))
|
||||
).perform(ViewActions.click())
|
||||
Espresso
|
||||
.onView(ViewMatchers.withId(R.id.fragmentContainer))
|
||||
.check(matches(ViewMatchers.isDisplayed()))
|
||||
UITestHelper.sleep(1000)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testContributions() {
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
Espresso
|
||||
.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0,
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
).perform(ViewActions.click())
|
||||
Espresso.onView(ViewMatchers.withId(R.id.fragmentContainer))
|
||||
).perform(ViewActions.click())
|
||||
Espresso
|
||||
.onView(ViewMatchers.withId(R.id.fragmentContainer))
|
||||
.check(matches(ViewMatchers.isDisplayed()))
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.contributionImage),
|
||||
childAtPosition(
|
||||
Espresso
|
||||
.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.contributionImage),
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.contributionsList),
|
||||
0
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.contributionsList),
|
||||
0,
|
||||
),
|
||||
1,
|
||||
),
|
||||
1
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
).perform(ViewActions.click())
|
||||
val actionMenuItemView = Espresso.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.menu_bookmark_current_image),
|
||||
childAtPosition(
|
||||
).perform(ViewActions.click())
|
||||
val actionMenuItemView =
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.menu_bookmark_current_image),
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.toolbar),
|
||||
1
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.toolbar),
|
||||
1,
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
)
|
||||
actionMenuItemView.perform(ViewActions.click())
|
||||
UITestHelper.sleep(3000)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testBookmarks() {
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
Espresso
|
||||
.onView(
|
||||
Matchers.allOf(
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0,
|
||||
),
|
||||
3,
|
||||
),
|
||||
3
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
).perform(ViewActions.click())
|
||||
).perform(ViewActions.click())
|
||||
UITestHelper.sleep(1000)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNotifications() {
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.notifications),
|
||||
childAtPosition(
|
||||
Espresso
|
||||
.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.notifications),
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.toolbar),
|
||||
1
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.toolbar),
|
||||
1,
|
||||
),
|
||||
1,
|
||||
),
|
||||
1
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
).perform(ViewActions.click())
|
||||
).perform(ViewActions.click())
|
||||
Intents.intended(IntentMatchers.hasComponent(NotificationActivity::class.java.name))
|
||||
Espresso.pressBack()
|
||||
UITestHelper.sleep(1000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import android.app.Activity
|
|||
import android.app.Instrumentation
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions
|
||||
import androidx.test.espresso.action.ViewActions.swipeRight
|
||||
import androidx.test.espresso.intent.Intents
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent
|
||||
|
|
@ -26,7 +25,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ProfileActivityTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule = IntentsTestRule(LoginActivity::class.java)
|
||||
|
||||
|
|
@ -38,7 +36,8 @@ class ProfileActivityTest {
|
|||
device.freezeRotation()
|
||||
UITestHelper.loginUser()
|
||||
UITestHelper.skipWelcome()
|
||||
Intents.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
Intents
|
||||
.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
.respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null))
|
||||
}
|
||||
|
||||
|
|
@ -50,20 +49,19 @@ class ProfileActivityTest {
|
|||
childAtPosition(
|
||||
childAtPosition(
|
||||
withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
0,
|
||||
),
|
||||
4
|
||||
4,
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
).perform(ViewActions.click())
|
||||
onView(Matchers.allOf(withId(R.id.more_profile))).perform(
|
||||
ViewActions.scrollTo(),
|
||||
ViewActions.click()
|
||||
ViewActions.click(),
|
||||
)
|
||||
device.swipe(1033,1346,531,1346,20)
|
||||
device.swipe(1033, 1346, 531, 1346, 20)
|
||||
UITestHelper.sleep(5000)
|
||||
Intents.intended(hasComponent(ProfileActivity::class.java.name))
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ReviewActivityTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule: ActivityTestRule<*> = ActivityTestRule(ReviewActivity::class.java)
|
||||
|
||||
|
|
@ -17,5 +16,4 @@ class ReviewActivityTest {
|
|||
fun orientationChange() {
|
||||
UITestHelper.changeOrientation(activityRule)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class SearchActivityTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule = ActivityTestRule(SearchActivity::class.java)
|
||||
|
||||
|
|
@ -31,21 +30,22 @@ class SearchActivityTest {
|
|||
|
||||
@Test
|
||||
fun exploreActivityTest() {
|
||||
val searchAutoComplete = Espresso.onView(
|
||||
Matchers.allOf(
|
||||
UITestHelper.childAtPosition(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withClassName(Matchers.`is`("android.widget.LinearLayout")),
|
||||
UITestHelper.childAtPosition(
|
||||
val searchAutoComplete =
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
UITestHelper.childAtPosition(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withClassName(Matchers.`is`("android.widget.LinearLayout")),
|
||||
1
|
||||
)
|
||||
UITestHelper.childAtPosition(
|
||||
ViewMatchers.withClassName(Matchers.`is`("android.widget.LinearLayout")),
|
||||
1,
|
||||
),
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
)
|
||||
searchAutoComplete.perform(ViewActions.replaceText("cat"), ViewActions.closeSoftKeyboard())
|
||||
UITestHelper.sleep(5000)
|
||||
device.swipe(1000, 1400, 500, 1400, 20)
|
||||
|
|
@ -56,4 +56,4 @@ class SearchActivityTest {
|
|||
device.swipe(800, 1400, 600, 1400, 20)
|
||||
UITestHelper.sleep(1000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class SettingsActivityLoggedInTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule: ActivityTestRule<*> = ActivityTestRule(LoginActivity::class.java)
|
||||
|
||||
|
|
@ -35,31 +34,32 @@ class SettingsActivityLoggedInTest {
|
|||
device.freezeRotation()
|
||||
UITestHelper.loginUser()
|
||||
UITestHelper.skipWelcome()
|
||||
Intents.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
Intents
|
||||
.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
.respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSettings() {
|
||||
Espresso.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withContentDescription("More"),
|
||||
UITestHelper.childAtPosition(
|
||||
Espresso
|
||||
.onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withContentDescription("More"),
|
||||
UITestHelper.childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
UITestHelper.childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0,
|
||||
),
|
||||
4,
|
||||
),
|
||||
4
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
).perform(ViewActions.click())
|
||||
).perform(ViewActions.click())
|
||||
Espresso.onView(Matchers.allOf(ViewMatchers.withId(R.id.more_settings))).perform(
|
||||
ViewActions.scrollTo(),
|
||||
ViewActions.click()
|
||||
ViewActions.click(),
|
||||
)
|
||||
Intents.intended(IntentMatchers.hasComponent(SettingsActivity::class.java.name))
|
||||
UITestHelper.sleep(1000)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class SettingsActivityTest {
|
||||
|
||||
private lateinit var defaultKvStore: JsonKvStore
|
||||
|
||||
@get:Rule
|
||||
|
|
@ -44,22 +43,24 @@ class SettingsActivityTest {
|
|||
fun useAuthorNameTogglesOn() {
|
||||
// Turn on "Use author name" preference if currently off
|
||||
if (!defaultKvStore.getBoolean("useAuthorName", false)) {
|
||||
Espresso.onView(
|
||||
allOf(
|
||||
withId(R.id.recycler_view),
|
||||
childAtPosition(withId(android.R.id.list_container), 0)
|
||||
Espresso
|
||||
.onView(
|
||||
allOf(
|
||||
withId(R.id.recycler_view),
|
||||
childAtPosition(withId(android.R.id.list_container), 0),
|
||||
),
|
||||
).perform(
|
||||
RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(6, click()),
|
||||
)
|
||||
).perform(
|
||||
RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(6, click())
|
||||
)
|
||||
}
|
||||
// Check authorName preference is enabled
|
||||
Espresso.onView(
|
||||
allOf(
|
||||
withId(R.id.recycler_view),
|
||||
childAtPosition(withId(android.R.id.list_container), 0)
|
||||
)
|
||||
).check(matches(isEnabled()))
|
||||
Espresso
|
||||
.onView(
|
||||
allOf(
|
||||
withId(R.id.recycler_view),
|
||||
childAtPosition(withId(android.R.id.list_container), 0),
|
||||
),
|
||||
).check(matches(isEnabled()))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -10,17 +10,20 @@ import androidx.test.espresso.action.ViewActions
|
|||
import androidx.test.espresso.matcher.ViewMatchers
|
||||
import androidx.test.rule.ActivityTestRule
|
||||
import org.apache.commons.lang3.StringUtils
|
||||
import org.hamcrest.*
|
||||
import org.hamcrest.BaseMatcher
|
||||
import org.hamcrest.Description
|
||||
import org.hamcrest.Matcher
|
||||
import org.hamcrest.Matchers
|
||||
import org.hamcrest.TypeSafeMatcher
|
||||
import timber.log.Timber
|
||||
|
||||
|
||||
class UITestHelper {
|
||||
companion object {
|
||||
fun skipWelcome() {
|
||||
try {
|
||||
onView(ViewMatchers.withId(R.id.button_ok))
|
||||
.perform(ViewActions.click())
|
||||
//Skip tutorial
|
||||
// Skip tutorial
|
||||
onView(ViewMatchers.withId(R.id.finishTutorialButton))
|
||||
.perform(ViewActions.click())
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
|
|
@ -29,27 +32,31 @@ class UITestHelper {
|
|||
|
||||
fun skipLogin() {
|
||||
try {
|
||||
//Skip Login
|
||||
val htmlTextView = onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.skip_login), ViewMatchers.withText("Skip"),
|
||||
ViewMatchers.isDisplayed()
|
||||
// Skip Login
|
||||
val htmlTextView =
|
||||
onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.skip_login),
|
||||
ViewMatchers.withText("Skip"),
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
)
|
||||
)
|
||||
htmlTextView.perform(ViewActions.click())
|
||||
|
||||
val appCompatButton = onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(android.R.id.button1), ViewMatchers.withText("Yes"),
|
||||
childAtPosition(
|
||||
val appCompatButton =
|
||||
onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(android.R.id.button1),
|
||||
ViewMatchers.withText("Yes"),
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.buttonPanel),
|
||||
0
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.buttonPanel),
|
||||
0,
|
||||
),
|
||||
3,
|
||||
),
|
||||
3
|
||||
)
|
||||
),
|
||||
)
|
||||
)
|
||||
appCompatButton.perform(ViewActions.scrollTo(), ViewActions.click())
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
}
|
||||
|
|
@ -57,18 +64,18 @@ class UITestHelper {
|
|||
|
||||
fun loginUser() {
|
||||
try {
|
||||
//Perform Login
|
||||
// Perform Login
|
||||
sleep(3000)
|
||||
onView(ViewMatchers.withId(R.id.login_username))
|
||||
.perform(
|
||||
ViewActions.replaceText(getTestUsername()),
|
||||
ViewActions.closeSoftKeyboard()
|
||||
ViewActions.closeSoftKeyboard(),
|
||||
)
|
||||
sleep(2000)
|
||||
onView(ViewMatchers.withId(R.id.login_password))
|
||||
.perform(
|
||||
ViewActions.replaceText(getTestUserPassword()),
|
||||
ViewActions.closeSoftKeyboard()
|
||||
ViewActions.closeSoftKeyboard(),
|
||||
)
|
||||
sleep(2000)
|
||||
onView(ViewMatchers.withId(R.id.login_button))
|
||||
|
|
@ -76,7 +83,6 @@ class UITestHelper {
|
|||
sleep(10000)
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun logoutUser() {
|
||||
|
|
@ -87,36 +93,38 @@ class UITestHelper {
|
|||
childAtPosition(
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
0,
|
||||
),
|
||||
4
|
||||
4,
|
||||
),
|
||||
ViewMatchers.isDisplayed()
|
||||
)
|
||||
ViewMatchers.isDisplayed(),
|
||||
),
|
||||
).perform(ViewActions.click())
|
||||
onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(R.id.more_logout), ViewMatchers.withText("Logout"),
|
||||
ViewMatchers.withId(R.id.more_logout),
|
||||
ViewMatchers.withText("Logout"),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.scroll_view_more_bottom_sheet),
|
||||
0
|
||||
0,
|
||||
),
|
||||
6
|
||||
)
|
||||
)
|
||||
6,
|
||||
),
|
||||
),
|
||||
).perform(ViewActions.scrollTo(), ViewActions.click())
|
||||
onView(
|
||||
Matchers.allOf(
|
||||
ViewMatchers.withId(android.R.id.button1), ViewMatchers.withText("Yes"),
|
||||
ViewMatchers.withId(android.R.id.button1),
|
||||
ViewMatchers.withText("Yes"),
|
||||
childAtPosition(
|
||||
childAtPosition(
|
||||
ViewMatchers.withId(R.id.buttonPanel),
|
||||
0
|
||||
0,
|
||||
),
|
||||
3
|
||||
)
|
||||
)
|
||||
3,
|
||||
),
|
||||
),
|
||||
).perform(ViewActions.scrollTo(), ViewActions.click())
|
||||
sleep(5000)
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
|
|
@ -124,9 +132,9 @@ class UITestHelper {
|
|||
}
|
||||
|
||||
fun childAtPosition(
|
||||
parentMatcher: Matcher<View>, position: Int
|
||||
parentMatcher: Matcher<View>,
|
||||
position: Int,
|
||||
): Matcher<View> {
|
||||
|
||||
return object : TypeSafeMatcher<View>() {
|
||||
override fun describeTo(description: Description) {
|
||||
description.appendText("Child at position $position in parent ")
|
||||
|
|
@ -135,8 +143,9 @@ class UITestHelper {
|
|||
|
||||
public override fun matchesSafely(view: View): Boolean {
|
||||
val parent = view.parent
|
||||
return parent is ViewGroup && parentMatcher.matches(parent)
|
||||
&& view == parent.getChildAt(position)
|
||||
return parent is ViewGroup &&
|
||||
parentMatcher.matches(parent) &&
|
||||
view == parent.getChildAt(position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -154,14 +163,18 @@ class UITestHelper {
|
|||
val username = BuildConfig.TEST_USERNAME
|
||||
if (StringUtils.isEmpty(username) || username == "null") {
|
||||
throw NotImplementedError("Configure your beta account's username")
|
||||
} else return username
|
||||
} else {
|
||||
return username
|
||||
}
|
||||
}
|
||||
|
||||
private fun getTestUserPassword(): String {
|
||||
val password = BuildConfig.TEST_PASSWORD
|
||||
if (StringUtils.isEmpty(password) || password == "null") {
|
||||
throw NotImplementedError("Configure your beta account's password")
|
||||
} else return password
|
||||
} else {
|
||||
return password
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : Activity> changeOrientation(activityRule: ActivityTestRule<T>) {
|
||||
|
|
@ -174,6 +187,7 @@ class UITestHelper {
|
|||
fun <T> first(matcher: Matcher<T>): Matcher<T>? {
|
||||
return object : BaseMatcher<T>() {
|
||||
var isFirst = true
|
||||
|
||||
override fun matches(item: Any): Boolean {
|
||||
if (isFirst && matcher.matches(item)) {
|
||||
isFirst = false
|
||||
|
|
@ -188,4 +202,4 @@ class UITestHelper {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,10 @@ import android.app.Activity
|
|||
import android.app.Instrumentation
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions.*
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.action.ViewActions.closeSoftKeyboard
|
||||
import androidx.test.espresso.action.ViewActions.replaceText
|
||||
import androidx.test.espresso.action.ViewActions.scrollTo
|
||||
import androidx.test.espresso.contrib.RecyclerViewActions
|
||||
import androidx.test.espresso.intent.Intents
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers
|
||||
|
|
@ -28,7 +31,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class UploadCancelledTest {
|
||||
|
||||
@Rule
|
||||
@JvmField
|
||||
var mActivityTestRule = ActivityTestRule(LoginActivity::class.java)
|
||||
|
|
@ -37,7 +39,7 @@ class UploadCancelledTest {
|
|||
@JvmField
|
||||
var mGrantPermissionRule: GrantPermissionRule =
|
||||
GrantPermissionRule.grant(
|
||||
"android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
"android.permission.WRITE_EXTERNAL_STORAGE",
|
||||
)
|
||||
|
||||
private val device: UiDevice =
|
||||
|
|
@ -48,14 +50,14 @@ class UploadCancelledTest {
|
|||
try {
|
||||
Intents.init()
|
||||
} catch (ex: IllegalStateException) {
|
||||
|
||||
}
|
||||
device.unfreezeRotation()
|
||||
device.setOrientationNatural()
|
||||
device.freezeRotation()
|
||||
UITestHelper.loginUser()
|
||||
UITestHelper.skipWelcome()
|
||||
Intents.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
Intents
|
||||
.intending(CoreMatchers.not(IntentMatchers.isInternal()))
|
||||
.respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null))
|
||||
}
|
||||
|
||||
|
|
@ -64,130 +66,137 @@ class UploadCancelledTest {
|
|||
try {
|
||||
Intents.release()
|
||||
} catch (ex: IllegalStateException) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun uploadCancelledAfterLocationPickedTest() {
|
||||
|
||||
val bottomNavigationItemView = onView(
|
||||
allOf(
|
||||
childAtPosition(
|
||||
val bottomNavigationItemView =
|
||||
onView(
|
||||
allOf(
|
||||
childAtPosition(
|
||||
withId(R.id.fragment_main_nav_tab_layout),
|
||||
0
|
||||
childAtPosition(
|
||||
withId(R.id.fragment_main_nav_tab_layout),
|
||||
0,
|
||||
),
|
||||
1,
|
||||
),
|
||||
1
|
||||
isDisplayed(),
|
||||
),
|
||||
isDisplayed()
|
||||
)
|
||||
)
|
||||
bottomNavigationItemView.perform(click())
|
||||
|
||||
UITestHelper.sleep(12000)
|
||||
|
||||
val actionMenuItemView = onView(
|
||||
allOf(
|
||||
withId(R.id.list_sheet),
|
||||
childAtPosition(
|
||||
val actionMenuItemView =
|
||||
onView(
|
||||
allOf(
|
||||
withId(R.id.list_sheet),
|
||||
childAtPosition(
|
||||
withId(R.id.toolbar),
|
||||
1
|
||||
childAtPosition(
|
||||
withId(R.id.toolbar),
|
||||
1,
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
isDisplayed(),
|
||||
),
|
||||
isDisplayed()
|
||||
)
|
||||
)
|
||||
actionMenuItemView.perform(click())
|
||||
|
||||
val recyclerView = onView(
|
||||
allOf(
|
||||
withId(R.id.rv_nearby_list),
|
||||
val recyclerView =
|
||||
onView(
|
||||
allOf(
|
||||
withId(R.id.rv_nearby_list),
|
||||
),
|
||||
)
|
||||
)
|
||||
recyclerView.perform(
|
||||
RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>(
|
||||
0,
|
||||
click()
|
||||
)
|
||||
click(),
|
||||
),
|
||||
)
|
||||
|
||||
val linearLayout3 = onView(
|
||||
allOf(
|
||||
withId(R.id.cameraButton),
|
||||
childAtPosition(
|
||||
allOf(
|
||||
withId(R.id.nearby_button_layout),
|
||||
val linearLayout3 =
|
||||
onView(
|
||||
allOf(
|
||||
withId(R.id.cameraButton),
|
||||
childAtPosition(
|
||||
allOf(
|
||||
withId(R.id.nearby_button_layout),
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
isDisplayed(),
|
||||
),
|
||||
isDisplayed()
|
||||
)
|
||||
)
|
||||
linearLayout3.perform(click())
|
||||
|
||||
val pasteSensitiveTextInputEditText = onView(
|
||||
allOf(
|
||||
withId(R.id.caption_item_edit_text),
|
||||
childAtPosition(
|
||||
val pasteSensitiveTextInputEditText =
|
||||
onView(
|
||||
allOf(
|
||||
withId(R.id.caption_item_edit_text),
|
||||
childAtPosition(
|
||||
withId(R.id.caption_item_edit_text_input_layout),
|
||||
0
|
||||
childAtPosition(
|
||||
withId(R.id.caption_item_edit_text_input_layout),
|
||||
0,
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
isDisplayed(),
|
||||
),
|
||||
isDisplayed()
|
||||
)
|
||||
)
|
||||
pasteSensitiveTextInputEditText.perform(replaceText("test"), closeSoftKeyboard())
|
||||
|
||||
val pasteSensitiveTextInputEditText2 = onView(
|
||||
allOf(
|
||||
withId(R.id.description_item_edit_text),
|
||||
childAtPosition(
|
||||
val pasteSensitiveTextInputEditText2 =
|
||||
onView(
|
||||
allOf(
|
||||
withId(R.id.description_item_edit_text),
|
||||
childAtPosition(
|
||||
withId(R.id.description_item_edit_text_input_layout),
|
||||
0
|
||||
childAtPosition(
|
||||
withId(R.id.description_item_edit_text_input_layout),
|
||||
0,
|
||||
),
|
||||
0,
|
||||
),
|
||||
0
|
||||
isDisplayed(),
|
||||
),
|
||||
isDisplayed()
|
||||
)
|
||||
)
|
||||
pasteSensitiveTextInputEditText2.perform(replaceText("test"), closeSoftKeyboard())
|
||||
|
||||
val appCompatButton2 = onView(
|
||||
allOf(
|
||||
withId(R.id.btn_next),
|
||||
childAtPosition(
|
||||
val appCompatButton2 =
|
||||
onView(
|
||||
allOf(
|
||||
withId(R.id.btn_next),
|
||||
childAtPosition(
|
||||
withId(R.id.ll_container_media_detail),
|
||||
2
|
||||
childAtPosition(
|
||||
withId(R.id.ll_container_media_detail),
|
||||
2,
|
||||
),
|
||||
1,
|
||||
),
|
||||
1
|
||||
isDisplayed(),
|
||||
),
|
||||
isDisplayed()
|
||||
)
|
||||
)
|
||||
appCompatButton2.perform(click())
|
||||
|
||||
val appCompatButton3 = onView(
|
||||
allOf(
|
||||
withId(android.R.id.button1),
|
||||
val appCompatButton3 =
|
||||
onView(
|
||||
allOf(
|
||||
withId(android.R.id.button1),
|
||||
),
|
||||
)
|
||||
)
|
||||
appCompatButton3.perform(scrollTo(), click())
|
||||
|
||||
Intents.intended(IntentMatchers.hasComponent(LocationPickerActivity::class.java.name))
|
||||
|
||||
val floatingActionButton3 = onView(
|
||||
allOf(
|
||||
withId(R.id.location_chosen_button),
|
||||
isDisplayed()
|
||||
val floatingActionButton3 =
|
||||
onView(
|
||||
allOf(
|
||||
withId(R.id.location_chosen_button),
|
||||
isDisplayed(),
|
||||
),
|
||||
)
|
||||
)
|
||||
UITestHelper.sleep(2000)
|
||||
floatingActionButton3.perform(click())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,10 @@ import androidx.test.espresso.intent.Intents.intended
|
|||
import androidx.test.espresso.intent.Intents.intending
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers.hasAction
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers.hasType
|
||||
import androidx.test.espresso.matcher.ViewMatchers.*
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withParent
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.LargeTest
|
||||
import androidx.test.rule.ActivityTestRule
|
||||
|
|
@ -29,21 +32,29 @@ import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
|||
import fr.free.nrw.commons.util.MyViewAction
|
||||
import fr.free.nrw.commons.utils.ConfigUtils
|
||||
import org.hamcrest.core.AllOf.allOf
|
||||
import org.junit.*
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Ignore
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import timber.log.Timber
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import java.util.Date
|
||||
import java.util.Random
|
||||
|
||||
@LargeTest
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class UploadTest {
|
||||
@get:Rule
|
||||
var permissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.ACCESS_FINE_LOCATION)!!
|
||||
var permissionRule =
|
||||
GrantPermissionRule.grant(
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.ACCESS_FINE_LOCATION,
|
||||
)!!
|
||||
|
||||
@get:Rule
|
||||
var activityRule = ActivityTestRule(LoginActivity::class.java)
|
||||
|
|
@ -61,7 +72,6 @@ class UploadTest {
|
|||
try {
|
||||
Intents.init()
|
||||
} catch (ex: IllegalStateException) {
|
||||
|
||||
}
|
||||
UITestHelper.loginUser()
|
||||
UITestHelper.skipWelcome()
|
||||
|
|
@ -94,14 +104,13 @@ class UploadTest {
|
|||
dismissWarning("Yes")
|
||||
|
||||
onView(allOf<View>(isDisplayed(), withId(R.id.tv_title)))
|
||||
.perform(replaceText(commonsFileName))
|
||||
.perform(replaceText(commonsFileName))
|
||||
|
||||
onView(allOf<View>(isDisplayed(), withId(R.id.description_item_edit_text)))
|
||||
.perform(replaceText(commonsFileName))
|
||||
|
||||
.perform(replaceText(commonsFileName))
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_next)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
UITestHelper.sleep(5000)
|
||||
dismissWarning("Yes")
|
||||
|
|
@ -109,29 +118,30 @@ class UploadTest {
|
|||
UITestHelper.sleep(3000)
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.et_search)))
|
||||
.perform(replaceText("Uploaded with Mobile/Android Tests"))
|
||||
.perform(replaceText("Uploaded with Mobile/Android Tests"))
|
||||
|
||||
UITestHelper.sleep(3000)
|
||||
|
||||
try {
|
||||
onView(allOf(isDisplayed(), UITestHelper.first(withParent(withId(R.id.rv_categories)))))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
}
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_next)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
dismissWarning("Yes, Submit")
|
||||
|
||||
UITestHelper.sleep(500)
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_submit)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
UITestHelper.sleep(10000)
|
||||
|
||||
val fileUrl = "https://commons.wikimedia.beta.wmflabs.org/wiki/File:" +
|
||||
val fileUrl =
|
||||
"https://commons.wikimedia.beta.wmflabs.org/wiki/File:" +
|
||||
commonsFileName.replace(' ', '_') + ".jpg"
|
||||
Timber.i("File should be uploaded to $fileUrl")
|
||||
}
|
||||
|
|
@ -139,8 +149,8 @@ class UploadTest {
|
|||
private fun dismissWarning(warningText: String) {
|
||||
try {
|
||||
onView(withText(warningText))
|
||||
.check(matches(isDisplayed()))
|
||||
.perform(click())
|
||||
.check(matches(isDisplayed()))
|
||||
.perform(click())
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
}
|
||||
}
|
||||
|
|
@ -167,10 +177,10 @@ class UploadTest {
|
|||
dismissWarning("Yes")
|
||||
|
||||
onView(allOf<View>(isDisplayed(), withId(R.id.tv_title)))
|
||||
.perform(replaceText(commonsFileName))
|
||||
.perform(replaceText(commonsFileName))
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_next)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
UITestHelper.sleep(10000)
|
||||
dismissWarning("Yes")
|
||||
|
|
@ -178,29 +188,30 @@ class UploadTest {
|
|||
UITestHelper.sleep(3000)
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.et_search)))
|
||||
.perform(replaceText("Test"))
|
||||
.perform(replaceText("Test"))
|
||||
|
||||
UITestHelper.sleep(3000)
|
||||
|
||||
try {
|
||||
onView(allOf(isDisplayed(), UITestHelper.first(withParent(withId(R.id.rv_categories)))))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
}
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_next)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
dismissWarning("Yes, Submit")
|
||||
|
||||
UITestHelper.sleep(500)
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_submit)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
UITestHelper.sleep(10000)
|
||||
|
||||
val fileUrl = "https://commons.wikimedia.beta.wmflabs.org/wiki/File:" +
|
||||
val fileUrl =
|
||||
"https://commons.wikimedia.beta.wmflabs.org/wiki/File:" +
|
||||
commonsFileName.replace(' ', '_') + ".jpg"
|
||||
Timber.i("File should be uploaded to $fileUrl")
|
||||
}
|
||||
|
|
@ -227,23 +238,29 @@ class UploadTest {
|
|||
dismissWarningDialog()
|
||||
|
||||
onView(allOf<View>(isDisplayed(), withId(R.id.tv_title)))
|
||||
.perform(replaceText(commonsFileName))
|
||||
.perform(replaceText(commonsFileName))
|
||||
|
||||
onView(withId(R.id.rv_descriptions)).perform(
|
||||
RecyclerViewActions
|
||||
.actionOnItemAtPosition<UploadMediaDetailAdapter.ViewHolder>(0,
|
||||
MyViewAction.typeTextInChildViewWithId(R.id.description_item_edit_text, "Test description")))
|
||||
RecyclerViewActions
|
||||
.actionOnItemAtPosition<UploadMediaDetailAdapter.ViewHolder>(
|
||||
0,
|
||||
MyViewAction.typeTextInChildViewWithId(R.id.description_item_edit_text, "Test description"),
|
||||
),
|
||||
)
|
||||
|
||||
onView(withId(R.id.btn_add))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
onView(withId(R.id.rv_descriptions)).perform(
|
||||
RecyclerViewActions
|
||||
.actionOnItemAtPosition<UploadMediaDetailAdapter.ViewHolder>(1,
|
||||
MyViewAction.typeTextInChildViewWithId(R.id.description_item_edit_text, "Description")))
|
||||
RecyclerViewActions
|
||||
.actionOnItemAtPosition<UploadMediaDetailAdapter.ViewHolder>(
|
||||
1,
|
||||
MyViewAction.typeTextInChildViewWithId(R.id.description_item_edit_text, "Description"),
|
||||
),
|
||||
)
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_next)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
UITestHelper.sleep(5000)
|
||||
dismissWarning("Yes")
|
||||
|
|
@ -251,29 +268,30 @@ class UploadTest {
|
|||
UITestHelper.sleep(3000)
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.et_search)))
|
||||
.perform(replaceText("Test"))
|
||||
.perform(replaceText("Test"))
|
||||
|
||||
UITestHelper.sleep(3000)
|
||||
|
||||
try {
|
||||
onView(allOf(isDisplayed(), UITestHelper.first(withParent(withId(R.id.rv_categories)))))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
}
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_next)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
dismissWarning("Yes, Submit")
|
||||
|
||||
UITestHelper.sleep(500)
|
||||
|
||||
onView(allOf(isDisplayed(), withId(R.id.btn_submit)))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
UITestHelper.sleep(10000)
|
||||
|
||||
val fileUrl = "https://commons.wikimedia.beta.wmflabs.org/wiki/File:" +
|
||||
val fileUrl =
|
||||
"https://commons.wikimedia.beta.wmflabs.org/wiki/File:" +
|
||||
commonsFileName.replace(' ', '_') + ".jpg"
|
||||
Timber.i("File should be uploaded to $fileUrl")
|
||||
}
|
||||
|
|
@ -306,7 +324,6 @@ class UploadTest {
|
|||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -328,8 +345,8 @@ class UploadTest {
|
|||
private fun dismissWarningDialog() {
|
||||
try {
|
||||
onView(withText("Yes"))
|
||||
.check(matches(isDisplayed()))
|
||||
.perform(click())
|
||||
.check(matches(isDisplayed()))
|
||||
.perform(click())
|
||||
} catch (ignored: NoMatchingViewException) {
|
||||
}
|
||||
}
|
||||
|
|
@ -337,10 +354,10 @@ class UploadTest {
|
|||
private fun openGallery() {
|
||||
// Open FAB
|
||||
onView(allOf<View>(withId(R.id.fab_plus), isDisplayed()))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
|
||||
// Click gallery
|
||||
onView(allOf<View>(withId(R.id.fab_gallery), isDisplayed()))
|
||||
.perform(click())
|
||||
.perform(click())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package fr.free.nrw.commons
|
|||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.matcher.ViewMatchers
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
|
|
@ -22,7 +21,6 @@ import org.junit.runner.RunWith
|
|||
@LargeTest
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class WelcomeActivityTest {
|
||||
|
||||
@get:Rule
|
||||
var activityRule: ActivityTestRule<*> = ActivityTestRule(WelcomeActivity::class.java)
|
||||
|
||||
|
|
@ -130,4 +128,4 @@ class WelcomeActivityTest {
|
|||
fun orientationChange() {
|
||||
UITestHelper.changeOrientation(activityRule)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import org.junit.runner.RunWith
|
|||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class PasteSensitiveTextInputEditTextTest {
|
||||
|
||||
private var context: Context? = null
|
||||
private var textView: PasteSensitiveTextInputEditText? = null
|
||||
|
||||
|
|
@ -23,9 +22,13 @@ class PasteSensitiveTextInputEditTextTest {
|
|||
|
||||
// this test has no real value, just % for test code coverage
|
||||
@Test
|
||||
fun extractFormattingAttributeSet(){
|
||||
val methodExtractFormattingAttribute = textView!!.javaClass.getDeclaredMethod(
|
||||
"extractFormattingAttribute", Context::class.java, AttributeSet::class.java)
|
||||
fun extractFormattingAttributeSet() {
|
||||
val methodExtractFormattingAttribute =
|
||||
textView!!.javaClass.getDeclaredMethod(
|
||||
"extractFormattingAttribute",
|
||||
Context::class.java,
|
||||
AttributeSet::class.java,
|
||||
)
|
||||
methodExtractFormattingAttribute.isAccessible = true
|
||||
methodExtractFormattingAttribute.invoke(textView, context, null)
|
||||
}
|
||||
|
|
@ -40,4 +43,4 @@ class PasteSensitiveTextInputEditTextTest {
|
|||
textView!!.setFormattingAllowed(false)
|
||||
Assert.assertFalse(fieldFormattingAllowed.getBoolean(textView))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,56 +9,58 @@ import org.hamcrest.Matcher
|
|||
|
||||
class MyViewAction {
|
||||
companion object {
|
||||
fun typeTextInChildViewWithId(id: Int, textToBeTyped: String): ViewAction {
|
||||
return object : ViewAction {
|
||||
override fun getConstraints(): Matcher<View>? {
|
||||
return null
|
||||
}
|
||||
fun typeTextInChildViewWithId(
|
||||
id: Int,
|
||||
textToBeTyped: String,
|
||||
): ViewAction =
|
||||
object : ViewAction {
|
||||
override fun getConstraints(): Matcher<View>? = null
|
||||
|
||||
override fun getDescription(): String {
|
||||
return "Click on a child view with specified id."
|
||||
}
|
||||
override fun getDescription(): String = "Click on a child view with specified id."
|
||||
|
||||
override fun perform(uiController: UiController, view: View) {
|
||||
override fun perform(
|
||||
uiController: UiController,
|
||||
view: View,
|
||||
) {
|
||||
val v = view.findViewById<View>(id) as EditText
|
||||
v.setText(textToBeTyped)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun selectSpinnerItemInChildViewWithId(id: Int, position: Int): ViewAction {
|
||||
return object : ViewAction {
|
||||
override fun getConstraints(): Matcher<View>? {
|
||||
return null
|
||||
}
|
||||
fun selectSpinnerItemInChildViewWithId(
|
||||
id: Int,
|
||||
position: Int,
|
||||
): ViewAction =
|
||||
object : ViewAction {
|
||||
override fun getConstraints(): Matcher<View>? = null
|
||||
|
||||
override fun getDescription(): String {
|
||||
return "Click on a child view with specified id."
|
||||
}
|
||||
override fun getDescription(): String = "Click on a child view with specified id."
|
||||
|
||||
override fun perform(uiController: UiController, view: View) {
|
||||
override fun perform(
|
||||
uiController: UiController,
|
||||
view: View,
|
||||
) {
|
||||
val v = view.findViewById<View>(id) as AppCompatSpinner
|
||||
v.setSelection(position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun clickItemWithId(id: Int, position: Int): ViewAction {
|
||||
return object : ViewAction {
|
||||
override fun getConstraints(): Matcher<View>? {
|
||||
return null
|
||||
}
|
||||
fun clickItemWithId(
|
||||
id: Int,
|
||||
position: Int,
|
||||
): ViewAction =
|
||||
object : ViewAction {
|
||||
override fun getConstraints(): Matcher<View>? = null
|
||||
|
||||
override fun getDescription(): String {
|
||||
return "Click on a child view with specified id."
|
||||
}
|
||||
override fun getDescription(): String = "Click on a child view with specified id."
|
||||
|
||||
override fun perform(uiController: UiController, view: View) {
|
||||
override fun perform(
|
||||
uiController: UiController,
|
||||
view: View,
|
||||
) {
|
||||
val v = view.findViewById<View>(id) as View
|
||||
v.performClick()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue