From 161e2edc3112927c1028a70960e42ccc91cfa594 Mon Sep 17 00:00:00 2001 From: Shashank Kumar <126143257+shashankiitbhu@users.noreply.github.com> Date: Sun, 17 Mar 2024 18:31:55 +0530 Subject: [PATCH] Migrated Bookmarks Package From Butterknife to ViewBinding (#5594) * Butterknife to ViewBinding * code fix to pass all tests * code cleanup & binding added to tests --- .../commons/bookmarks/BookmarkFragment.java | 42 +++++------ .../bookmarks/BookmarkListRootFragment.java | 21 +++--- .../items/BookmarkItemsFragment.java | 38 ++++------ .../locations/BookmarkLocationsFragment.java | 31 ++++---- .../pictures/BookmarkPicturesFragment.java | 72 +++++++++---------- .../BookmarkListRootFragmentUnitTest.kt | 13 +++- .../items/BookmarkItemsFragmentUnitTest.kt | 14 ++-- .../BookmarkLocationFragmentUnitTests.kt | 14 ++-- .../BookmarkPicturesFragmentUnitTests.kt | 24 ++++--- 9 files changed, 130 insertions(+), 139 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java index 1a50f65a6..9100fb63c 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkFragment.java @@ -5,23 +5,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentManager; - -import com.google.android.material.tabs.TabLayout; - import fr.free.nrw.commons.contributions.MainActivity; +import fr.free.nrw.commons.databinding.FragmentBookmarksBinding; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; -import fr.free.nrw.commons.explore.ParentViewPager; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.theme.BaseActivity; import javax.inject.Inject; - -import butterknife.BindView; -import butterknife.ButterKnife; -import fr.free.nrw.commons.R; import fr.free.nrw.commons.contributions.ContributionController; import javax.inject.Named; @@ -29,12 +21,7 @@ public class BookmarkFragment extends CommonsDaggerSupportFragment { private FragmentManager supportFragmentManager; private BookmarksPagerAdapter adapter; - @BindView(R.id.viewPagerBookmarks) - ParentViewPager viewPager; - @BindView(R.id.tab_layout) - TabLayout tabLayout; - @BindView(R.id.fragmentContainer) - FrameLayout fragmentContainer; + FragmentBookmarksBinding binding; @Inject ContributionController controller; @@ -54,7 +41,9 @@ public class BookmarkFragment extends CommonsDaggerSupportFragment { } public void setScroll(boolean canScroll) { - viewPager.setCanScroll(canScroll); + if (binding!=null) { + binding.viewPagerBookmarks.setCanScroll(canScroll); + } } @Override @@ -68,8 +57,7 @@ public class BookmarkFragment extends CommonsDaggerSupportFragment { @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); - View view = inflater.inflate(R.layout.fragment_bookmarks, container, false); - ButterKnife.bind(this, view); + binding = FragmentBookmarksBinding.inflate(inflater, container, false); // Activity can call methods in the fragment by acquiring a // reference to the Fragment from FragmentManager, using findFragmentById() @@ -77,14 +65,14 @@ public class BookmarkFragment extends CommonsDaggerSupportFragment { adapter = new BookmarksPagerAdapter(supportFragmentManager, getContext(), applicationKvStore.getBoolean("login_skipped")); - viewPager.setAdapter(adapter); - tabLayout.setupWithViewPager(viewPager); + binding.viewPagerBookmarks.setAdapter(adapter); + binding.tabLayout.setupWithViewPager(binding.viewPagerBookmarks); ((MainActivity) getActivity()).showTabs(); ((BaseActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false); setupTabLayout(); - return view; + return binding.getRoot(); } /** @@ -92,15 +80,15 @@ public class BookmarkFragment extends CommonsDaggerSupportFragment { * visibility of tabLayout to gone. */ public void setupTabLayout() { - tabLayout.setVisibility(View.VISIBLE); + binding.tabLayout.setVisibility(View.VISIBLE); if (adapter.getCount() == 1) { - tabLayout.setVisibility(View.GONE); + binding.tabLayout.setVisibility(View.GONE); } } public void onBackPressed() { - if (((BookmarkListRootFragment) (adapter.getItem(tabLayout.getSelectedTabPosition()))) + if (((BookmarkListRootFragment) (adapter.getItem(binding.tabLayout.getSelectedTabPosition()))) .backPressed()) { // The event is handled internally by the adapter , no further action required. return; @@ -108,4 +96,10 @@ public class BookmarkFragment extends CommonsDaggerSupportFragment { // Event is not handled by the adapter ( performed back action ) change action bar. ((BaseActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(false); } + + @Override + public void onDestroy() { + super.onDestroy(); + binding = null; + } } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java index 27f6e824f..281248ca4 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java @@ -12,8 +12,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import butterknife.BindView; -import butterknife.ButterKnife; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; import fr.free.nrw.commons.bookmarks.items.BookmarkItemsFragment; @@ -22,6 +20,7 @@ import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment; import fr.free.nrw.commons.category.CategoryImagesCallback; import fr.free.nrw.commons.category.GridViewAdapter; import fr.free.nrw.commons.contributions.MainActivity; +import fr.free.nrw.commons.databinding.FragmentFeaturedRootBinding; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.media.MediaDetailPagerFragment; import fr.free.nrw.commons.navtab.NavTab; @@ -39,8 +38,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple public Fragment listFragment; private BookmarksPagerAdapter bookmarksPagerAdapter; - @BindView(R.id.explore_container) - FrameLayout container; + FragmentFeaturedRootBinding binding; public BookmarkListRootFragment() { //empty constructor necessary otherwise crashes on recreate @@ -70,9 +68,8 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - View view = inflater.inflate(R.layout.fragment_featured_root, container, false); - ButterKnife.bind(this, view); - return view; + binding = FragmentFeaturedRootBinding.inflate(inflater, container, false); + return binding.getRoot(); } @Override @@ -241,8 +238,8 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Log.d("deneme8", "on media clicked"); - container.setVisibility(View.VISIBLE); - ((BookmarkFragment) getParentFragment()).tabLayout.setVisibility(View.GONE); + binding.exploreContainer.setVisibility(View.VISIBLE); + ((BookmarkFragment) getParentFragment()).binding.tabLayout.setVisibility(View.GONE); mediaDetails = MediaDetailPagerFragment.newInstance(false, true); ((BookmarkFragment) getParentFragment()).setScroll(false); setFragment(mediaDetails, listFragment); @@ -253,4 +250,10 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple public void onBackStackChanged() { } + + @Override + public void onDestroy() { + super.onDestroy(); + binding = null; + } } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java index ef5c1fa9e..75a0fa7a4 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragment.java @@ -12,10 +12,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import butterknife.BindView; -import butterknife.ButterKnife; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.databinding.FragmentBookmarksItemsBinding; import fr.free.nrw.commons.upload.structure.depictions.DepictedItem; import java.util.List; import javax.inject.Inject; @@ -26,17 +25,7 @@ import org.jetbrains.annotations.NotNull; */ public class BookmarkItemsFragment extends DaggerFragment { - @BindView(R.id.status_message) - TextView statusTextView; - - @BindView(R.id.loading_images_progress_bar) - ProgressBar progressBar; - - @BindView(R.id.list_view) - RecyclerView recyclerView; - - @BindView(R.id.parent_layout) - RelativeLayout parentLayout; + private FragmentBookmarksItemsBinding binding; @Inject BookmarkItemsController controller; @@ -51,16 +40,13 @@ public class BookmarkItemsFragment extends DaggerFragment { final ViewGroup container, final Bundle savedInstanceState ) { - final View v = inflater.inflate(R.layout.fragment_bookmarks_items, container, false); - ButterKnife.bind(this, v); - return v; + binding = FragmentBookmarksItemsBinding.inflate(inflater, container, false); + return binding.getRoot(); } @Override public void onViewCreated(final @NotNull View view, @Nullable final Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - progressBar.setVisibility(View.VISIBLE); - recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); initList(requireContext()); } @@ -77,13 +63,19 @@ public class BookmarkItemsFragment extends DaggerFragment { private void initList(final Context context) { final List depictItems = controller.loadFavoritesItems(); final BookmarkItemsAdapter adapter = new BookmarkItemsAdapter(depictItems, context); - recyclerView.setAdapter(adapter); - progressBar.setVisibility(View.GONE); + binding.listView.setAdapter(adapter); + binding.loadingImagesProgressBar.setVisibility(View.GONE); if (depictItems.isEmpty()) { - statusTextView.setText(R.string.bookmark_empty); - statusTextView.setVisibility(View.VISIBLE); + binding.statusMessage.setText(R.string.bookmark_empty); + binding.statusMessage.setVisibility(View.VISIBLE); } else { - statusTextView.setVisibility(View.GONE); + binding.statusMessage.setVisibility(View.GONE); } } + + @Override + public void onDestroy() { + super.onDestroy(); + binding = null; + } } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java index 361bd20b6..6ef6e2cae 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.java @@ -21,6 +21,7 @@ import butterknife.ButterKnife; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import fr.free.nrw.commons.contributions.ContributionController; +import fr.free.nrw.commons.databinding.FragmentBookmarksLocationsBinding; import fr.free.nrw.commons.nearby.Place; import fr.free.nrw.commons.nearby.fragments.CommonPlaceClickActions; import fr.free.nrw.commons.nearby.fragments.PlaceAdapter; @@ -31,10 +32,7 @@ import kotlin.Unit; public class BookmarkLocationsFragment extends DaggerFragment { - @BindView(R.id.statusMessage) TextView statusTextView; - @BindView(R.id.loadingImagesProgressBar) ProgressBar progressBar; - @BindView(R.id.listView) RecyclerView recyclerView; - @BindView(R.id.parentLayout) RelativeLayout parentLayout; + public FragmentBookmarksLocationsBinding binding; @Inject BookmarkLocationsController controller; @Inject ContributionController contributionController; @@ -75,16 +73,15 @@ public class BookmarkLocationsFragment extends DaggerFragment { ViewGroup container, Bundle savedInstanceState ) { - View v = inflater.inflate(R.layout.fragment_bookmarks_locations, container, false); - ButterKnife.bind(this, v); - return v; + binding = FragmentBookmarksLocationsBinding.inflate(inflater, container, false); + return binding.getRoot(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - progressBar.setVisibility(View.VISIBLE); - recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + binding.loadingImagesProgressBar.setVisibility(View.VISIBLE); + binding.listView.setLayoutManager(new LinearLayoutManager(getContext())); adapter = new PlaceAdapter(bookmarkLocationDao, place -> Unit.INSTANCE, (place, isBookmarked) -> { @@ -94,7 +91,7 @@ public class BookmarkLocationsFragment extends DaggerFragment { commonPlaceClickActions, inAppCameraLocationPermissionLauncher ); - recyclerView.setAdapter(adapter); + binding.listView.setAdapter(adapter); } @Override @@ -109,12 +106,12 @@ public class BookmarkLocationsFragment extends DaggerFragment { private void initList() { List places = controller.loadFavoritesLocations(); adapter.setItems(places); - progressBar.setVisibility(View.GONE); + binding.loadingImagesProgressBar.setVisibility(View.GONE); if (places.size() <= 0) { - statusTextView.setText(R.string.bookmark_empty); - statusTextView.setVisibility(View.VISIBLE); + binding.statusMessage.setText(R.string.bookmark_empty); + binding.statusMessage.setVisibility(View.VISIBLE); } else { - statusTextView.setVisibility(View.GONE); + binding.statusMessage.setVisibility(View.GONE); } } @@ -122,4 +119,10 @@ public class BookmarkLocationsFragment extends DaggerFragment { public void onActivityResult(int requestCode, int resultCode, Intent data) { contributionController.handleActivityResult(getActivity(), requestCode, resultCode, data); } + + @Override + public void onDestroy() { + super.onDestroy(); + binding = null; + } } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java index d9060d298..9f02e4631 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragment.java @@ -9,20 +9,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; -import android.widget.GridView; import android.widget.ListAdapter; -import android.widget.ProgressBar; -import android.widget.RelativeLayout; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import butterknife.BindView; -import butterknife.ButterKnife; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; import fr.free.nrw.commons.bookmarks.BookmarkListRootFragment; import fr.free.nrw.commons.category.GridViewAdapter; +import fr.free.nrw.commons.databinding.FragmentBookmarksPicturesBinding; import fr.free.nrw.commons.utils.NetworkUtils; import fr.free.nrw.commons.utils.ViewUtil; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -37,11 +32,7 @@ public class BookmarkPicturesFragment extends DaggerFragment { private GridViewAdapter gridAdapter; private CompositeDisposable compositeDisposable = new CompositeDisposable(); - @BindView(R.id.statusMessage) TextView statusTextView; - @BindView(R.id.loadingImagesProgressBar) ProgressBar progressBar; - @BindView(R.id.bookmarkedPicturesList) GridView gridView; - @BindView(R.id.parentLayout) RelativeLayout parentLayout; - + private FragmentBookmarksPicturesBinding binding; @Inject BookmarkPicturesController controller; @@ -59,15 +50,14 @@ public class BookmarkPicturesFragment extends DaggerFragment { ViewGroup container, Bundle savedInstanceState ) { - View v = inflater.inflate(R.layout.fragment_bookmarks_pictures, container, false); - ButterKnife.bind(this, v); - return v; + binding = FragmentBookmarksPicturesBinding.inflate(inflater, container, false); + return binding.getRoot(); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - gridView.setOnItemClickListener((AdapterView.OnItemClickListener) getParentFragment()); + binding.bookmarkedPicturesList.setOnItemClickListener((AdapterView.OnItemClickListener) getParentFragment()); initList(); } @@ -81,13 +71,14 @@ public class BookmarkPicturesFragment extends DaggerFragment { public void onDestroy() { super.onDestroy(); compositeDisposable.clear(); + binding = null; } @Override public void onResume() { super.onResume(); if (controller.needRefreshBookmarkedPictures()) { - gridView.setVisibility(GONE); + binding.bookmarkedPicturesList.setVisibility(GONE); if (gridAdapter != null) { gridAdapter.clear(); ((BookmarkListRootFragment)getParentFragment()).viewPagerNotifyDataSetChanged(); @@ -107,8 +98,8 @@ public class BookmarkPicturesFragment extends DaggerFragment { return; } - progressBar.setVisibility(VISIBLE); - statusTextView.setVisibility(GONE); + binding.loadingImagesProgressBar.setVisibility(VISIBLE); + binding.statusMessage.setVisibility(GONE); compositeDisposable.add(controller.loadBookmarkedPictures() .subscribeOn(Schedulers.io()) @@ -120,12 +111,12 @@ public class BookmarkPicturesFragment extends DaggerFragment { * Handles the UI updates for no internet scenario */ private void handleNoInternet() { - progressBar.setVisibility(GONE); + binding.loadingImagesProgressBar.setVisibility(GONE); if (gridAdapter == null || gridAdapter.isEmpty()) { - statusTextView.setVisibility(VISIBLE); - statusTextView.setText(getString(R.string.no_internet)); + binding.statusMessage.setVisibility(VISIBLE); + binding.statusMessage.setText(getString(R.string.no_internet)); } else { - ViewUtil.showShortSnackbar(parentLayout, R.string.no_internet); + ViewUtil.showShortSnackbar(binding.parentLayout, R.string.no_internet); } } @@ -136,7 +127,7 @@ public class BookmarkPicturesFragment extends DaggerFragment { private void handleError(Throwable throwable) { Timber.e(throwable, "Error occurred while loading images inside a category"); try{ - ViewUtil.showShortSnackbar(parentLayout, R.string.error_loading_images); + ViewUtil.showShortSnackbar(binding.getRoot(), R.string.error_loading_images); initErrorView(); }catch (Exception e){ e.printStackTrace(); @@ -147,12 +138,12 @@ public class BookmarkPicturesFragment extends DaggerFragment { * Handles the UI updates for a error scenario */ private void initErrorView() { - progressBar.setVisibility(GONE); + binding.loadingImagesProgressBar.setVisibility(GONE); if (gridAdapter == null || gridAdapter.isEmpty()) { - statusTextView.setVisibility(VISIBLE); - statusTextView.setText(getString(R.string.no_images_found)); + binding.statusMessage.setVisibility(VISIBLE); + binding.statusMessage.setText(getString(R.string.no_images_found)); } else { - statusTextView.setVisibility(GONE); + binding.statusMessage.setVisibility(GONE); } } @@ -160,12 +151,12 @@ public class BookmarkPicturesFragment extends DaggerFragment { * Handles the UI updates when there is no bookmarks */ private void initEmptyBookmarkListView() { - progressBar.setVisibility(GONE); + binding.loadingImagesProgressBar.setVisibility(GONE); if (gridAdapter == null || gridAdapter.isEmpty()) { - statusTextView.setVisibility(VISIBLE); - statusTextView.setText(getString(R.string.bookmark_empty)); + binding.statusMessage.setVisibility(VISIBLE); + binding.statusMessage.setText(getString(R.string.bookmark_empty)); } else { - statusTextView.setVisibility(GONE); + binding.statusMessage.setVisibility(GONE); } } @@ -188,18 +179,18 @@ public class BookmarkPicturesFragment extends DaggerFragment { setAdapter(collection); } else { if (gridAdapter.containsAll(collection)) { - progressBar.setVisibility(GONE); - statusTextView.setVisibility(GONE); - gridView.setVisibility(VISIBLE); - gridView.setAdapter(gridAdapter); + binding.loadingImagesProgressBar.setVisibility(GONE); + binding.statusMessage.setVisibility(GONE); + binding.bookmarkedPicturesList.setVisibility(VISIBLE); + binding.bookmarkedPicturesList.setAdapter(gridAdapter); return; } gridAdapter.addItems(collection); ((BookmarkListRootFragment) getParentFragment()).viewPagerNotifyDataSetChanged(); } - progressBar.setVisibility(GONE); - statusTextView.setVisibility(GONE); - gridView.setVisibility(VISIBLE); + binding.loadingImagesProgressBar.setVisibility(GONE); + binding.statusMessage.setVisibility(GONE); + binding.bookmarkedPicturesList.setVisibility(VISIBLE); } /** @@ -212,7 +203,7 @@ public class BookmarkPicturesFragment extends DaggerFragment { R.layout.layout_category_images, mediaList ); - gridView.setAdapter(gridAdapter); + binding.bookmarkedPicturesList.setAdapter(gridAdapter); } /** @@ -221,6 +212,7 @@ public class BookmarkPicturesFragment extends DaggerFragment { * @return GridView Adapter */ public ListAdapter getAdapter() { - return gridView.getAdapter(); + return binding.bookmarkedPicturesList.getAdapter(); } + } diff --git a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/BookmarkListRootFragmentUnitTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/BookmarkListRootFragmentUnitTest.kt index 18e7e67a4..2029c1cbc 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/BookmarkListRootFragmentUnitTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/BookmarkListRootFragmentUnitTest.kt @@ -21,6 +21,8 @@ import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.createTestClient import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment import fr.free.nrw.commons.contributions.MainActivity +import fr.free.nrw.commons.databinding.FragmentBookmarksBinding +import fr.free.nrw.commons.databinding.FragmentFeaturedRootBinding import fr.free.nrw.commons.explore.ParentViewPager import fr.free.nrw.commons.media.MediaDetailPagerFragment import org.junit.Assert @@ -81,6 +83,8 @@ class BookmarkListRootFragmentUnitTest { @Mock private lateinit var adapter: BookmarksPagerAdapter + private lateinit var binding: FragmentFeaturedRootBinding + @Before fun setUp() { MockitoAnnotations.openMocks(this) @@ -95,14 +99,17 @@ class BookmarkListRootFragmentUnitTest { fragmentTransaction.commitNowAllowingStateLoss() bookmarkFragment = BookmarkFragment() + bookmarkFragment.binding = FragmentBookmarksBinding.inflate(LayoutInflater.from(activity)) + + binding = FragmentFeaturedRootBinding.inflate(LayoutInflater.from(activity)) Whitebox.setInternalState(fragment, "mChildFragmentManager", childFragmentManager) Whitebox.setInternalState(fragment, "mParentFragment", bookmarkFragment) Whitebox.setInternalState(fragment, "listFragment", listFragment) Whitebox.setInternalState(fragment, "mediaDetails", mediaDetails) Whitebox.setInternalState(fragment, "bookmarksPagerAdapter", bookmarksPagerAdapter) - Whitebox.setInternalState(bookmarkFragment, "tabLayout", tabLayout) - Whitebox.setInternalState(bookmarkFragment, "viewPager", viewPager) + Whitebox.setInternalState(bookmarkFragment.binding, "tabLayout", tabLayout) + Whitebox.setInternalState(bookmarkFragment.binding, "viewPagerBookmarks", viewPager) Whitebox.setInternalState(bookmarkFragment, "adapter", adapter) whenever(childFragmentManager.beginTransaction()).thenReturn(childFragmentTransaction) @@ -322,4 +329,4 @@ class BookmarkListRootFragmentUnitTest { Assert.assertEquals(fragment.backPressed(), false) } -} \ No newline at end of file +} diff --git a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragmentUnitTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragmentUnitTest.kt index 78962ec9f..c68ca34b9 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragmentUnitTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/items/BookmarkItemsFragmentUnitTest.kt @@ -17,6 +17,7 @@ import fr.free.nrw.commons.R import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.createTestClient import fr.free.nrw.commons.category.CategoryItem +import fr.free.nrw.commons.databinding.FragmentBookmarksItemsBinding import fr.free.nrw.commons.profile.ProfileActivity import fr.free.nrw.commons.upload.structure.depictions.DepictedItem import org.junit.Assert @@ -25,6 +26,7 @@ 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.annotation.Config @@ -45,8 +47,7 @@ class BookmarkItemsFragmentUnitTest { private lateinit var recyclerView: RecyclerView private lateinit var layoutInflater: LayoutInflater - @Mock - private lateinit var parentLayout: RelativeLayout + private lateinit var binding: FragmentBookmarksItemsBinding @Mock private lateinit var savedInstanceState: Bundle @@ -89,17 +90,16 @@ class BookmarkItemsFragmentUnitTest { layoutInflater = LayoutInflater.from(activity) view = layoutInflater .inflate(R.layout.fragment_bookmarks_items, null) as View + binding = FragmentBookmarksItemsBinding.inflate(layoutInflater) statusTextView = view.findViewById(R.id.status_message) progressBar = view.findViewById(R.id.loading_images_progress_bar) recyclerView = view.findViewById(R.id.list_view) - fragment.statusTextView = statusTextView - fragment.progressBar = progressBar - fragment.recyclerView = recyclerView - fragment.parentLayout = parentLayout fragment.controller = controller + Whitebox.setInternalState(fragment, "binding", binding) + } /** @@ -132,4 +132,4 @@ class BookmarkItemsFragmentUnitTest { fun checkFragmentNotNull() { Assert.assertNotNull(fragment) } -} \ No newline at end of file +} 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 index 3777ee58c..9252a679a 100644 --- 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 @@ -17,6 +17,7 @@ import fr.free.nrw.commons.R import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.createTestClient import fr.free.nrw.commons.contributions.ContributionController +import fr.free.nrw.commons.databinding.FragmentBookmarksLocationsBinding import fr.free.nrw.commons.kvstore.JsonKvStore import fr.free.nrw.commons.nearby.Place import fr.free.nrw.commons.nearby.fragments.CommonPlaceClickActions @@ -52,9 +53,6 @@ class BookmarkLocationFragmentUnitTests { @Mock lateinit var store: JsonKvStore - @Mock - private lateinit var parentLayout: RelativeLayout - @Mock private lateinit var savedInstanceState: Bundle @@ -70,6 +68,8 @@ class BookmarkLocationFragmentUnitTests { @Mock private lateinit var adapter: PlaceAdapter + private lateinit var binding: FragmentBookmarksLocationsBinding + /** * Get Mock bookmark list. */ @@ -109,20 +109,18 @@ class BookmarkLocationFragmentUnitTests { layoutInflater = LayoutInflater.from(activity) view = layoutInflater .inflate(R.layout.fragment_bookmarks_locations, null) as View + binding = FragmentBookmarksLocationsBinding.bind(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) + Whitebox.setInternalState(fragment, "binding", binding) } @@ -173,4 +171,4 @@ class BookmarkLocationFragmentUnitTests { fun testOnResume() { fragment.onResume() } -} \ No newline at end of file +} diff --git a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragmentUnitTests.kt index dceb33060..0267b543f 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragmentUnitTests.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/bookmarks/pictures/BookmarkPicturesFragmentUnitTests.kt @@ -18,12 +18,14 @@ import androidx.test.core.app.ApplicationProvider import com.nhaarman.mockitokotlin2.any import com.nhaarman.mockitokotlin2.times import com.nhaarman.mockitokotlin2.verify +import com.nhaarman.mockitokotlin2.whenever import fr.free.nrw.commons.Media import fr.free.nrw.commons.OkHttpConnectionFactory import fr.free.nrw.commons.R import fr.free.nrw.commons.TestCommonsApplication import fr.free.nrw.commons.createTestClient import fr.free.nrw.commons.category.GridViewAdapter +import fr.free.nrw.commons.databinding.FragmentBookmarksPicturesBinding import fr.free.nrw.commons.media.MediaClient import fr.free.nrw.commons.profile.ProfileActivity import media @@ -49,9 +51,9 @@ class BookmarkPicturesFragmentUnitTests { private lateinit var fragment: BookmarkPicturesFragment - private lateinit var context: Context + private lateinit var binding: FragmentBookmarksPicturesBinding - private lateinit var view: View + private lateinit var context: Context @Mock lateinit var statusTextView: TextView @@ -97,13 +99,7 @@ class BookmarkPicturesFragmentUnitTests { fragmentTransaction.add(fragment, null) fragmentTransaction.commit() - view = LayoutInflater.from(activity) - .inflate(R.layout.fragment_bookmarks_pictures, null) as View - - fragment.statusTextView = statusTextView - fragment.progressBar = progressBar - fragment.gridView = gridView - fragment.parentLayout = parentLayout + binding = FragmentBookmarksPicturesBinding.inflate(LayoutInflater.from(activity)) val bookmarkDao = BookmarkPicturesDao { client } @@ -116,6 +112,12 @@ class BookmarkPicturesFragmentUnitTests { 0, listOf(media()) )) + Whitebox.setInternalState(fragment, "binding", binding) + + Whitebox.setInternalState(binding, "statusMessage", statusTextView) + Whitebox.setInternalState(binding, "loadingImagesProgressBar", progressBar) + Whitebox.setInternalState(binding, "bookmarkedPicturesList", gridView) + Whitebox.setInternalState(binding, "parentLayout", parentLayout) } @Test @@ -127,7 +129,7 @@ class BookmarkPicturesFragmentUnitTests { @Test @Throws(Exception::class) fun testOnViewCreated() { - fragment.onViewCreated(view, savedInstanceState) + fragment.onViewCreated(binding.root, savedInstanceState) } @Test @@ -216,4 +218,4 @@ class BookmarkPicturesFragmentUnitTests { method.isAccessible = true method.invoke(fragment) } -} \ No newline at end of file +}