package com.orientechnologies.orient.object.db;
import com.orientechnologies.orient.core.db.OPartitionedDatabasePool;
import com.orientechnologies.orient.core.entity.OEntityManager;
import com.orientechnologies.orient.object.db.entity.Car;
import com.orientechnologies.orient.object.db.entity.Person;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* Created by tglman on 16/12/15.
*/
public class OPersistentEmbeddedMapTest {
private OPartitionedDatabasePool pool;
@BeforeMethod
public void setup() {
final String url = "memory:tmpdb";
new OObjectDatabaseTx(url).create().close();
pool = new OPartitionedDatabasePool(url, "admin", "admin");
OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire());
try {
db.setAutomaticSchemaGeneration(true);
OEntityManager entityManager = db.getEntityManager();
entityManager.registerEntityClass(Car.class);
entityManager.registerEntityClass(Person.class);
db.getMetadata().getSchema().synchronizeSchema();
} finally {
db.close();
}
}
@AfterMethod
public void destroy() {
pool.close();
}
@Test
public void embeddedMapShouldContainCorrectValues() {
Person person = createTestPerson();
Person retrievedPerson;
OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire());
try {
db.save(person);
retrievedPerson = db.browseClass(Person.class).next();
retrievedPerson = db.detachAll(retrievedPerson, true);
} finally {
db.close();
}
Assert.assertEquals(person, retrievedPerson);
}
private Person createTestPerson() {
Map<String, Car> placeToCar = new HashMap<String, Car>();
placeToCar.put("USA", new Car("Cadillac Escalade", 1990));
placeToCar.put("Japan", new Car("Nissan Skyline", 2001));
placeToCar.put("UK", new Car("Jaguar XR", 2007));
return new Person("John", placeToCar);
}
}