Skip to content

Commit e716a3f

Browse files
authored
Merge pull request #401 from modelix/issue/MODELIX-701
MODELIX-701 Content explorer shows no content
2 parents d8363c1 + 9f45492 commit e716a3f

File tree

4 files changed

+41
-5
lines changed

4 files changed

+41
-5
lines changed

api/model-server-html.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ paths:
5959
type: string
6060
requestBody:
6161
content:
62-
'*/*':
62+
'application/json':
6363
schema:
6464
$ref: "#/components/schemas/ContentExplorerExpandedNodes"
6565
required: true
@@ -244,8 +244,6 @@ components:
244244
type: string
245245
expandAll:
246246
type: boolean
247-
required:
248-
- "expandedNodeIds"
249247
Function1:
250248
type: object
251249
properties: {}

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ jcommander = { group = "com.beust", name = "jcommander", version = "1.82" }
9696
cucumber-java = { group = "io.cucumber", name = "cucumber-java", version = "7.15.0" }
9797
junit = { group = "junit", name = "junit", version = "4.13.2" }
9898
xmlunit-core = { group = "org.xmlunit", name = "xmlunit-core", version = "2.9.1"}
99+
jsoup = { group = "org.jsoup", name = "jsoup", version = "1.17.2" }
99100

100101
apache-cxf-sse = { group = "org.apache.cxf", name = "cxf-rt-rs-sse", version.ref = "apacheCxf" }
101102
apache-cxf-client = { group = "org.apache.cxf", name = "cxf-rt-rs-client", version.ref = "apacheCxf" }

model-server/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ dependencies {
6767
testImplementation(libs.cucumber.java)
6868
testImplementation(libs.ktor.server.test.host)
6969
testImplementation(libs.kotlin.coroutines.test)
70+
testImplementation(libs.jsoup)
7071
testImplementation(kotlin("test"))
7172
testImplementation(project(":modelql-untyped"))
7273
}

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

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,32 @@ package org.modelix.model.server.handlers
1919
import io.ktor.client.call.body
2020
import io.ktor.client.request.get
2121
import io.ktor.client.request.post
22+
import io.ktor.client.request.setBody
23+
import io.ktor.client.statement.bodyAsText
24+
import io.ktor.http.ContentType
25+
import io.ktor.http.contentType
2226
import io.ktor.serialization.kotlinx.json.json
2327
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
2428
import io.ktor.server.resources.Resources
2529
import io.ktor.server.routing.IgnoreTrailingSlash
2630
import io.ktor.server.testing.ApplicationTestBuilder
2731
import io.ktor.server.testing.testApplication
2832
import io.ktor.server.websocket.WebSockets
33+
import org.jsoup.Jsoup
34+
import org.jsoup.nodes.Element
35+
import org.jsoup.select.Evaluator
2936
import org.modelix.model.client.successful
3037
import org.modelix.model.lazy.CLVersion
3138
import org.modelix.model.server.api.v2.VersionDelta
3239
import org.modelix.model.server.store.InMemoryStoreClient
3340
import org.modelix.model.server.store.LocalModelClient
3441
import kotlin.test.Test
42+
import kotlin.test.assertNotNull
3543
import kotlin.test.assertTrue
3644
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation as ClientContentNegotiation
3745

3846
class ContentExplorerTest {
3947

40-
private val repoId = "test-repo"
4148
private val modelClient = LocalModelClient(InMemoryStoreClient())
4249
private val repoManager = RepositoriesManager(modelClient)
4350

@@ -62,7 +69,7 @@ class ContentExplorerTest {
6269
install(ClientContentNegotiation) { json() }
6370
}
6471

65-
val delta: VersionDelta = client.post("/v2/repositories/$repoId/init").body()
72+
val delta: VersionDelta = client.post("/v2/repositories/node-inspector/init").body()
6673

6774
val versionHash = delta.versionHash
6875
val version = CLVersion.loadFromHash(versionHash, modelClient.storeCache)
@@ -71,4 +78,33 @@ class ContentExplorerTest {
7178
val response = client.get("/content/$versionHash/$nodeId/")
7279
assertTrue(response.successful)
7380
}
81+
82+
@Test
83+
fun `nodes can be expanded`() = runTest {
84+
val client = createClient {
85+
install(ClientContentNegotiation) { json() }
86+
}
87+
88+
val delta: VersionDelta = client.post("/v2/repositories/node-expansion/init").body()
89+
90+
val versionHash = delta.versionHash
91+
val version = CLVersion.loadFromHash(versionHash, modelClient.storeCache)
92+
val nodeId = checkNotNull(version.getTree().root?.id)
93+
94+
val expandedNodes = ContentExplorerExpandedNodes(setOf(nodeId.toString()), false)
95+
96+
val response = client.post("/content/$versionHash/") {
97+
contentType(ContentType.Application.Json)
98+
setBody(expandedNodes)
99+
}
100+
101+
val html = Jsoup.parse(response.bodyAsText())
102+
val root: Element? = html.body().firstElementChild()
103+
104+
assertTrue { response.successful }
105+
assertNotNull(root)
106+
assertTrue { root.`is`(Evaluator.Tag("ul")) }
107+
assertTrue { root.`is`(Evaluator.Class("treeRoot")) }
108+
assertTrue { root.childrenSize() > 0 }
109+
}
74110
}

0 commit comments

Comments
 (0)