From 11030e27f4e013a2b20e9355284cf3e251359d13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey?= Date: Tue, 25 Oct 2022 10:56:56 +0200 Subject: [PATCH] Add sample unit and connected test for shared items activity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Brey --- app/build.gradle | 5 ++ .../activities/SharedItemsActivityTest.kt | 33 +++++++++++ .../SharedItemsRepositoryImplTest.kt | 57 +++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 app/src/androidTest/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivityTest.kt create mode 100644 app/src/test/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImplTest.kt diff --git a/app/build.gradle b/app/build.gradle index 2f202be78..1748163ae 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -152,6 +152,7 @@ ext { workVersion = "2.7.1" markwonVersion = "4.6.2" espressoVersion = "3.4.0" + mockkVersion = "1.13.2" } def webRtcVersion = "96.4664.0" @@ -294,8 +295,12 @@ dependencies { testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito:mockito-core:4.8.1' + testImplementation "io.mockk:mockk:$mockkVersion" + testImplementation "io.mockk:mockk-android:$mockkVersion" + androidTestImplementation "androidx.test:core:1.4.0" + androidTestImplementation "androidx.test:core-ktx:1.4.0" // Espresso core androidTestImplementation ("androidx.test.espresso:espresso-core:$espressoVersion", { diff --git a/app/src/androidTest/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivityTest.kt b/app/src/androidTest/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivityTest.kt new file mode 100644 index 000000000..d04744043 --- /dev/null +++ b/app/src/androidTest/java/com/nextcloud/talk/shareditems/activities/SharedItemsActivityTest.kt @@ -0,0 +1,33 @@ +package com.nextcloud.talk.shareditems.activities + +import android.content.Intent +import androidx.core.os.bundleOf +import androidx.core.view.isVisible +import androidx.test.core.app.ApplicationProvider +import androidx.test.core.app.launchActivity +import androidx.test.espresso.Espresso +import androidx.test.espresso.matcher.ViewMatchers.withId +import com.nextcloud.talk.data.user.model.User +import com.nextcloud.talk.utils.bundle.BundleKeys +import org.junit.Test + +import com.nextcloud.talk.R + +class SharedItemsActivityTest { + + @Test + fun launch() { + val intent = Intent(ApplicationProvider.getApplicationContext(), SharedItemsActivity::class.java).apply { + putExtras( + bundleOf( + BundleKeys.KEY_ROOM_TOKEN to "", + BundleKeys.KEY_CONVERSATION_NAME to "", + BundleKeys.KEY_USER_ENTITY to User(1L, ", ", ", ", "", token = "") + ) + ) + } + launchActivity(intent).use { scenario -> + Espresso.onView(withId(R.id.emptyContainer)).check { view, _ -> view.isVisible } + } + } +} diff --git a/app/src/test/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImplTest.kt b/app/src/test/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImplTest.kt new file mode 100644 index 000000000..250d40d85 --- /dev/null +++ b/app/src/test/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImplTest.kt @@ -0,0 +1,57 @@ +package com.nextcloud.talk.shareditems.repositories + +import android.text.TextUtils +import com.nextcloud.talk.api.NcApi +import com.nextcloud.talk.models.json.chat.ChatShareOCS +import com.nextcloud.talk.models.json.chat.ChatShareOverall +import com.nextcloud.talk.shareditems.model.SharedItemType +import com.nextcloud.talk.shareditems.model.SharedItems +import io.mockk.every +import io.mockk.mockk +import io.mockk.mockkStatic +import io.mockk.unmockkStatic +import io.reactivex.Observable +import org.junit.After +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import retrofit2.Response + +class SharedItemsRepositoryImplTest { + + @Before + fun setup() { + mockkStatic(TextUtils::class) + every { TextUtils.isEmpty(any()) } returns false + } + + @After + fun tearDown() { + unmockkStatic(TextUtils::class) + } + + @Test + fun testMedia_empty() { + // arrange + val ncApi: NcApi = mockk() + val sut: SharedItemsRepository = SharedItemsRepositoryImpl(ncApi) + + val result = ChatShareOverall(ChatShareOCS(HashMap())) + + every { ncApi.getSharedItems(any(), any(), any(), any(), any()) } returns Observable.just( + Response.success( + result + ) + ) + + // act + val observable: Observable? = + sut.media(SharedItemsRepository.Parameters("", "", "", ""), SharedItemType.MEDIA) + + // assert + Assert.assertNotNull("Shared items result is null", observable) + + val sharedItems = observable!!.blockingFirst() + Assert.assertTrue("Shared items not empty", sharedItems.items.isEmpty()) + } +}