package com.orientechnologies.orient.core.record.impl; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.Map; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; import com.orientechnologies.orient.core.id.ORID; import com.orientechnologies.orient.core.id.ORecordId; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.record.impl.ODocument; public class TestSerializationCompatibilityRecord { private ODatabaseDocument database; @Before public void before() { database = new ODatabaseDocumentTx("memory:" + TestSerializationCompatibilityRecord.class.getSimpleName()); database.create(); } @Test public void testDataNotMatchSchema() { OClass klass = database.getMetadata().getSchema().createClass("Test", database.getMetadata().getSchema().getClass("V")); ODocument doc = new ODocument("Test"); Map<String, ORID> map = new HashMap<String, ORID>(); map.put("some", new ORecordId(10, 20)); doc.field("map", map, OType.LINKMAP); ORID id = database.save(doc).getIdentity(); klass.createProperty("map", OType.EMBEDDEDMAP, (OType) null, true); database.getMetadata().reload(); database.getLocalCache().clear(); ODocument record = database.load(id); // Force deserialize + serialize; record.field("some", "aa"); database.save(record); database.getLocalCache().clear(); ODocument record1 = database.load(id); assertEquals(record1.fieldType("map"), OType.LINKMAP); } @After public void after() { database.drop(); } }