package org.arangodb.objectmapper.test;
import org.arangodb.objectmapper.ArangoDb4JException;
import org.arangodb.objectmapper.Database;
import org.arangodb.objectmapper.Version;
public class DatabaseCRUDTest extends BaseTestCase {
Database database;
protected void setUp() {
super.setUp();
database = new Database(client, "_system");
try {
database.deleteCollection(Point.class);
}
catch (Exception e) {
}
// re-create collection
try {
database.createCollection(Point.class);
}
catch (Exception e) {
// ignore any errors
}
}
protected void tearDown() {
try {
database.deleteCollection(Point.class);
}
catch (Exception e) {
}
super.tearDown();
}
private Point createPoint(Integer x, Integer y) {
Point p = new Point(x, y);
try {
database.createDocument(p);
assertNotNull(p.getId());
assertNotNull(p.getKey());
assertNotNull(p.getRevision());
assertEquals(x, p.getX());
assertEquals(y, p.getY());
} catch (ArangoDb4JException e) {
e.printStackTrace();
assertTrue(false);
}
return p;
}
public void test_getDatabaseVersion () {
Version version = null;
try {
version = database.getVersion();
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
assertNotNull(version);
assertEquals("arango", version.getServer());
}
public void test_createDocument () {
createPoint(5, 10);
}
public void test_createDocument2times () {
Point p = createPoint(6, 11);
try {
// error
database.createDocument(p);
assertTrue(false);
} catch (ArangoDb4JException e) {
}
}
public void test_readDocument () {
// create
Point p = createPoint(7, 12);
String key = p.getKey();
// read
Point p2 = null;
try {
p2 = database.readDocument(Point.class, key);
} catch (Exception e) {
e.printStackTrace();
}
assertNotNull(p2);
assertEquals(p.getKey(), p2.getKey());
assertEquals(p.getId(), p2.getId());
assertEquals(p.getRevision(), p2.getRevision());
assertEquals(p.getX(), p2.getX());
assertEquals(p.getY(), p2.getY());
}
public void test_updateDocument () {
// create
Point p = createPoint(8, 14);
String key = p.getKey();
// read
Point p2 = null;
try {
p2 = database.readDocument(Point.class, key);
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
assertNotNull(p2);
// update
p.setX(9);
try {
database.updateDocument(p);
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
assertEquals(p.getKey(), p2.getKey());
assertEquals(p.getId(), p2.getId());
assertFalse(p.getRevision().equals(p2.getRevision()));
assertEquals(p.getX(), new Integer(9));
assertEquals(p.getY(), new Integer(14));
}
public void test_updateDocument2 () {
// create
Point p = createPoint(8, 14);
String key = p.getKey();
final String rev = p.getRevision();
// read
Point p2 = null;
try {
p2 = database.readDocument(Point.class, key);
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
assertNotNull(p2);
// update
p.setX(9);
try {
database.updateDocument(p);
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
// read again from database
p2 = null;
try {
p2 = database.readDocument(Point.class, key);
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
assertNotNull(p2);
assertEquals(p.getKey(), p2.getKey());
assertEquals(p.getId(), p2.getId());
assertFalse(rev.equals(p2.getRevision()));
assertEquals(p.getX(), new Integer(9));
assertEquals(p.getY(), new Integer(14));
}
public void test_replaceDocument () {
// create
Point p = createPoint(8, 14);
String key = p.getKey();
// read
Point p2 = null;
try {
p2 = database.readDocument(Point.class, key);
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
assertNotNull(p2);
// update
p.setX(9);
try {
database.replaceDocument(p);
} catch (ArangoDb4JException e) {
e.printStackTrace();
}
assertEquals(p.getKey(), p2.getKey());
assertEquals(p.getId(), p2.getId());
assertFalse(p.getRevision().equals(p2.getRevision()));
assertEquals(p.getX(), new Integer(9));
assertEquals(p.getY(), p2.getY());
}
public void test_deleteDocument () {
// create
Point p = createPoint(8, 14);
String key = p.getKey();
// delete
try {
database.deleteDocument(p);
} catch (ArangoDb4JException e) {
e.printStackTrace();
assertTrue(false);
}
// read
Point p2 = null;
try {
// error
p2 = database.readDocument(Point.class, key);
} catch (ArangoDb4JException e) {
}
assertNull(p2);
}
public void test_deleteDocument2times () {
// create
Point p = createPoint(8, 14);
// delete
try {
database.deleteDocument(p);
} catch (ArangoDb4JException e) {
e.printStackTrace();
assertTrue(false);
}
// delete
try {
// error
database.deleteDocument(p);
assertTrue(false);
} catch (ArangoDb4JException e) {
}
}
}