X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=tests%2Forg.simantics.db.tests%2Fsrc%2Forg%2Fsimantics%2Fdb%2Ftests%2Fapi%2Fsupport%2FmanagementSupport%2FGetMetadataTest.java;fp=tests%2Forg.simantics.db.tests%2Fsrc%2Forg%2Fsimantics%2Fdb%2Ftests%2Fapi%2Fsupport%2FmanagementSupport%2FGetMetadataTest.java;h=eb00bf3eb73e23c98cb5bb2d1f8baeb0374d54b1;hb=67fd62f9c742337ec80eef658192db198a0efaac;hp=0000000000000000000000000000000000000000;hpb=cde82ba81327d5515fdca362f7f4c70f5103ae80;p=simantics%2Fplatform.git diff --git a/tests/org.simantics.db.tests/src/org/simantics/db/tests/api/support/managementSupport/GetMetadataTest.java b/tests/org.simantics.db.tests/src/org/simantics/db/tests/api/support/managementSupport/GetMetadataTest.java new file mode 100644 index 000000000..eb00bf3eb --- /dev/null +++ b/tests/org.simantics.db.tests/src/org/simantics/db/tests/api/support/managementSupport/GetMetadataTest.java @@ -0,0 +1,83 @@ +package org.simantics.db.tests.api.support.managementSupport; + +import java.util.Collection; + +import org.junit.Test; +import org.simantics.db.ReadGraph; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.CommentMetadata; +import org.simantics.db.common.UndoMetadata; +import org.simantics.db.common.request.ReadRequest; +import org.simantics.db.common.request.WriteRequest; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.service.ManagementSupport; +import org.simantics.db.testing.base.ExistingDatabaseTest; + +public class GetMetadataTest extends ExistingDatabaseTest { + // Behavior of commit has been changed. Commits with only CommentMetadata are dropped. + private void addMetadata(WriteGraph wg, String s) throws DatabaseException { + CommentMetadata cm = wg.getMetadata(CommentMetadata.class); + wg.addMetadata(cm.add(s)); + wg.addMetadata(new UndoMetadata(null, false, 0, 0)); + } + @Test + public void test() throws DatabaseException { + final ManagementSupport ms = getSession().getService(ManagementSupport.class); + WriteRequest nop0 = new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException { + addMetadata(graph, "NOP0"); + } + }; + getSession().sync(nop0); + final long endId = ms.getHeadRevisionId(); + + assertTrue(endId > 0); + WriteRequest nop1 = new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException { + addMetadata(graph, "NOP1"); + } + }; + getSession().sync(nop1); + WriteRequest nop2 = new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException { + addMetadata(graph, "NOP2"); + } + }; + getSession().sync(nop2); + final long newId = ms.getHeadRevisionId(); + + assertTrue(endId == newId - 2); + getSession().syncRequest(new ReadRequest() { + @Override + public void run(ReadGraph g) throws DatabaseException { + long id = ms.getHeadRevisionId(); + assertTrue(newId == id); + Collection comments = ms.getMetadata(newId-1, newId, CommentMetadata.class); + assertTrue(comments.size() == 2); + CommentMetadata cm = comments.iterator().next(); + String s = cm.toString(); + // The line feed is added by the add operation. + assertTrue(s.matches("NOP1\n")); + // gitexitOld interface. + Collection comments2 = ms.getMetadata(newId-1, newId, CommentMetadata.class); + assertTrue(comments.size() == 2); + CommentMetadata cm2 = comments2.iterator().next(); + String s2 = cm2.toString(); + // The line feed is added by the add operation. + assertTrue(s2.matches("NOP1\n")); + } + }); + getSession().syncRequest(new ReadRequest() { + @Override + public void run(ReadGraph g) throws DatabaseException { + long id = ms.getHeadRevisionId(); + assertTrue(newId == id); + Collection comments = ms.getMetadata(1, newId, CommentMetadata.class); + assertTrue(comments.size() > 2); + } + }); + } +}