Skip to content

Commit 39e2a06

Browse files
committed
test: create tests for OCRemoteRolesDataSource and OCRolesRepository
1 parent 1689c48 commit 39e2a06

File tree

3 files changed

+125
-8
lines changed

3 files changed

+125
-8
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* ownCloud Android client application
3+
*
4+
* @author Jorge Aguado Recio
5+
*
6+
* Copyright (C) 2025 ownCloud GmbH.
7+
*
8+
* This program is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU General Public License version 2,
10+
* as published by the Free Software Foundation.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU General Public License
18+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19+
*/
20+
21+
package com.owncloud.android.data.roles.datasources.implementation
22+
23+
import com.owncloud.android.data.ClientManager
24+
import com.owncloud.android.data.roles.datasources.implementation.OCRemoteRolesDataSource.Companion.toModel
25+
import com.owncloud.android.lib.resources.roles.services.OCRolesService
26+
import com.owncloud.android.testutil.OC_ACCOUNT_NAME
27+
import com.owncloud.android.testutil.SPACE_PERMISSIONS_RESPONSE
28+
import com.owncloud.android.utils.createRemoteOperationResultMock
29+
import io.mockk.every
30+
import io.mockk.mockk
31+
import io.mockk.verify
32+
import junit.framework.TestCase.assertEquals
33+
import org.junit.Before
34+
import org.junit.Test
35+
36+
class OCRemoteRolesDataSourceTest {
37+
38+
private lateinit var ocRemoteRolesDataSource: OCRemoteRolesDataSource
39+
40+
private val ocRolesService: OCRolesService = mockk()
41+
private val clientManager: ClientManager = mockk(relaxed = true)
42+
43+
@Before
44+
fun setUp() {
45+
ocRemoteRolesDataSource = OCRemoteRolesDataSource(clientManager)
46+
every { clientManager.getRolesService(OC_ACCOUNT_NAME) } returns ocRolesService
47+
}
48+
49+
@Test
50+
fun `getRoles returns a list of OCRole with all available roles from the server`() {
51+
val getRolesResult = createRemoteOperationResultMock(SPACE_PERMISSIONS_RESPONSE.roles, isSuccess = true)
52+
53+
every {
54+
ocRolesService.getRoles()
55+
} returns getRolesResult
56+
57+
val roles = ocRemoteRolesDataSource.getRoles(OC_ACCOUNT_NAME)
58+
assertEquals(SPACE_PERMISSIONS_RESPONSE.roles.map { it.toModel() }, roles)
59+
60+
verify(exactly = 1) {
61+
clientManager.getRolesService(OC_ACCOUNT_NAME)
62+
ocRolesService.getRoles()
63+
}
64+
}
65+
66+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* ownCloud Android client application
3+
*
4+
* @author Jorge Aguado Recio
5+
*
6+
* Copyright (C) 2025 ownCloud GmbH.
7+
*
8+
* This program is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU General Public License version 2,
10+
* as published by the Free Software Foundation.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU General Public License
18+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19+
*/
20+
21+
package com.owncloud.android.data.roles.repository
22+
23+
import com.owncloud.android.data.roles.datasources.RemoteRolesDataSource
24+
import com.owncloud.android.testutil.OC_ACCOUNT_NAME
25+
import com.owncloud.android.testutil.SPACE_MEMBERS
26+
import io.mockk.every
27+
import io.mockk.mockk
28+
import io.mockk.verify
29+
import junit.framework.TestCase.assertEquals
30+
import org.junit.Test
31+
32+
class OCRolesRepositoryTest {
33+
34+
private val remoteRolesDataSource = mockk<RemoteRolesDataSource>()
35+
private val ocRolesRepository = OCRolesRepository(remoteRolesDataSource)
36+
37+
@Test
38+
fun `getRoles returns a list of OCRole`() {
39+
every {
40+
remoteRolesDataSource.getRoles(OC_ACCOUNT_NAME)
41+
} returns SPACE_MEMBERS.roles
42+
43+
val roles = ocRolesRepository.getRoles(OC_ACCOUNT_NAME)
44+
assertEquals(SPACE_MEMBERS.roles, roles)
45+
46+
verify(exactly = 1) {
47+
remoteRolesDataSource.getRoles(OC_ACCOUNT_NAME)
48+
}
49+
}
50+
51+
}

owncloudTestUtil/src/main/java/com/owncloud/android/testutil/OCSpace.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.owncloud.android.data.spaces.db.SpaceRootEntity
2626
import com.owncloud.android.data.spaces.db.SpaceSpecialEntity
2727
import com.owncloud.android.data.spaces.db.SpacesEntity
2828
import com.owncloud.android.data.spaces.db.SpacesWithSpecials
29+
import com.owncloud.android.domain.roles.model.OCRole
2930
import com.owncloud.android.domain.spaces.model.OCSpace
3031
import com.owncloud.android.domain.spaces.model.OCSpace.Companion.SPACE_ID_SHARES
3132
import com.owncloud.android.domain.spaces.model.SpaceDeleted
@@ -34,18 +35,17 @@ import com.owncloud.android.domain.spaces.model.SpaceMember
3435
import com.owncloud.android.domain.spaces.model.SpaceMembers
3536
import com.owncloud.android.domain.spaces.model.SpaceOwner
3637
import com.owncloud.android.domain.spaces.model.SpaceQuota
37-
import com.owncloud.android.domain.spaces.model.SpaceRole
3838
import com.owncloud.android.domain.spaces.model.SpaceRoot
3939
import com.owncloud.android.domain.spaces.model.SpaceSpecial
4040
import com.owncloud.android.domain.spaces.model.SpaceSpecialFolder
4141
import com.owncloud.android.domain.spaces.model.SpaceUser
42+
import com.owncloud.android.lib.resources.roles.responses.RoleResponse
4243
import com.owncloud.android.lib.resources.spaces.responses.GrantedToV2Response
4344
import com.owncloud.android.lib.resources.spaces.responses.PermissionsResponse
4445
import com.owncloud.android.lib.resources.spaces.responses.QuotaResponse
4546
import com.owncloud.android.lib.resources.spaces.responses.RootResponse
4647
import com.owncloud.android.lib.resources.spaces.responses.SpacePermissionsResponse
4748
import com.owncloud.android.lib.resources.spaces.responses.SpaceResponse
48-
import com.owncloud.android.lib.resources.spaces.responses.SpaceRoleResponse
4949
import com.owncloud.android.lib.resources.spaces.responses.UserResponse
5050

5151
const val WEB_DAV_URL = "https://server.url/dav/spaces/8871f4f3-fc6f-4a66-8bed-62f175f76f3805bca744-d89f-4e9c-a990-25a0d7f03fe9"
@@ -338,9 +338,9 @@ val SPACE_RESPONSE =
338338
val SPACE_PERMISSIONS_RESPONSE = SpacePermissionsResponse(
339339
actions = listOf("libre.graph/driveItem/permissions/delete", "libre.graph/driveItem/permissions/update"),
340340
roles = listOf(
341-
SpaceRoleResponse(displayName = "Can view", id = "a8d5fe5e-96e3-418d-825b-534dbdf22b99"),
342-
SpaceRoleResponse(displayName = "Can edit", id = "58c63c02-1d89-4572-916a-870abc5a1b7d"),
343-
SpaceRoleResponse(displayName = "Can manage", id = "312c0871-5ef7-4b3a-85b6-0e4074c64049")
341+
RoleResponse(displayName = "Can view", id = "a8d5fe5e-96e3-418d-825b-534dbdf22b99"),
342+
RoleResponse(displayName = "Can edit", id = "58c63c02-1d89-4572-916a-870abc5a1b7d"),
343+
RoleResponse(displayName = "Can manage", id = "312c0871-5ef7-4b3a-85b6-0e4074c64049")
344344
),
345345
members = listOf(
346346
PermissionsResponse(
@@ -354,9 +354,9 @@ val SPACE_PERMISSIONS_RESPONSE = SpacePermissionsResponse(
354354

355355
val SPACE_MEMBERS = SpaceMembers(
356356
roles = listOf(
357-
SpaceRole(displayName = "Can view", id = "a8d5fe5e-96e3-418d-825b-534dbdf22b99"),
358-
SpaceRole(displayName = "Can edit", id = "58c63c02-1d89-4572-916a-870abc5a1b7d"),
359-
SpaceRole(displayName = "Can manage", id = "312c0871-5ef7-4b3a-85b6-0e4074c64049")
357+
OCRole(displayName = "Can view", id = "a8d5fe5e-96e3-418d-825b-534dbdf22b99"),
358+
OCRole(displayName = "Can edit", id = "58c63c02-1d89-4572-916a-870abc5a1b7d"),
359+
OCRole(displayName = "Can manage", id = "312c0871-5ef7-4b3a-85b6-0e4074c64049")
360360
),
361361
members = listOf(
362362
SpaceMember(

0 commit comments

Comments
 (0)