package com.orientechnologies.orient.core.db.document; import com.orientechnologies.orient.core.record.impl.ODocument; import org.testng.annotations.Test; import java.util.HashSet; import java.util.Set; import static org.testng.Assert.assertEquals; public class DeepLinkedDocumentSaveTest { @Test public void testLinked() { ODatabaseDocument db = new ODatabaseDocumentTx("memory:" + DeepLinkedDocumentSaveTest.class.getSimpleName()); db.create(); try { final Set<ODocument> docs = new HashSet<ODocument>(); db.getMetadata().getSchema().createClass("Test"); ODocument doc = new ODocument("Test"); docs.add(doc); for (int i = 0; i < 3000; i++) docs.add(doc = new ODocument("Test").field("linked", doc)); db.save(doc); assertEquals(3001, db.countClass("Test")); for (ODocument d : docs) assertEquals(1, d.getVersion()); } finally { db.drop(); } } @Test public void testLinkedTx() { ODatabaseDocument db = new ODatabaseDocumentTx("memory:" + DeepLinkedDocumentSaveTest.class.getSimpleName()); db.create(); try { final Set<ODocument> docs = new HashSet<ODocument>(); db.getMetadata().getSchema().createClass("Test"); db.begin(); ODocument doc = new ODocument("Test"); docs.add(doc); for (int i = 0; i < 3000; i++) docs.add(doc = new ODocument("Test").field("linked", doc)); db.save(doc); db.commit(); assertEquals(3001, db.countClass("Test")); for (ODocument d : docs) assertEquals(1, d.getVersion()); } finally { db.drop(); } } }