package org.emfjson.couchdb.tests;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.emfjson.couchdb.client.CouchClient;
import org.emfjson.model.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import static org.junit.Assert.*;
public class LoadDocumentTest extends CouchTestSupport {
private CouchClient client;
private EObject createModel() {
TestA root = ModelFactory.eINSTANCE.createTestA();
root.setStringValue("Root");
root.setBooleanValue(true);
root.setKind(TestKind.THREE);
TestB b1 = ModelFactory.eINSTANCE.createTestB();
b1.setStringValue("B1");
TestB b2 = ModelFactory.eINSTANCE.createTestB();
b2.setStringValue("B2");
b1.setOneB(b2);
root.getContainBs().add(b1);
root.getContainBs().add(b2);
return root;
}
@Before
@Override
public void setUp() throws IOException {
super.setUp();
client = new CouchClient();
Resource res = resourceSet.createResource(baseURI.appendSegment("nodes"));
res.getContents().add(createModel());
res.save(null);
res.unload();
}
@After
public void tearDown() throws IOException {
client.db("models").delete();
}
@Test
public void testLoadDocumentByID() throws IOException {
Resource resource = resourceSet.createResource(baseURI.appendSegment("nodes"));
assertNotNull(resource);
resource.load(null);
assertEquals(1, resource.getContents().size());
assertEquals(ModelPackage.Literals.TEST_A, resource.getContents().get(0).eClass());
TestA n = (TestA) resource.getContents().get(0);
assertEquals("Root", n.getStringValue());
assertEquals(true, n.getBooleanValue());
assertEquals(2, n.getContainBs().size());
TestB b1 = n.getContainBs().get(0);
TestB b2 = n.getContainBs().get(1);
assertSame(b2, b1.getOneB());
}
}