diff --git a/owncloudData/src/test/java/com/owncloud/android/data/user/repository/OCUserRepositoryTest.kt b/owncloudData/src/test/java/com/owncloud/android/data/user/repository/OCUserRepositoryTest.kt
index 1041f5f0c68..f2165b44ab1 100644
--- a/owncloudData/src/test/java/com/owncloud/android/data/user/repository/OCUserRepositoryTest.kt
+++ b/owncloudData/src/test/java/com/owncloud/android/data/user/repository/OCUserRepositoryTest.kt
@@ -2,7 +2,9 @@
* ownCloud Android client application
*
* @author Abel GarcĂa de Prada
- * Copyright (C) 2020 ownCloud GmbH.
+ * @author Jorge Aguado Recio
+ *
+ * Copyright (C) 2024 ownCloud GmbH.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
@@ -16,6 +18,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+
package com.owncloud.android.data.user.repository
import com.owncloud.android.data.user.datasources.LocalUserDataSource
@@ -27,37 +30,40 @@ import com.owncloud.android.testutil.OC_USER_QUOTA
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
+import junit.framework.TestCase.assertEquals
+import junit.framework.TestCase.assertNull
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.test.runTest
import org.junit.Test
class OCUserRepositoryTest {
-
- private val remoteUserDataSource = mockk(relaxed = true)
- private val localUserDataSource = mockk(relaxed = true)
- private val ocUserRepository: OCUserRepository = OCUserRepository(localUserDataSource, remoteUserDataSource)
+ private val remoteUserDataSource = mockk()
+ private val localUserDataSource = mockk(relaxUnitFun = true)
+ private val ocUserRepository = OCUserRepository(localUserDataSource, remoteUserDataSource)
@Test
- fun `get user info - ok`() {
- every { remoteUserDataSource.getUserInfo(OC_ACCOUNT_NAME) } returns OC_USER_INFO
+ fun `getUserInfo returns an UserInfo`() {
+ every {
+ remoteUserDataSource.getUserInfo(OC_ACCOUNT_NAME)
+ } returns OC_USER_INFO
- ocUserRepository.getUserInfo(OC_ACCOUNT_NAME)
+ val userInfo = ocUserRepository.getUserInfo(OC_ACCOUNT_NAME)
+ assertEquals(OC_USER_INFO, userInfo)
verify(exactly = 1) {
remoteUserDataSource.getUserInfo(OC_ACCOUNT_NAME)
}
}
- @Test(expected = Exception::class)
- fun `get user info - ko`() {
- every { remoteUserDataSource.getUserInfo(OC_ACCOUNT_NAME) } throws Exception()
-
- ocUserRepository.getUserInfo(OC_ACCOUNT_NAME)
- }
-
@Test
- fun `get user quota - ok`() {
- every { remoteUserDataSource.getUserQuota(OC_ACCOUNT_NAME) } returns OC_USER_QUOTA
+ fun `getUserQuota returns an UserQuota`() {
+ every {
+ remoteUserDataSource.getUserQuota(OC_ACCOUNT_NAME)
+ } returns OC_USER_QUOTA
- ocUserRepository.getUserQuota(OC_ACCOUNT_NAME)
+ val userQuota = ocUserRepository.getUserQuota(OC_ACCOUNT_NAME)
+ assertEquals(OC_USER_QUOTA, userQuota)
verify(exactly = 1) {
remoteUserDataSource.getUserQuota(OC_ACCOUNT_NAME)
@@ -65,53 +71,102 @@ class OCUserRepositoryTest {
}
}
- @Test(expected = Exception::class)
- fun `get user quota - ko`() {
- every { remoteUserDataSource.getUserQuota(OC_ACCOUNT_NAME) } throws Exception()
+ @Test
+ fun `getStoredUserQuota returns an UserQuota`() {
+ every {
+ localUserDataSource.getQuotaForAccount(OC_ACCOUNT_NAME)
+ } returns OC_USER_QUOTA
- ocUserRepository.getUserQuota(OC_ACCOUNT_NAME)
+ val storedQuota = ocUserRepository.getStoredUserQuota(OC_ACCOUNT_NAME)
+ assertEquals(OC_USER_QUOTA, storedQuota)
- verify(exactly = 0) {
- localUserDataSource.saveQuotaForAccount(OC_ACCOUNT_NAME, OC_USER_QUOTA)
+ verify(exactly = 1) {
+ localUserDataSource.getQuotaForAccount(OC_ACCOUNT_NAME)
}
}
@Test
- fun `get stored user quota - ok`() {
- every { localUserDataSource.getQuotaForAccount(OC_ACCOUNT_NAME) } returns OC_USER_QUOTA
+ fun `getStoredUserQuota returns null when local datasource returns null`() {
+ every {
+ localUserDataSource.getQuotaForAccount(OC_ACCOUNT_NAME)
+ } returns null
- ocUserRepository.getStoredUserQuota(OC_ACCOUNT_NAME)
+ val storedQuota = ocUserRepository.getStoredUserQuota(OC_ACCOUNT_NAME)
+ assertNull(storedQuota)
verify(exactly = 1) {
localUserDataSource.getQuotaForAccount(OC_ACCOUNT_NAME)
}
- verify(exactly = 0) {
- remoteUserDataSource.getUserQuota(OC_ACCOUNT_NAME)
+ }
+
+ @Test
+ fun `getStoredUserQuotaAsFlow returns a Flow with an UserQuota`() = runTest {
+ every {
+ localUserDataSource.getQuotaForAccountAsFlow(OC_ACCOUNT_NAME)
+ } returns flowOf(OC_USER_QUOTA)
+
+ val userQuota = ocUserRepository.getStoredUserQuotaAsFlow(OC_ACCOUNT_NAME).first()
+ assertEquals(OC_USER_QUOTA, userQuota)
+
+ verify(exactly = 1) {
+ localUserDataSource.getQuotaForAccountAsFlow(OC_ACCOUNT_NAME)
}
}
- @Test(expected = Exception::class)
- fun `get stored user quota - ko`() {
- every { localUserDataSource.getQuotaForAccount(OC_ACCOUNT_NAME) } throws Exception()
+ @Test
+ fun `getStoredUserQuotaAsFlow returns a Flow with null when local datasource returns a Flow with null`() = runTest {
+ every {
+ localUserDataSource.getQuotaForAccountAsFlow(OC_ACCOUNT_NAME)
+ } returns flowOf(null)
+
+ val userQuota = ocUserRepository.getStoredUserQuotaAsFlow(OC_ACCOUNT_NAME).first()
+ assertNull(userQuota)
- ocUserRepository.getStoredUserQuota(OC_ACCOUNT_NAME)
+ verify(exactly = 1) {
+ localUserDataSource.getQuotaForAccountAsFlow(OC_ACCOUNT_NAME)
+ }
}
@Test
- fun `get user avatar - ok`() {
- every { remoteUserDataSource.getUserAvatar(OC_ACCOUNT_NAME) } returns OC_USER_AVATAR
+ fun `getAllUserQuotas returns a list of UserQuota`() {
+ every {
+ localUserDataSource.getAllUserQuotas()
+ } returns listOf(OC_USER_QUOTA)
- ocUserRepository.getUserAvatar(OC_ACCOUNT_NAME)
+ val listOfUserQuotas = ocUserRepository.getAllUserQuotas()
+ assertEquals(listOf(OC_USER_QUOTA), listOfUserQuotas)
verify(exactly = 1) {
- remoteUserDataSource.getUserAvatar(OC_ACCOUNT_NAME)
+ localUserDataSource.getAllUserQuotas()
+ }
+ }
+
+ @Test
+ fun `getAllUserQuotasAsFlow returns a Flow with a list of UserQuota`() = runTest {
+ every {
+ localUserDataSource.getAllUserQuotasAsFlow()
+ } returns flowOf(listOf(OC_USER_QUOTA))
+
+ val listOfUserQuotas = ocUserRepository.getAllUserQuotasAsFlow().first()
+ assertEquals(listOf(OC_USER_QUOTA), listOfUserQuotas)
+
+ verify(exactly = 1) {
+ localUserDataSource.getAllUserQuotasAsFlow()
}
}
- @Test(expected = Exception::class)
- fun `get user avatar - ko`() {
- every { remoteUserDataSource.getUserAvatar(OC_ACCOUNT_NAME) } throws Exception()
+ @Test
+ fun `getUserAvatar returns an UserAvatar`() {
+ every {
+ remoteUserDataSource.getUserAvatar(OC_ACCOUNT_NAME)
+ } returns OC_USER_AVATAR
+
+ val userAvatar = ocUserRepository.getUserAvatar(OC_ACCOUNT_NAME)
+ assertEquals(OC_USER_AVATAR, userAvatar)
- ocUserRepository.getUserAvatar(OC_ACCOUNT_NAME)
+ verify(exactly = 1) {
+ remoteUserDataSource.getUserAvatar(OC_ACCOUNT_NAME)
+ }
}
+
}