package org.emfjson.couchdb.tests; import com.fasterxml.jackson.databind.JsonNode; import org.eclipse.emf.ecore.resource.Resource; import org.emfjson.couchdb.client.CouchClient; import org.emfjson.couchdb.client.DB; import org.emfjson.model.ModelFactory; import org.emfjson.model.TestA; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class StoreDocumentTest extends CouchTestSupport { private CouchClient client = new CouchClient(); @Before @Override public void setUp() throws IOException { super.setUp(); } @After public void tearDown() throws IOException { client.db("models").delete(); } @Test public void testStoreDocumentWithOneObject() throws IOException { // create and save resource Resource resource = resourceSet.createResource(baseURI.appendSegment("test1")); TestA node = ModelFactory.eINSTANCE.createTestA(); node.setStringValue("test1"); node.setBooleanValue(true); resource.getContents().add(node); resource.save(null); // check added document DB db = client.db("models"); JsonNode result = db.doc("test1").content(); assertTrue(result.has("_id")); assertTrue(result.has("contents")); JsonNode contents = result.get("contents"); assertTrue(contents.has("eClass")); assertEquals("http://emfjson.org/model#//TestA", contents.get("eClass").asText()); assertTrue(contents.has("stringValue")); assertEquals("test1", contents.get("stringValue").asText()); assertTrue(contents.has("booleanValue")); assertEquals(true, contents.get("booleanValue").asBoolean()); // revision is added to resource URI assertTrue(resource.getURI().hasQuery()); } @Test public void testStoreDocumentWithTwoRootObjects() throws IOException { Resource resource = resourceSet.createResource(baseURI.appendSegment("test1")); TestA a1 = ModelFactory.eINSTANCE.createTestA(); a1.setStringValue("a1"); TestA a2 = ModelFactory.eINSTANCE.createTestA(); a2.setStringValue("a2"); resource.getContents().add(a1); resource.getContents().add(a2); resource.save(null); } @Test public void testStoreDocumentWithOneObjectAndUpdate() throws IOException { Resource resource = resourceSet.createResource(baseURI.appendSegment("test1")); TestA a1 = ModelFactory.eINSTANCE.createTestA(); a1.setStringValue("a1"); resource.getContents().add(a1); resource.save(null); a1.setStringValue("a2"); resource.save(null); } }