From 9562fd1f2c05bf180b6d46c098f751eeadeb47a7 Mon Sep 17 00:00:00 2001 From: Aditya-Srivastav <54016427+4D17Y4@users.noreply.github.com> Date: Sat, 15 May 2021 18:56:01 +0530 Subject: [PATCH] added bookmarkLocationFragment unit tests (#4407) * added bookmarkLocationFragment unit tests * more lines covered --- .../BookmarkLocationFragmentUnitTests.kt | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationFragmentUnitTests.kt diff --git a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationFragmentUnitTests.kt new file mode 100644 index 000000000..c578657e0 --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationFragmentUnitTests.kt @@ -0,0 +1,166 @@ +package fr.free.nrw.commons.bookmarks.locations + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.ProgressBar +import android.widget.RelativeLayout +import android.widget.TextView +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentTransaction +import androidx.recyclerview.widget.RecyclerView +import com.nhaarman.mockitokotlin2.whenever +import fr.free.nrw.commons.R +import fr.free.nrw.commons.TestAppAdapter +import fr.free.nrw.commons.TestCommonsApplication +import fr.free.nrw.commons.contributions.ContributionController +import fr.free.nrw.commons.kvstore.JsonKvStore +import fr.free.nrw.commons.nearby.Place +import fr.free.nrw.commons.nearby.fragments.CommonPlaceClickActions +import fr.free.nrw.commons.nearby.fragments.PlaceAdapter +import fr.free.nrw.commons.profile.ProfileActivity +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.powermock.reflect.Whitebox +import org.robolectric.Robolectric +import org.robolectric.RobolectricTestRunner +import org.robolectric.RuntimeEnvironment +import org.robolectric.annotation.Config +import org.robolectric.annotation.LooperMode +import org.wikipedia.AppAdapter +import java.lang.reflect.Method +import java.util.ArrayList + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [21], application = TestCommonsApplication::class) +@LooperMode(LooperMode.Mode.PAUSED) +class BookmarkLocationFragmentUnitTests { + + private lateinit var fragment: BookmarkLocationsFragment + private lateinit var context: Context + private lateinit var view: View + private lateinit var statusTextView: TextView + private lateinit var progressBar: ProgressBar + private lateinit var recyclerView: RecyclerView + private lateinit var commonPlaceClickActions: CommonPlaceClickActions + private lateinit var layoutInflater: LayoutInflater + + @Mock + lateinit var store: JsonKvStore + + @Mock + private lateinit var parentLayout: RelativeLayout + + @Mock + private lateinit var savedInstanceState: Bundle + + @Mock + private lateinit var bookmarkLocationDao: BookmarkLocationsDao + + @Mock + private lateinit var controller: BookmarkLocationsController + + @Mock + private lateinit var contributionController: ContributionController + + @Mock + private lateinit var adapter: PlaceAdapter + + /** + * Get Mock bookmark list. + */ + private val mockBookmarkList: List + private get() { + val list = ArrayList() + list.add(Place("en","a place",null,"a description",null,"a cat",null,null,true)) + return list + } + + /** + * fragment Setup + */ + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + context = RuntimeEnvironment.application.applicationContext + AppAdapter.set(TestAppAdapter()) + val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get() + fragment = BookmarkLocationsFragment.newInstance() + val fragmentManager: FragmentManager = activity.supportFragmentManager + val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction() + fragmentTransaction.add(fragment, null) + fragmentTransaction.commit() + + layoutInflater = LayoutInflater.from(activity) + view = layoutInflater + .inflate(R.layout.fragment_bookmarks_locations, null) as View + + statusTextView = view.findViewById(R.id.statusMessage) + progressBar = view.findViewById(R.id.loadingImagesProgressBar) + recyclerView = view.findViewById(R.id.listView) + commonPlaceClickActions = CommonPlaceClickActions(store,activity,contributionController) + + fragment.statusTextView = statusTextView + fragment.progressBar = progressBar + fragment.recyclerView = recyclerView + fragment.parentLayout = parentLayout + fragment.bookmarkLocationDao = bookmarkLocationDao + fragment.controller = controller + fragment.commonPlaceClickActions = commonPlaceClickActions + Whitebox.setInternalState(fragment, "adapter", adapter) + + } + + /** + * test init places when non empty + */ + @Test + fun testInitNonEmpty(){ + whenever(controller.loadFavoritesLocations()).thenReturn(mockBookmarkList) + val method: Method = + BookmarkLocationsFragment::class.java.getDeclaredMethod("initList") + method.isAccessible = true + method.invoke(fragment) + } + + /** + * test onCreateView + */ + @Test + @Throws(Exception::class) + fun testOnCreateView() { + fragment.onCreateView(layoutInflater,null,savedInstanceState) + } + + /** + * check fragment notnull + */ + @Test + @Throws(Exception::class) + fun checkFragmentNotNull() { + Assert.assertNotNull(fragment) + } + + /** + * test onViewCreated + */ + @Test + @Throws(Exception::class) + fun testOnViewCreated() { + fragment.onViewCreated(view, savedInstanceState) + } + + /** + * test onResume + */ + @Test + @Throws(Exception::class) + fun testOnResume() { + fragment.onResume() + } +} \ No newline at end of file