package org.karmaexchange.dao; import static java.util.Arrays.asList; import static org.karmaexchange.util.JsonValidationTestUtil.validateJsonConversion; import static org.karmaexchange.util.TestUtil.DEBUG; import java.util.EnumSet; import java.util.List; import org.junit.Before; import org.junit.Test; import org.karmaexchange.dao.Event.CompletionTaskTracker; import org.karmaexchange.dao.Event.CompletionTaskTracker.CompletionTaskWrapper; import org.karmaexchange.dao.Event.CompletionTaskTracker.OrganizationCompletionTask; import org.karmaexchange.dao.Event.CompletionTaskTracker.ParticipantCompletionTask; import org.karmaexchange.util.DatastoreTestUtil; import com.google.common.collect.Lists; import com.googlecode.objectify.Key; public class EventTest extends PersistenceTestHelper { private Event event; @Override @Before public void setUp() throws Exception { super.setUp(); event = new Event(); event.setId(Long.valueOf(25)); event.setTitle("title"); event.setCauses(asList(CauseType.HOMELESSNESS)); Location location = new Location(); event.setLocation(location); event.setRegistrationInfo(Event.RegistrationInfo.CAN_REGISTER); event.setMaxRegistrations(20); event.setKarmaPoints(100); event.setSuitableForTypes(Lists.newArrayList(EnumSet.allOf(SuitableForType.class))); // Validate that we don't hit the objectify bug of embedded lists. CompletionTaskTracker completionTasks = new CompletionTaskTracker(); User fakeUser = new User(); fakeUser.setId(Long.valueOf(100)); Key<User> fakeUserKey = Key.create(fakeUser); Organization fakeOrg = new Organization(); fakeOrg.setName("fakeOrg"); Key<Organization> fakeOrgKey = Key.create(fakeOrg); List<CompletionTaskWrapper> tasksPending = Lists.newArrayList(); ParticipantCompletionTask participantTask1 = new ParticipantCompletionTask(fakeUserKey); OrganizationCompletionTask orgCompletionTask1 = new OrganizationCompletionTask(fakeOrgKey); ParticipantCompletionTask participantTask2 = new ParticipantCompletionTask(fakeUserKey); tasksPending.add(new CompletionTaskWrapper(participantTask1)); tasksPending.add(new CompletionTaskWrapper(orgCompletionTask1)); tasksPending.add(new CompletionTaskWrapper(participantTask2)); completionTasks.setTasksPending(tasksPending); event.setCompletionTasks(completionTasks); } @Test public void testJsonConversion() throws Exception { validateJsonConversion(event, Event.class); } @Test public void testPersistence() throws Exception { validatePersistence(event); if (DEBUG) { DatastoreTestUtil.dumpEntity(event); } } }