Skip to content

Commit 78c037f

Browse files
committed
feat: KeyController branching modifications
1 parent b823b1e commit 78c037f

File tree

14 files changed

+88
-15
lines changed

14 files changed

+88
-15
lines changed

backend/api/src/main/kotlin/io/tolgee/api/v2/controllers/keys/KeyController.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,10 @@ class KeyController(
129129
@ParameterObject
130130
@SortDefault("id")
131131
pageable: Pageable,
132+
@RequestParam
133+
branch: String? = null,
132134
): PagedModel<KeyModel> {
133-
val data = keyService.getPaged(projectHolder.project.id, pageable)
135+
val data = keyService.getPaged(projectHolder.project.id, branch, pageable)
134136
return keyPagedResourcesAssembler.toModel(data, keyModelAssembler)
135137
}
136138

@@ -150,7 +152,8 @@ class KeyController(
150152
key.checkInProject()
151153
checkNamespaceFeature(dto.namespace)
152154
keyService.edit(id, dto)
153-
val view = KeyView(key.id, key.name, key?.namespace?.name, key.keyMeta?.description, key.keyMeta?.custom)
155+
val view =
156+
KeyView(key.id, key.name, key?.namespace?.name, key.keyMeta?.description, key.keyMeta?.custom, key.branch?.name)
154157
return keyModelAssembler.toModel(view)
155158
}
156159

backend/api/src/main/kotlin/io/tolgee/hateoas/key/KeyModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ open class KeyModel(
2121
val description: String?,
2222
@Schema(description = "Custom values of the key")
2323
val custom: Map<String, Any?>?,
24+
@Schema(description = "Branch of key", example = "dev")
25+
val branch: String?,
2426
) : RepresentationModel<KeyModel>(), Serializable

backend/api/src/main/kotlin/io/tolgee/hateoas/key/KeyModelAssembler.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ class KeyModelAssembler : RepresentationModelAssemblerSupport<KeyView, KeyModel>
1818
namespace = view.namespace,
1919
description = view.description,
2020
custom = view.custom as? Map<String, Any?>?,
21+
branch = view.branch,
2122
)
2223
}

backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/AllKeysControllerTest.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,18 @@ class AllKeysControllerTest : ProjectAuthControllerTest("/v2/projects/") {
3131
fun `returns all keys sorted`() {
3232
performProjectAuthGet("all-keys").andPrettyPrint.andIsOk.andAssertThatJson {
3333
node("_embedded.keys") {
34-
isArray.hasSize(3)
34+
isArray.hasSize(4)
3535
node("[0]") {
3636
node("id").isValidId
3737
node("namespace").isNull()
3838
node("name").isEqualTo("first_key")
3939
}
40+
node("[3]") {
41+
node("id").isValidId
42+
node("namespace").isNull()
43+
node("name").isEqualTo("first_key")
44+
node("branch").isEqualTo("dev")
45+
}
4046
}
4147
}
4248
}

backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2KeyController/KeyControllerTest.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,34 @@ class KeyControllerTest : ProjectAuthControllerTest("/v2/projects/") {
6868
}
6969
}
7070

71+
@ProjectJWTAuthTestMethod
72+
@Test
73+
fun `returns all keys from branch`() {
74+
testData.addNKeys(5)
75+
testData.addNBranchedKeys(110)
76+
saveTestDataAndPrepare()
77+
performProjectAuthGet("keys?branch=feature")
78+
.andIsOk.andAssertThatJson {
79+
node("_embedded.keys") {
80+
isArray.hasSize(20)
81+
node("[0].id").isValidId
82+
node("[1].name").isEqualTo("branch_key_2")
83+
node("[1].description").isEqualTo("description of branched key")
84+
node("[2].namespace").isEqualTo("null")
85+
}
86+
node("page.totalElements").isNumber.isEqualTo(BigDecimal(110))
87+
}
88+
performProjectAuthGet("keys?page=1&branch=feature")
89+
.andIsOk.andAssertThatJson {
90+
node("_embedded.keys") {
91+
isArray.hasSize(20)
92+
node("[0].id").isValidId
93+
node("[1].name").isEqualTo("branch_key_22 ")
94+
node("[2].namespace").isEqualTo("null")
95+
}
96+
}
97+
}
98+
7199
@ProjectJWTAuthTestMethod
72100
@Test
73101
fun `returns single key`() {

backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/TestDataService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ class TestDataService(
593593
}
594594

595595
private fun saveBranches(builder: ProjectBuilder) {
596-
builder.data.branches.forEach {
596+
builder.data.branches.filter { it.self.id == 0L }.forEach {
597597
entityManager.persist(it.self)
598598
}
599599
}

backend/data/src/main/kotlin/io/tolgee/development/testDataBuilder/data/KeysTestData.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,15 @@ class KeysTestData {
104104
custom = mutableMapOf("custom" to "value")
105105
}
106106
}
107+
108+
addBranch {
109+
name = "dev"
110+
}.build {
111+
addKey {
112+
name = "first_key"
113+
branch = self
114+
}
115+
}
107116
}
108117

109118
addUserAccountWithoutOrganization {
@@ -137,6 +146,8 @@ class KeysTestData {
137146
addKey {
138147
name = "branch_key_$it"
139148
this.branch = self
149+
}.build {
150+
setDescription("description of branched key")
140151
}
141152
}
142153
}

backend/data/src/main/kotlin/io/tolgee/dtos/RelatedKeyDto.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ data class RelatedKeyDto(
66
var namespace: String? = null,
77
@field:NotEmpty
88
var keyName: String = "",
9+
var branch: String? = null,
910
)

backend/data/src/main/kotlin/io/tolgee/dtos/queryResults/KeyIdFindResult.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ data class KeyIdFindResult(
44
val id: Long,
55
val namespace: String?,
66
val name: String,
7+
val branch: String?,
78
)

backend/data/src/main/kotlin/io/tolgee/dtos/queryResults/KeyView.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ data class KeyView(
66
val namespace: String?,
77
val description: String?,
88
val custom: Any?,
9+
val branch: String?,
910
)

0 commit comments

Comments
 (0)