Skip to content

Commit 1533d6e

Browse files
committed
test(model-server): deduplicate code
1 parent 41326f3 commit 1533d6e

File tree

6 files changed

+56
-81
lines changed

6 files changed

+56
-81
lines changed

model-server/src/test/kotlin/org/modelix/model/server/ModelClientV2Test.kt

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,8 @@
1515

1616
package org.modelix.model.server
1717

18-
import io.ktor.serialization.kotlinx.json.json
19-
import io.ktor.server.application.install
20-
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
21-
import io.ktor.server.resources.Resources
22-
import io.ktor.server.routing.IgnoreTrailingSlash
2318
import io.ktor.server.testing.ApplicationTestBuilder
2419
import io.ktor.server.testing.testApplication
25-
import io.ktor.server.websocket.WebSockets
2620
import org.modelix.authorization.installAuthentication
2721
import org.modelix.model.api.IConceptReference
2822
import org.modelix.model.api.ITree
@@ -50,23 +44,12 @@ class ModelClientV2Test {
5044
private fun runTest(block: suspend ApplicationTestBuilder.() -> Unit) = testApplication {
5145
application {
5246
installAuthentication(unitTestMode = true)
53-
install(ContentNegotiation) {
54-
json()
55-
}
56-
install(WebSockets)
57-
install(Resources)
58-
install(IgnoreTrailingSlash)
47+
installDefaultServerPlugins()
5948
ModelReplicationServer(InMemoryStoreClient()).init(this)
6049
}
6150
block()
6251
}
6352

64-
private suspend fun ApplicationTestBuilder.createModelClient(): ModelClientV2 {
65-
val url = "http://localhost/v2"
66-
val modelClient = ModelClientV2.builder().url(url).client(client).build().also { it.init() }
67-
return modelClient
68-
}
69-
7053
@Test
7154
fun test_t1() = runTest {
7255
val client = createModelClient()
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright (c) 2024.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.modelix.model.server
18+
19+
import io.ktor.serialization.kotlinx.json.json
20+
import io.ktor.server.application.Application
21+
import io.ktor.server.application.install
22+
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
23+
import io.ktor.server.resources.Resources
24+
import io.ktor.server.routing.IgnoreTrailingSlash
25+
import io.ktor.server.testing.ApplicationTestBuilder
26+
import io.ktor.server.websocket.WebSockets
27+
import org.modelix.model.client2.ModelClientV2
28+
29+
suspend fun ApplicationTestBuilder.createModelClient(): ModelClientV2 {
30+
val url = "http://localhost/v2"
31+
return ModelClientV2.builder().url(url).client(client).build().also { it.init() }
32+
}
33+
34+
fun Application.installDefaultServerPlugins() {
35+
install(WebSockets)
36+
install(ContentNegotiation) { json() }
37+
install(Resources)
38+
install(IgnoreTrailingSlash)
39+
}

model-server/src/test/kotlin/org/modelix/model/server/PullPerformanceTest.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,8 @@
1616

1717
package org.modelix.model.server
1818

19-
import io.ktor.serialization.kotlinx.json.json
20-
import io.ktor.server.application.install
21-
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
22-
import io.ktor.server.resources.Resources
23-
import io.ktor.server.routing.IgnoreTrailingSlash
2419
import io.ktor.server.testing.ApplicationTestBuilder
2520
import io.ktor.server.testing.testApplication
26-
import io.ktor.server.websocket.WebSockets
2721
import kotlinx.coroutines.coroutineScope
2822
import org.modelix.authorization.installAuthentication
2923
import org.modelix.model.api.IChildLink
@@ -48,12 +42,7 @@ class PullPerformanceTest {
4842
val repositoriesManager = RepositoriesManager(LocalModelClient(storeClientWithStatistics))
4943
application {
5044
installAuthentication(unitTestMode = true)
51-
install(ContentNegotiation) {
52-
json()
53-
}
54-
install(WebSockets)
55-
install(Resources)
56-
install(IgnoreTrailingSlash)
45+
installDefaultServerPlugins()
5746
ModelReplicationServer(repositoriesManager).init(this)
5847
KeyValueLikeModelServer(repositoriesManager).init(this)
5948
}

model-server/src/test/kotlin/org/modelix/model/server/ReplicatedRepositoryTest.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,8 @@
1515

1616
package org.modelix.model.server
1717

18-
import io.ktor.serialization.kotlinx.json.json
19-
import io.ktor.server.application.install
20-
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
21-
import io.ktor.server.resources.Resources
22-
import io.ktor.server.routing.IgnoreTrailingSlash
2318
import io.ktor.server.testing.ApplicationTestBuilder
2419
import io.ktor.server.testing.testApplication
25-
import io.ktor.server.websocket.WebSockets
2620
import kotlinx.coroutines.CoroutineScope
2721
import kotlinx.coroutines.coroutineScope
2822
import kotlinx.coroutines.delay
@@ -73,12 +67,7 @@ class ReplicatedRepositoryTest {
7367
private fun runTest(block: suspend ApplicationTestBuilder.(scope: CoroutineScope) -> Unit) = testApplication {
7468
application {
7569
installAuthentication(unitTestMode = true)
76-
install(ContentNegotiation) {
77-
json()
78-
}
79-
install(WebSockets)
80-
install(Resources)
81-
install(IgnoreTrailingSlash)
70+
installDefaultServerPlugins()
8271
val repositoriesManager = RepositoriesManager(LocalModelClient(InMemoryStoreClient()))
8372
ModelReplicationServer(repositoriesManager).init(this)
8473
KeyValueLikeModelServer(repositoriesManager).init(this)

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

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,21 @@ import io.ktor.client.statement.bodyAsText
2424
import io.ktor.http.ContentType
2525
import io.ktor.http.contentType
2626
import io.ktor.serialization.kotlinx.json.json
27-
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
28-
import io.ktor.server.resources.Resources
29-
import io.ktor.server.routing.IgnoreTrailingSlash
3027
import io.ktor.server.testing.ApplicationTestBuilder
3128
import io.ktor.server.testing.testApplication
32-
import io.ktor.server.websocket.WebSockets
3329
import org.jsoup.Jsoup
3430
import org.jsoup.nodes.Element
3531
import org.jsoup.select.Evaluator
3632
import org.modelix.model.api.IReferenceLink
3733
import org.modelix.model.api.ITree
3834
import org.modelix.model.api.NodeReferenceById
3935
import org.modelix.model.client.successful
40-
import org.modelix.model.client2.ModelClientV2
4136
import org.modelix.model.client2.runWrite
4237
import org.modelix.model.lazy.CLVersion
4338
import org.modelix.model.lazy.RepositoryId
4439
import org.modelix.model.server.api.v2.VersionDelta
40+
import org.modelix.model.server.createModelClient
41+
import org.modelix.model.server.installDefaultServerPlugins
4542
import org.modelix.model.server.store.InMemoryStoreClient
4643
import org.modelix.model.server.store.LocalModelClient
4744
import kotlin.test.Test
@@ -55,32 +52,22 @@ class ContentExplorerTest {
5552
private val modelClient = LocalModelClient(InMemoryStoreClient())
5653
private val repoManager = RepositoriesManager(modelClient)
5754

58-
private fun runTest(body: suspend (ApplicationTestBuilder.() -> Unit)) {
59-
testApplication {
60-
install(WebSockets)
61-
install(ContentNegotiation) { json() }
62-
install(Resources)
63-
install(IgnoreTrailingSlash)
64-
application {
65-
ModelReplicationServer(repoManager).init(this)
66-
ContentExplorer(modelClient, repoManager).init(this)
67-
}
68-
69-
body()
55+
private fun runTest(body: suspend (ApplicationTestBuilder.() -> Unit)) = testApplication {
56+
application {
57+
installDefaultServerPlugins()
58+
ModelReplicationServer(repoManager).init(this)
59+
ContentExplorer(modelClient, repoManager).init(this)
7060
}
61+
body()
7162
}
7263

73-
private suspend fun ApplicationTestBuilder.createModelClient(): ModelClientV2 {
74-
val url = "http://localhost/v2"
75-
val modelClient = ModelClientV2.builder().url(url).client(client).build().also { it.init() }
76-
return modelClient
64+
private fun ApplicationTestBuilder.createHttpClient() = createClient {
65+
install(ClientContentNegotiation) { json() }
7766
}
7867

7968
@Test
8069
fun `node inspector finds root node`() = runTest {
81-
val client = createClient {
82-
install(ClientContentNegotiation) { json() }
83-
}
70+
val client = createHttpClient()
8471

8572
val delta: VersionDelta = client.post("/v2/repositories/node-inspector/init").body()
8673

@@ -122,9 +109,7 @@ class ContentExplorerTest {
122109

123110
@Test
124111
fun `nodes can be expanded`() = runTest {
125-
val client = createClient {
126-
install(ClientContentNegotiation) { json() }
127-
}
112+
val client = createHttpClient()
128113

129114
val delta: VersionDelta = client.post("/v2/repositories/node-expansion/init").body()
130115

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

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,8 @@ package org.modelix.model.server.handlers
1818
import io.ktor.client.request.get
1919
import io.ktor.http.appendPathSegments
2020
import io.ktor.http.takeFrom
21-
import io.ktor.serialization.kotlinx.json.json
22-
import io.ktor.server.application.install
23-
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
24-
import io.ktor.server.resources.Resources
25-
import io.ktor.server.routing.IgnoreTrailingSlash
2621
import io.ktor.server.testing.ApplicationTestBuilder
2722
import io.ktor.server.testing.testApplication
28-
import io.ktor.server.websocket.WebSockets
2923
import kotlinx.coroutines.CoroutineScope
3024
import kotlinx.coroutines.coroutineScope
3125
import org.modelix.authorization.installAuthentication
@@ -35,6 +29,7 @@ import org.modelix.model.client2.readVersionDelta
3529
import org.modelix.model.client2.runWrite
3630
import org.modelix.model.client2.useVersionStreamFormat
3731
import org.modelix.model.lazy.RepositoryId
32+
import org.modelix.model.server.installDefaultServerPlugins
3833
import org.modelix.model.server.store.InMemoryStoreClient
3934
import org.modelix.model.server.store.LocalModelClient
4035
import kotlin.test.Test
@@ -45,12 +40,7 @@ class ModelReplicationServerTest {
4540
private fun runTest(block: suspend ApplicationTestBuilder.(scope: CoroutineScope) -> Unit) = testApplication {
4641
application {
4742
installAuthentication(unitTestMode = true)
48-
install(ContentNegotiation) {
49-
json()
50-
}
51-
install(WebSockets)
52-
install(Resources)
53-
install(IgnoreTrailingSlash)
43+
installDefaultServerPlugins()
5444
val repositoriesManager = RepositoriesManager(LocalModelClient(InMemoryStoreClient()))
5545
ModelReplicationServer(repositoriesManager).init(this)
5646
KeyValueLikeModelServer(repositoriesManager).init(this)

0 commit comments

Comments
 (0)