@@ -19,25 +19,32 @@ package org.modelix.model.server.handlers
19
19
import io.ktor.client.call.body
20
20
import io.ktor.client.request.get
21
21
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
22
26
import io.ktor.serialization.kotlinx.json.json
23
27
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
24
28
import io.ktor.server.resources.Resources
25
29
import io.ktor.server.routing.IgnoreTrailingSlash
26
30
import io.ktor.server.testing.ApplicationTestBuilder
27
31
import io.ktor.server.testing.testApplication
28
32
import io.ktor.server.websocket.WebSockets
33
+ import org.jsoup.Jsoup
34
+ import org.jsoup.nodes.Element
35
+ import org.jsoup.select.Evaluator
29
36
import org.modelix.model.client.successful
30
37
import org.modelix.model.lazy.CLVersion
31
38
import org.modelix.model.server.api.v2.VersionDelta
32
39
import org.modelix.model.server.store.InMemoryStoreClient
33
40
import org.modelix.model.server.store.LocalModelClient
34
41
import kotlin.test.Test
42
+ import kotlin.test.assertNotNull
35
43
import kotlin.test.assertTrue
36
44
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation as ClientContentNegotiation
37
45
38
46
class ContentExplorerTest {
39
47
40
- private val repoId = " test-repo"
41
48
private val modelClient = LocalModelClient (InMemoryStoreClient ())
42
49
private val repoManager = RepositoriesManager (modelClient)
43
50
@@ -62,7 +69,7 @@ class ContentExplorerTest {
62
69
install(ClientContentNegotiation ) { json() }
63
70
}
64
71
65
- val delta: VersionDelta = client.post(" /v2/repositories/$repoId /init" ).body()
72
+ val delta: VersionDelta = client.post(" /v2/repositories/node-inspector /init" ).body()
66
73
67
74
val versionHash = delta.versionHash
68
75
val version = CLVersion .loadFromHash(versionHash, modelClient.storeCache)
@@ -71,4 +78,33 @@ class ContentExplorerTest {
71
78
val response = client.get(" /content/$versionHash /$nodeId /" )
72
79
assertTrue(response.successful)
73
80
}
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
+ }
74
110
}
0 commit comments