1
1
package org.modelix.modelql.typed
2
2
3
+ import io.ktor.server.testing.ApplicationTestBuilder
4
+ import io.ktor.server.testing.testApplication
3
5
import jetbrains.mps.baseLanguage.C_ClassConcept
4
6
import jetbrains.mps.baseLanguage.C_IntegerType
5
7
import jetbrains.mps.baseLanguage.C_MinusExpression
@@ -17,19 +19,24 @@ import jetbrains.mps.core.xml.C_XmlDocument
17
19
import jetbrains.mps.core.xml.C_XmlFile
18
20
import jetbrains.mps.lang.editor.imageGen.C_ImageGenerator
19
21
import jetbrains.mps.lang.editor.imageGen.ImageGenerator
20
- import kotlinx.coroutines.runBlocking
21
22
import org.junit.jupiter.api.TestInstance
22
23
import org.modelix.apigen.test.ApigenTestLanguages
23
24
import org.modelix.metamodel.instanceOf
24
25
import org.modelix.metamodel.typed
25
26
import org.modelix.metamodel.untyped
27
+ import org.modelix.metamodel.untypedConcept
26
28
import org.modelix.model.ModelFacade
27
29
import org.modelix.model.api.INode
28
30
import org.modelix.model.api.remove
29
31
import org.modelix.model.api.resolve
30
32
import org.modelix.model.client2.ModelClientV2
31
33
import org.modelix.model.client2.runWrite
32
34
import org.modelix.model.lazy.RepositoryId
35
+ import org.modelix.model.server.handlers.IdsApiImpl
36
+ import org.modelix.model.server.handlers.ModelReplicationServer
37
+ import org.modelix.model.server.handlers.RepositoriesManager
38
+ import org.modelix.model.server.installDefaultServerPlugins
39
+ import org.modelix.model.server.store.InMemoryStoreClient
33
40
import org.modelix.modelql.client.ModelQLClient
34
41
import org.modelix.modelql.core.asMono
35
42
import org.modelix.modelql.core.count
@@ -60,7 +67,6 @@ import org.modelix.modelql.gen.jetbrains.mps.lang.editor.imageGen.setNode
60
67
import org.modelix.modelql.untyped.children
61
68
import org.modelix.modelql.untyped.conceptReference
62
69
import org.modelix.modelql.untyped.descendants
63
- import kotlin.test.BeforeTest
64
70
import kotlin.test.Test
65
71
import kotlin.test.assertEquals
66
72
import kotlin.test.assertNotEquals
@@ -71,33 +77,40 @@ import kotlin.test.assertTrue
71
77
@TestInstance(TestInstance .Lifecycle .PER_CLASS )
72
78
class TypedModelQLTest {
73
79
74
- private var testRun = 0
75
- private val modelClient = ModelClientV2 .builder().url(" http://localhost:28102/v2/" ).build().also { runBlocking { it.init () } }
76
80
private val branchRef
77
- get() = ModelFacade .createBranchReference(RepositoryId (" modelql-test$testRun " ), " master" )
81
+ get() = ModelFacade .createBranchReference(RepositoryId (" modelql-test" ), " master" )
82
+
83
+ private fun runTest (block : suspend ApplicationTestBuilder .(ModelQLClient ) -> Unit ) = testApplication {
84
+ application {
85
+ try {
86
+ installDefaultServerPlugins()
87
+ val repoManager = RepositoriesManager (InMemoryStoreClient ())
88
+ ModelReplicationServer (repoManager).init (this )
89
+ IdsApiImpl (repoManager).init (this )
90
+ } catch (ex: Throwable ) {
91
+ ex.printStackTrace()
92
+ }
93
+ }
78
94
79
- private fun runTest (block : suspend (ModelQLClient ) -> Unit ) {
95
+ val modelClient = ModelClientV2 .builder()
96
+ .client(client)
97
+ .url(" http://localhost/v2/" )
98
+ .build()
99
+ .also { it.init () }
100
+ modelClient.runWrite(branchRef) {
101
+ createTestData(it)
102
+ }
80
103
val modelQlClient = ModelQLClient .builder()
81
- .url(" http://localhost:28102/v2/repositories/${branchRef.repositoryId.id} /branches/${branchRef.branchName} /query" )
104
+ .httpClient(client)
105
+ .url(" http://localhost/v2/repositories/${branchRef.repositoryId.id} /branches/${branchRef.branchName} /query" )
82
106
.build()
83
-
84
- runBlocking { block(modelQlClient) }
107
+ block(modelQlClient)
85
108
}
86
109
87
110
init {
88
111
ApigenTestLanguages .registerAll()
89
112
}
90
113
91
- @BeforeTest
92
- fun setup () {
93
- testRun++
94
- runBlocking {
95
- modelClient.runWrite(branchRef) {
96
- createTestData(it)
97
- }
98
- }
99
- }
100
-
101
114
protected fun createTestData (rootNode : INode ) {
102
115
rootNode.allChildren.forEach { it.remove() }
103
116
val cls1 = rootNode.addNewChild(" classes" , - 1 , C_ClassConcept .untyped()).typed<ClassConcept >()
@@ -362,7 +375,7 @@ class TypedModelQLTest {
362
375
root.descendants().ofConcept(C_ReturnStatement ).first().expression
363
376
}
364
377
assertNotNull(actual)
365
- assertTrue(actual.instanceOf(C_MinusExpression ))
378
+ assertTrue(actual.instanceOf(C_MinusExpression ), actual.untypedConcept().getLongName() )
366
379
}
367
380
368
381
@Test
0 commit comments