package com.alejandrogr.gists.ofylistref; import junit.framework.TestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.appengine.tools.development.testing.LocalBlobstoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import com.googlecode.objectify.Key; import com.googlecode.objectify.ObjectifyService; import static com.googlecode.objectify.ObjectifyService.ofy; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; public class OfyListRefTest extends TestCase{ private final LocalServiceTestHelper helper = new LocalServiceTestHelper( new LocalDatastoreServiceTestConfig().setDefaultHighRepJobPolicyUnappliedJobPercentage(1), new LocalBlobstoreServiceTestConfig()); @Override @Before public void setUp() { this.helper.setUp(); ObjectifyService.register(Person.class); ObjectifyService.register(Car.class); } @Override @After public void tearDown() { this.helper.tearDown(); } @Test public void testCreateCar(){ Person driver = new Person(); driver.setEmail("driver@email.com"); driver.setName("Driver"); Key driverKey = ofy().save().entity(driver).now(); assertNotNull(driverKey); Car car = new Car(); car.setDriver(driver); Key carKey = ofy().save().entity(car).now(); assertNotNull(carKey); } @Test public void testCreateCarWithPassengers(){ Person driver = new Person(); driver.setEmail("driver@email.com"); driver.setName("Driver"); Key driverKey = ofy().save().entity(driver).now(); Person passenger = new Person(); passenger.setEmail("passenger@email.com"); passenger.setName("Passenger"); ofy().save().entity(passenger).now(); Person passenger2 = new Person(); passenger2.setEmail("passenger2@email.com"); passenger2.setName("Passenger 2"); ofy().save().entity(passenger2).now(); Person passenger3 = new Person(); passenger3.setEmail("passenger3@email.com"); passenger3.setName("Passenger 3"); ofy().save().entity(passenger3).now(); Car car = new Car(); car.setDriver(driver); car.addPassenger(passenger); car.addPassenger(passenger2); car.addPassenger(passenger3); Key carKey = ofy().save().entity(car).now(); //clear ofy cache to ensure new objetc from DS ofy().clear(); //check load without group Car carSaved = ofy().load().key( carKey ).now(); assertNotNull(carSaved); assertEquals("The car dosen't have 3 passengers", 3, carSaved.getPassengersRefs().size()); assertEquals("The passengers are loaded", 0, carSaved.getPassengers().size()); //clear ofy cache to ensure new objetc from DS ofy().clear(); //check load with group carSaved = ofy().load().group(Person.Passenger.class).key( carKey ).now(); assertNotNull(carSaved); assertEquals("There are no passengers loaded", 3, carSaved.getPassengers().size()); assertNotNull("Passenger email is empty", carSaved.getPassengers().get(1).getEmail()); } }