Skip to content

Commit 453a984

Browse files
committed
fix(model-server): fix broken expandTo functionality
1 parent fedd7b7 commit 453a984

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

model-server/src/main/kotlin/org/modelix/model/server/handlers/ui/ContentExplorer.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ import org.modelix.model.server.handlers.NodeNotFoundException
7575
import org.modelix.model.server.handlers.getLegacyObjectStore
7676
import org.modelix.model.server.store.StoreManager
7777
import org.modelix.model.server.templates.PageWithMenuBar
78-
import kotlin.collections.set
7978

8079
class ContentExplorer(private val repoManager: IRepositoriesManager) {
8180

@@ -215,7 +214,7 @@ class ContentExplorer(private val repoManager: IRepositoriesManager) {
215214
private fun getAncestorsAndSelf(expandTo: Long, tree: CLTree): Set<String> {
216215
val seq = generateSequence(expandTo) { id ->
217216
try {
218-
tree.getParent(id)
217+
tree.getParent(id).takeIf { it != 0L } // getParent returns 0L for root node
219218
} catch (e: org.modelix.model.lazy.NodeNotFoundException) {
220219
throw NodeNotFoundException(id, e)
221220
}

model-server/src/test/kotlin/org/modelix/model/server/handlers/ui/ContentExplorerTest.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import io.kotest.assertions.ktor.client.shouldHaveStatus
2020
import io.kotest.matchers.string.shouldContain
2121
import io.ktor.client.call.body
2222
import io.ktor.client.request.get
23+
import io.ktor.client.request.parameter
2324
import io.ktor.client.request.post
2425
import io.ktor.client.request.setBody
2526
import io.ktor.client.statement.bodyAsText
@@ -35,7 +36,10 @@ import org.jsoup.select.Evaluator
3536
import org.modelix.model.api.IReferenceLink
3637
import org.modelix.model.api.ITree
3738
import org.modelix.model.api.NodeReferenceById
39+
import org.modelix.model.api.PNodeAdapter
40+
import org.modelix.model.api.addNewChild
3841
import org.modelix.model.client.successful
42+
import org.modelix.model.client2.ModelClientV2
3943
import org.modelix.model.client2.runWrite
4044
import org.modelix.model.lazy.CLVersion
4145
import org.modelix.model.lazy.RepositoryId
@@ -140,6 +144,33 @@ class ContentExplorerTest {
140144
assertTrue { root.childrenSize() > 0 }
141145
}
142146

147+
@Test
148+
fun `nodes can be expanded to`() = runTest {
149+
val client = createHttpClient()
150+
val branchRef = RepositoryId("node-expand-to-test").getBranchReference("master")
151+
client.post("/v2/repositories/${branchRef.repositoryId}/init")
152+
val modelClient = ModelClientV2.builder()
153+
.client(client)
154+
.url("/v2")
155+
.build().also { it.init() }
156+
157+
modelClient.use {
158+
val newestChild = modelClient.runWrite(branchRef) { rootNode ->
159+
rootNode.addNewChild(null)
160+
.addNewChild(null)
161+
.addNewChild(null)
162+
}
163+
val versionHash = modelClient.pullHash(branchRef)
164+
val expandToId = (newestChild as PNodeAdapter).nodeId
165+
166+
val response = client.get("/content/repositories/${branchRef.repositoryId}/versions/$versionHash/") {
167+
parameter("expandTo", expandToId)
168+
}
169+
response shouldHaveStatus HttpStatusCode.OK
170+
response.bodyAsText() shouldContain expandToId.toString()
171+
}
172+
}
173+
143174
@Test
144175
fun `expanding to non-existing node leads to not found response`() = runTest {
145176
val client = createHttpClient()

0 commit comments

Comments
 (0)