@@ -27,25 +27,33 @@ import kotlinx.serialization.json.Json
27
27
import kotlinx.serialization.json.JsonElement
28
28
import org.modelix.authorization.installAuthentication
29
29
import org.modelix.model.InMemoryModels
30
+ import org.modelix.model.client.RestWebModelClient
31
+ import org.modelix.model.client2.runWrite
32
+ import org.modelix.model.lazy.CLVersion
33
+ import org.modelix.model.lazy.RepositoryId
34
+ import org.modelix.model.server.createModelClient
30
35
import org.modelix.model.server.installDefaultServerPlugins
31
36
import org.modelix.model.server.store.InMemoryStoreClient
32
37
import org.modelix.model.server.store.LocalModelClient
38
+ import org.modelix.model.server.store.forContextRepository
33
39
import org.modelix.model.server.store.forGlobalRepository
34
40
import kotlin.test.Test
35
41
import kotlin.test.assertEquals
42
+ import kotlin.test.assertTrue
36
43
37
44
class KeyValueLikeModelServerTest {
38
45
39
46
private fun runTest (block : suspend ApplicationTestBuilder .() -> Unit ) = testApplication {
40
- val storeClient = InMemoryStoreClient ()
41
- val modelClient = LocalModelClient (storeClient.forGlobalRepository() )
42
- val repositoriesManager = RepositoriesManager (modelClient )
43
- val handler = KeyValueLikeModelServer (repositoriesManager, modelClient.store, InMemoryModels () )
47
+ val inMemoryModels = InMemoryModels ()
48
+ val store = InMemoryStoreClient ( )
49
+ val localModelClient = LocalModelClient (store.forContextRepository() )
50
+ val repositoriesManager = RepositoriesManager (localModelClient )
44
51
45
52
application {
46
53
installAuthentication(unitTestMode = true )
47
54
installDefaultServerPlugins()
48
- handler.init (this )
55
+ KeyValueLikeModelServer (repositoriesManager, store.forGlobalRepository(), InMemoryModels ()).init (this )
56
+ ModelReplicationServer (repositoriesManager, localModelClient, inMemoryModels).init (this )
49
57
}
50
58
51
59
block()
@@ -85,4 +93,26 @@ class KeyValueLikeModelServerTest {
85
93
)
86
94
assertEquals(expected, actual)
87
95
}
96
+
97
+ @Test
98
+ fun `model client V1 can merge versions` () = runTest {
99
+ val clientV1 = RestWebModelClient (baseUrl = " http://localhost/" , providedClient = client)
100
+ val clientV2 = createModelClient()
101
+ val repositoryId = RepositoryId (" repo1" )
102
+ val branchA = repositoryId.getBranchReference(" branchA" )
103
+ val branchB = repositoryId.getBranchReference(" branchB" )
104
+ clientV2.initRepositoryWithLegacyStorage(repositoryId)
105
+ clientV2.runWrite(branchA) { rootNode ->
106
+ rootNode.setPropertyValue(" propertyA" , " valueA" )
107
+ }
108
+ clientV2.runWrite(branchB) { rootNode ->
109
+ rootNode.setPropertyValue(" propertyB" , " valueB" )
110
+ }
111
+ val branchBHash = clientV2.pullHash(branchB)
112
+
113
+ clientV1.putA(branchA.getKey(), branchBHash)
114
+
115
+ val branchAVersion = clientV2.pull(branchA, null ) as CLVersion
116
+ assertTrue(branchAVersion.isMerge())
117
+ }
88
118
}
0 commit comments