/
RoleDomainSpec.scala
114 lines (104 loc) · 3.84 KB
/
RoleDomainSpec.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
* Copyright © 2021 - 2022 Data and Service Center for the Humanities and/or DaSCH Service Platform contributors.
* SPDX-License-Identifier: Apache-2.0
*/
package dsp.role.domain
import zio.test._
import java.util.UUID
import dsp.role.sharedtestdata.RoleTestData
import dsp.valueobjects.Id
import dsp.valueobjects.Permission
import dsp.valueobjects.Role._
/**
* This spec is used to test [[RoleDomain]].
*/
object RoleDomainSpec extends ZIOSpecDefault {
def spec = (compareRolesTest + createRoleTest + updateRoleTest)
private val compareRolesTest = suite("compareRoles")(
test("compare two roles") {
val role = RoleTestData.role1
val equalRole = RoleTestData.role1
val nonEqualRole = RoleTestData.role2
assertTrue(role == equalRole) &&
assertTrue(role != nonEqualRole)
}
)
private val createRoleTest = suite("createRole")(
test("create a role") {
(
for {
id <- RoleTestData.id1
name <- RoleTestData.name1
description <- RoleTestData.description1
users = RoleTestData.users1
permission <- RoleTestData.permission1
role <- Role.make(
id,
name,
description,
users = users,
permission
)
} yield assertTrue(role.id == id) &&
assertTrue(role.name == name) &&
assertTrue(role.description == description) &&
assertTrue(role.users == users) &&
assertTrue(role.permission == permission)
).toZIO
}
)
private val updateRoleTest = suite("updateRole")(
test("update the name") {
(
for {
role <- RoleTestData.role1
newValue <- LangString.make("newRoleName", "en")
updatedRole <- role.updateName(newValue)
} yield assertTrue(updatedRole.name == newValue) &&
assertTrue(updatedRole.name != role.name) &&
assertTrue(updatedRole.description == role.description) &&
assertTrue(updatedRole.users == role.users) &&
assertTrue(updatedRole.permission == role.permission)
).toZIO
},
test("update the description") {
(
for {
role <- RoleTestData.role1
newValue <- LangString.make("New Role Description", "en")
updatedRole <- role.updateDescription(newValue)
} yield assertTrue(updatedRole.name == role.name) &&
assertTrue(updatedRole.description == newValue) &&
assertTrue(updatedRole.description != role.description) &&
assertTrue(updatedRole.users == role.users) &&
assertTrue(updatedRole.permission == role.permission)
).toZIO
},
test("update the users") {
(
for {
role <- RoleTestData.role1
newValue = List(RoleUser(Id.UserId.make(UUID.randomUUID()).fold(e => throw e.head, v => v)))
updatedRole <- role.updateUsers(newValue)
} yield assertTrue(updatedRole.name == role.name) &&
assertTrue(updatedRole.description == role.description) &&
assertTrue(updatedRole.users == newValue) &&
assertTrue(updatedRole.users != role.users) &&
assertTrue(updatedRole.permission == role.permission)
).toZIO
},
test("update the permission") {
(
for {
role <- RoleTestData.role1
newValue <- Permission.make(Permission.Create)
updatedRole <- role.updatePermission(newValue)
} yield assertTrue(updatedRole.name == role.name) &&
assertTrue(updatedRole.description == role.description) &&
assertTrue(updatedRole.users == role.users) &&
assertTrue(updatedRole.permission == newValue) &&
assertTrue(updatedRole.permission != role.permission)
).toZIO
}
)
}