Convert bookmarks package to kotlin (#6387)

* Convert BookmarkItemsController to kotlin

* Split BookmarkItemsDao apart and converted to Kotlin

* Convert and cleanup content providers

* Convert BookmarkItemsFragment to kotlin

* Convert BookmarkPicturesFragment to kotlin

* Convert BookmarkPicturesDao to kotlin and share some useful DB methods

* Convert BookmarkPicturesController to kotlin

* Convert BookmarkFragment to kotlin

* Convert BookmarksPagerAdapter to kotlin

* Convert BookmarkListRootFragment to kotlin
This commit is contained in:
Paul Hawke 2025-07-31 18:26:16 -05:00 committed by GitHub
parent 869371b485
commit 8de57304bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 1738 additions and 1988 deletions

View file

@ -288,7 +288,7 @@ class BookmarkListRootFragmentUnitTest {
@Test
@Throws(Exception::class)
fun testOnItemClick() {
fragment.onItemClick(null, null, 0, 0)
fragment.onItemClick(null, view, 0, 0)
verify(childFragmentManager).beginTransaction()
verify(childFragmentTransaction).commit()
verify(childFragmentManager).executePendingTransactions()

View file

@ -2,12 +2,20 @@ package fr.free.nrw.commons.bookmarks
import android.content.Context
import androidx.fragment.app.FragmentManager
import fr.free.nrw.commons.TestCommonsApplication
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.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@LooperMode(LooperMode.Mode.PAUSED)
class BookmarksPagerAdapterTests {
@Mock
private lateinit var bookmarksPagerAdapter: BookmarksPagerAdapter

View file

@ -2,15 +2,23 @@ package fr.free.nrw.commons.bookmarks
import android.content.Context
import androidx.fragment.app.FragmentManager
import fr.free.nrw.commons.TestCommonsApplication
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.RobolectricTestRunner
import org.robolectric.annotation.Config
import org.robolectric.annotation.LooperMode
/**
* BookmarksPagerAdapter when user is not loggedIn.
*/
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [21], application = TestCommonsApplication::class)
@LooperMode(LooperMode.Mode.PAUSED)
class LoggedOutBookmarksPagerAdapterTests {
@Mock
private lateinit var bookmarksPagerAdapter: BookmarksPagerAdapter

View file

@ -21,7 +21,7 @@ class BookmarkItemsControllerTest {
@Before
fun setup() {
MockitoAnnotations.openMocks(this)
whenever(bookmarkDao!!.allBookmarksItems)
whenever(bookmarkDao!!.getAllBookmarksItems())
.thenReturn(mockBookmarkList)
}

View file

@ -18,20 +18,20 @@ import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_CATEGORIES_DESCRIPTION_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_CATEGORIES_NAME_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_CATEGORIES_THUMBNAIL_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_DESCRIPTION
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_ID
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_IMAGE
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_INSTANCE_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_IS_SELECTED
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.COLUMN_NAME
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.CREATE_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.DROP_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.onCreate
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.onDelete
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsDao.Table.onUpdate
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_DESCRIPTION_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_NAME_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_CATEGORIES_THUMBNAIL_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_DESCRIPTION
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_ID
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_IMAGE
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_INSTANCE_LIST
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_IS_SELECTED
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.COLUMN_NAME
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.CREATE_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.DROP_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.onCreate
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.onDelete
import fr.free.nrw.commons.bookmarks.items.BookmarkItemsTable.onUpdate
import fr.free.nrw.commons.category.CategoryItem
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
import org.junit.Assert
@ -135,7 +135,7 @@ class BookmarkItemsDaoTest {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull()))
.thenReturn(createCursor(14))
val result = testObject.allBookmarksItems
val result = testObject.getAllBookmarksItems()
Assert.assertEquals(14, (result.size))
}
@ -145,20 +145,20 @@ class BookmarkItemsDaoTest {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenThrow(
RemoteException(""),
)
testObject.allBookmarksItems
testObject.getAllBookmarksItems()
}
@Test
fun getAllItemsBookmarksReturnsEmptyList_emptyCursor() {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull()))
.thenReturn(createCursor(0))
Assert.assertTrue(testObject.allBookmarksItems.isEmpty())
Assert.assertTrue(testObject.getAllBookmarksItems().isEmpty())
}
@Test
fun getAllItemsBookmarksReturnsEmptyList_nullCursor() {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(null)
Assert.assertTrue(testObject.allBookmarksItems.isEmpty())
Assert.assertTrue(testObject.getAllBookmarksItems().isEmpty())
}
@Test
@ -167,7 +167,7 @@ class BookmarkItemsDaoTest {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(mockCursor)
whenever(mockCursor.moveToFirst()).thenReturn(false)
testObject.allBookmarksItems
testObject.getAllBookmarksItems()
verify(mockCursor).close()
}

View file

@ -88,7 +88,7 @@ class BookmarkItemsFragmentUnitTest {
context = ApplicationProvider.getApplicationContext()
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
fragment = BookmarkItemsFragment.newInstance()
fragment = BookmarkItemsFragment()
val fragmentManager: FragmentManager = activity.supportFragmentManager
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.add(fragment, null)

View file

@ -19,14 +19,14 @@ import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.bookmarks.models.Bookmark
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesContentProvider.BASE_URI
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.COLUMN_CREATOR
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.COLUMN_MEDIA_NAME
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.CREATE_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.DROP_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.onCreate
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.onDelete
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesDao.Table.onUpdate
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesContentProvider.Companion.BASE_URI
import fr.free.nrw.commons.bookmarks.pictures.BookmarksTable.COLUMN_CREATOR
import fr.free.nrw.commons.bookmarks.pictures.BookmarksTable.COLUMN_MEDIA_NAME
import fr.free.nrw.commons.bookmarks.pictures.BookmarksTable.CREATE_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.pictures.BookmarksTable.DROP_TABLE_STATEMENT
import fr.free.nrw.commons.bookmarks.pictures.BookmarksTable.onCreate
import fr.free.nrw.commons.bookmarks.pictures.BookmarksTable.onDelete
import fr.free.nrw.commons.bookmarks.pictures.BookmarksTable.onUpdate
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
@ -84,7 +84,7 @@ class BookmarkPictureDaoTest {
fun getAllBookmarks() {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(createCursor(14))
var result = testObject.allBookmarks
var result = testObject.getAllBookmarks()
assertEquals(14, (result.size))
}
@ -92,19 +92,19 @@ class BookmarkPictureDaoTest {
@Test(expected = RuntimeException::class)
fun getAllBookmarksTranslatesExceptions() {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenThrow(RemoteException(""))
testObject.allBookmarks
testObject.getAllBookmarks()
}
@Test
fun getAllBookmarksReturnsEmptyList_emptyCursor() {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(createCursor(0))
assertTrue(testObject.allBookmarks.isEmpty())
assertTrue(testObject.getAllBookmarks().isEmpty())
}
@Test
fun getAllBookmarksReturnsEmptyList_nullCursor() {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(null)
assertTrue(testObject.allBookmarks.isEmpty())
assertTrue(testObject.getAllBookmarks().isEmpty())
}
@Test
@ -113,7 +113,7 @@ class BookmarkPictureDaoTest {
whenever(client.query(any(), any(), anyOrNull(), any(), anyOrNull())).thenReturn(mockCursor)
whenever(mockCursor.moveToFirst()).thenReturn(false)
testObject.allBookmarks
testObject.getAllBookmarks()
verify(mockCursor).close()
}

View file

@ -35,7 +35,7 @@ class BookmarkPicturesControllerTest {
fun setup() {
MockitoAnnotations.initMocks(this)
val mockMedia = mockMedia
whenever(bookmarkDao!!.allBookmarks)
whenever(bookmarkDao!!.getAllBookmarks())
.thenReturn(mockBookmarkList)
whenever(
mediaClient!!.getMedia(

View file

@ -88,7 +88,7 @@ class BookmarkPicturesFragmentUnitTests {
context = ApplicationProvider.getApplicationContext()
OkHttpConnectionFactory.CLIENT = createTestClient()
val activity = Robolectric.buildActivity(ProfileActivity::class.java).create().get()
fragment = BookmarkPicturesFragment.newInstance()
fragment = BookmarkPicturesFragment()
val fragmentManager: FragmentManager = activity.supportFragmentManager
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.add(fragment, null)
@ -156,13 +156,13 @@ class BookmarkPicturesFragmentUnitTests {
val method: Method =
BookmarkPicturesFragment::class.java.getDeclaredMethod("setAdapter", List::class.java)
method.isAccessible = true
method.invoke(fragment, mediaList)
method.invoke(fragment, emptyList<Media>())
}
@Test
@Throws(Exception::class)
fun testGetAdapter() {
fragment.adapter
fragment.getAdapter()
}
@Test

View file

@ -29,7 +29,7 @@ import fr.free.nrw.commons.category.CategoryDao.Table.DROP_TABLE_STATEMENT
import fr.free.nrw.commons.category.CategoryDao.Table.onCreate
import fr.free.nrw.commons.category.CategoryDao.Table.onDelete
import fr.free.nrw.commons.category.CategoryDao.Table.onUpdate
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesContentProvider.uriForId
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesContentProvider.Companion.uriForId
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull

View file

@ -18,8 +18,8 @@ import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.TestCommonsApplication
import fr.free.nrw.commons.explore.models.RecentSearch
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesContentProvider.BASE_URI
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesContentProvider.uriForId
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesContentProvider.Companion.BASE_URI
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesContentProvider.Companion.uriForId
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesDao.Table.ALL_FIELDS
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesDao.Table.COLUMN_ID
import fr.free.nrw.commons.explore.recentsearches.RecentSearchesDao.Table.COLUMN_LAST_USED