@@ -27,25 +27,33 @@ import kotlinx.serialization.json.Json
2727import kotlinx.serialization.json.JsonElement
2828import org.modelix.authorization.installAuthentication
2929import 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
3035import org.modelix.model.server.installDefaultServerPlugins
3136import org.modelix.model.server.store.InMemoryStoreClient
3237import org.modelix.model.server.store.LocalModelClient
38+ import org.modelix.model.server.store.forContextRepository
3339import org.modelix.model.server.store.forGlobalRepository
3440import kotlin.test.Test
3541import kotlin.test.assertEquals
42+ import kotlin.test.assertTrue
3643
3744class KeyValueLikeModelServerTest {
3845
3946 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 )
4451
4552 application {
4653 installAuthentication(unitTestMode = true )
4754 installDefaultServerPlugins()
48- handler.init (this )
55+ KeyValueLikeModelServer (repositoriesManager, store.forGlobalRepository(), InMemoryModels ()).init (this )
56+ ModelReplicationServer (repositoriesManager, localModelClient, inMemoryModels).init (this )
4957 }
5058
5159 block()
@@ -85,4 +93,26 @@ class KeyValueLikeModelServerTest {
8593 )
8694 assertEquals(expected, actual)
8795 }
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+ }
88118}
0 commit comments