diff --git a/app/src/test/kotlin/fr/free/nrw/commons/campaigns/CampaignViewUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/campaigns/CampaignViewUnitTests.kt new file mode 100644 index 000000000..792ed32bb --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/campaigns/CampaignViewUnitTests.kt @@ -0,0 +1,89 @@ +package fr.free.nrw.commons.campaigns + +import android.app.Activity +import android.view.View +import fr.free.nrw.commons.TestAppAdapter +import fr.free.nrw.commons.TestCommonsApplication +import fr.free.nrw.commons.contributions.MainActivity +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.MockitoAnnotations +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.android.controller.ActivityController +import org.robolectric.annotation.Config +import org.wikipedia.AppAdapter +import java.lang.reflect.Method + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [21], application = TestCommonsApplication::class) +class CampaignViewUnitTests { + + private lateinit var activityController: ActivityController + private lateinit var activity: MainActivity + private lateinit var campaignView: CampaignView + private lateinit var campaign: Campaign + + @Mock + private lateinit var view: View + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + + AppAdapter.set(TestAppAdapter()) + + activityController = Robolectric.buildActivity(Activity::class.java) + activity = Robolectric.buildActivity(MainActivity::class.java).create().get() + + campaignView = CampaignView(activity) + campaignView = CampaignView(activity, null) + campaignView = CampaignView(activity, null, 0) + } + + @Test + @Throws(Exception::class) + fun checkNotNull() { + Assert.assertNotNull(campaignView) + } + + @Test + @Throws(Exception::class) + fun testSetCampaignNonNullNonException() { + campaign = Campaign("", "", "2000-01-01", "2000-01-02", "") + campaignView.setCampaign(campaign) + } + + @Test + @Throws(Exception::class) + fun testSetCampaignNonNullException() { + campaign = Campaign("", "", "", "", "") + campaignView.setCampaign(campaign) + } + + @Test + @Throws(Exception::class) + fun testSetCampaignNull() { + campaignView.setCampaign(null) + } + + @Test + @Throws(Exception::class) + fun testOnSwipe() { + campaignView.onSwipe(view) + } + + @Test + @Throws(Exception::class) + fun testInit() { + val method: Method = CampaignView::class.java.getDeclaredMethod( + "init" + ) + method.isAccessible = true + method.invoke(campaignView) + } + +} \ No newline at end of file diff --git a/app/src/test/kotlin/fr/free/nrw/commons/campaigns/CampaignsPresenterTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/campaigns/CampaignsPresenterTest.kt index e1dee8af2..4a9b17c4b 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/campaigns/CampaignsPresenterTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/campaigns/CampaignsPresenterTest.kt @@ -3,12 +3,14 @@ package fr.free.nrw.commons.campaigns import com.nhaarman.mockitokotlin2.verify import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient import io.reactivex.Single +import io.reactivex.disposables.Disposable import io.reactivex.schedulers.TestScheduler import org.junit.Before import org.junit.Test import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations +import java.lang.reflect.Field import java.text.SimpleDateFormat import java.util.* import kotlin.collections.ArrayList @@ -31,6 +33,9 @@ class CampaignsPresenterTest { lateinit var testScheduler: TestScheduler + @Mock + private lateinit var disposable: Disposable + /** * initial setup, test environment */ @@ -74,4 +79,30 @@ class CampaignsPresenterTest { testScheduler.triggerActions() verify(view).showCampaigns(campaign) } + + @Test + fun testGetCampaignsNonNull() { + val campaignField: Field = + CampaignsPresenter::class.java.getDeclaredField("campaign") + campaignField.isAccessible = true + campaignField.set(campaignsPresenter, campaign) + campaignsPresenter.getCampaigns() + } + + @Test + @Throws(Exception::class) + fun testOnDetachViewNull() { + campaignsPresenter.onDetachView() + } + + @Test + @Throws(Exception::class) + fun testOnDetachViewNonNull() { + val disposableField: Field = + CampaignsPresenter::class.java.getDeclaredField("disposable") + disposableField.isAccessible = true + disposableField.set(campaignsPresenter, disposable) + campaignsPresenter.onDetachView() + } + }