mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
[Workspace Model] [IDEA-310919] Fix issue when applying external mappings in addDiff.
GitOrigin-RevId: 1842b4d0a8e0d16aea2cda6f6612db6f07c8d7e9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b5d7cd817f
commit
66567d917a
@@ -129,7 +129,9 @@ internal class MutableExternalEntityMappingImpl<T> private constructor(
|
||||
}
|
||||
}
|
||||
is IndexLogRecord.Remove -> {
|
||||
remove(record.id)
|
||||
getTargetId(replaceMap, target, record.id)?.let { entityId ->
|
||||
remove(entityId)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.junit.jupiter.api.*
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import java.util.*
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertSame
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class AddDiffTest {
|
||||
@@ -25,6 +26,8 @@ class AddDiffTest {
|
||||
|
||||
private lateinit var virtualFileUrlManager: VirtualFileUrlManager
|
||||
|
||||
private val externalMappingName = "test.checking.external.mapping"
|
||||
|
||||
private fun MutableEntityStorage.applyDiff(anotherBuilder: MutableEntityStorage): EntityStorage {
|
||||
val builder = createBuilderFrom(this)
|
||||
builder.upgradeAddDiffEngine = { it.shaker = shaker }
|
||||
@@ -326,16 +329,41 @@ class AddDiffTest {
|
||||
val source = createEmptyBuilder()
|
||||
val sourceSample = source addEntity SampleEntity(false, "Entity at index 1", ArrayList(), HashMap(),
|
||||
virtualFileUrlManager.fromUrl("file:///tmp"), SampleEntitySource("test"))
|
||||
val mutableExternalMapping = source.getMutableExternalMapping<Any>("test.checking.external.mapping")
|
||||
val mutableExternalMapping = source.getMutableExternalMapping<Any>(externalMappingName)
|
||||
val anyObj = Any()
|
||||
mutableExternalMapping.addMapping(sourceSample, anyObj)
|
||||
|
||||
target.addDiff(source)
|
||||
|
||||
val externalMapping = target.getExternalMapping<Any>("test.checking.external.mapping") as ExternalEntityMappingImpl<Any>
|
||||
val externalMapping = target.getExternalMapping<Any>(externalMappingName) as ExternalEntityMappingImpl<Any>
|
||||
assertEquals(1, externalMapping.index.size)
|
||||
}
|
||||
|
||||
@RepeatedTest(10)
|
||||
fun `checking external mapping is moved to the target builder`() {
|
||||
val target = createEmptyBuilder()
|
||||
|
||||
val entity = target addEntity ParentEntity("Hey", MySource)
|
||||
val obj = Any()
|
||||
val obj2 = Any()
|
||||
target.getMutableExternalMapping<Any>(externalMappingName).addMapping(entity, obj)
|
||||
|
||||
val newBuilder = target.toSnapshot().toBuilder()
|
||||
val newEntity = newBuilder addEntity ParentEntity("Hey 2", MySource)
|
||||
newBuilder.getMutableExternalMapping<Any>(externalMappingName).addMapping(newEntity, obj2)
|
||||
newBuilder.removeEntity(entity.from(newBuilder))
|
||||
|
||||
target.removeEntity(entity)
|
||||
val freezed = target.toSnapshot().toBuilder()
|
||||
|
||||
freezed.addDiff(newBuilder)
|
||||
|
||||
assertEquals(1, freezed.entities(ParentEntity::class.java).toList().size)
|
||||
val requestedEntity = freezed.entities(ParentEntity::class.java).single()
|
||||
assertEquals("Hey 2", requestedEntity.parentData)
|
||||
assertSame(obj2, freezed.getMutableExternalMapping<Any>(externalMappingName).getDataByEntity(requestedEntity))
|
||||
}
|
||||
|
||||
@RepeatedTest(10)
|
||||
fun `change source in diff`() {
|
||||
val sampleEntity = target addEntity SampleEntity(false, "Prop", ArrayList(), HashMap(),
|
||||
|
||||
Reference in New Issue
Block a user