package com.orientechnologies.orient.core.sql; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.testng.Assert; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.metadata.schema.OSchema; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.record.impl.ODocument; public class NestedInsertTest { private ODatabaseDocument db; @Before public void before() { db = new ODatabaseDocumentTx("memory:" + NestedInsertTest.class.getSimpleName()); db.create(); } @After public void after() { db.drop(); } @Test public void testEmbeddedValueDate() { OSchema schm = db.getMetadata().getSchema(); schm.createClass("myClass"); final ODocument res = db .command(new OCommandSQL( "insert into myClass (name,meta) values (\"claudio\",{\"@type\":\"d\",\"country\":\"italy\", \"date\":\"2013-01-01\",\"@fieldTypes\":\"date=a\"}) return @this")) .execute(); final ODocument embedded = res.field("meta"); Assert.assertNotNull(embedded); Assert.assertEquals(embedded.fields(), 2); Assert.assertEquals(embedded.field("country"), "italy"); Assert.assertEquals(embedded.field("date").getClass(), java.util.Date.class); } @Test public void testLinkedNested() { OSchema schm = db.getMetadata().getSchema(); OClass cl = schm.createClass("myClass"); OClass linked = schm.createClass("Linked"); cl.createProperty("some", OType.LINK, linked); final ODocument res = db.command( new OCommandSQL("insert into myClass set some ={\"@type\":\"d\",\"@class\":\"Linked\",\"name\":\"a name\"} return @this")) .execute(); final ODocument ln = res.field("some"); Assert.assertNotNull(ln); Assert.assertTrue(ln.getIdentity().isPersistent()); Assert.assertEquals(ln.fields(), 1); Assert.assertEquals(ln.field("name"), "a name"); } }