package crmdna.member; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import com.googlecode.objectify.ObjectifyFilter; import crmdna.client.Client; import crmdna.common.Utils; import crmdna.common.contact.ContactProp; import crmdna.group.Group; import crmdna.group.Group.GroupProp; import crmdna.list.List; import crmdna.list.ListProp; import crmdna.practice.Practice; import crmdna.practice.Practice.PracticeProp; import crmdna.program.Program; import crmdna.program.ProgramProp; import crmdna.programtype.ProgramType; import crmdna.programtype.ProgramTypeProp; import crmdna.teacher.Teacher; import crmdna.teacher.Teacher.TeacherProp; import crmdna.user.User; import crmdna.venue.Venue; import crmdna.venue.Venue.VenueProp; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class PopulateDependantFieldsTest { private final LocalServiceTestHelper datastoreHelper = new LocalServiceTestHelper( new LocalDatastoreServiceTestConfig().setApplyAllHighRepJobPolicy()); private final String client = "isha"; MemberProp sathya, syamala, sowmya; PracticeProp shambhavi, suryaNamaskar, yogaAsanas, angamardhana, ishaKriya; ProgramTypeProp innerEngineering7Day, hataYoga3Day, angamardhana2Day, ishaKriya1Hour; ProgramProp innerEngineering7DayNov2005, hataYoga3DayAug2012, angamardhana2DayAug2014, ishaKriya1HourAug2012; private GroupProp sgp; @Before public void setUp() { datastoreHelper.setUp(); ObjectifyFilter.complete(); Client.create(client); sgp = Group.create(client, "Singapore", User.SUPER_USER); assertEquals(1, sgp.groupId); shambhavi = Practice.create(client, "Shambhavi", User.SUPER_USER); suryaNamaskar = Practice.create(client, "Surya Namaskar", User.SUPER_USER); yogaAsanas = Practice.create(client, "Yoga Asanas", User.SUPER_USER); angamardhana = Practice.create(client, "Angamardhana", User.SUPER_USER); ishaKriya = Practice.create(client, "Isha Kriya", User.SUPER_USER); innerEngineering7Day = ProgramType.create(client, "IE 7 day", Utils.getSet(shambhavi.practiceId), User.SUPER_USER); hataYoga3Day = ProgramType.create(client, "Hata Yoga 3 day", Utils.getSet(suryaNamaskar.practiceId, yogaAsanas.practiceId), User.SUPER_USER); ishaKriya1Hour = ProgramType.create(client, "Isha Kriya 1 hour", Utils.getSet(ishaKriya.practiceId), User.SUPER_USER); angamardhana2Day = ProgramType.create(client, "Angamardhana 2 day", Utils.getSet(angamardhana.practiceId), User.SUPER_USER); VenueProp dummyVenue = Venue.create(client, "Dummy", "Dummy", sgp.groupId, User.SUPER_USER); TeacherProp dummTeacher = Teacher.create(client, "", "", "dummy@dummy.com", sgp.groupId, User.SUPER_USER); innerEngineering7DayNov2005 = Program.create(client, sgp.groupId, innerEngineering7Day.programTypeId, dummyVenue.venueId, dummTeacher.teacherId, 20051104, 20051110, 1, null, 0.0, null, User.SUPER_USER); hataYoga3DayAug2012 = Program.create(client, sgp.groupId, hataYoga3Day.programTypeId, dummyVenue.venueId, dummTeacher.teacherId, 20120801, 20120803, 1, null, 0.0, null, User.SUPER_USER); angamardhana2DayAug2014 = Program.create(client, sgp.groupId, angamardhana2Day.programTypeId, dummyVenue.venueId, dummTeacher.teacherId, 20140801, 20140802, 1, null, 0.0, null, User.SUPER_USER); ishaKriya1HourAug2012 = Program.create(client, sgp.groupId, ishaKriya1Hour.programTypeId, dummyVenue.venueId, dummTeacher.teacherId, 20120801, 20120801, 1, null, 0.0, null, User.SUPER_USER); ContactProp c = new ContactProp(); c.email = "sathya@sathya.com"; c.asOfyyyymmdd = 20141022; sathya = Member.create(client, sgp.groupId, c, false, User.SUPER_USER); c.email = "syamala@syamala.com"; syamala = Member.create(client, sgp.groupId, c, false, User.SUPER_USER); c.email = "sowmya@sowmya.com"; sowmya = Member.create(client, sgp.groupId, c, false, User.SUPER_USER); } @After public void tearDown() { ObjectifyFilter.complete(); datastoreHelper.tearDown(); } @Test public void programTypeAndPracticesPopulatedBasedOnPrograms() { MemberEntity sathyaEntity = MemberLoader.safeGet(client, sathya.memberId, User.SUPER_USER); MemberEntity sowmyaEntity = MemberLoader.safeGet(client, sowmya.memberId, User.SUPER_USER); MemberEntity syamalaEntity = MemberLoader.safeGet(client, syamala.memberId, User.SUPER_USER); sathyaEntity.programIds.add(innerEngineering7DayNov2005.programId); sowmyaEntity.programIds.add(angamardhana2DayAug2014.programId); sowmyaEntity.programIds.add(hataYoga3DayAug2012.programId); syamalaEntity.programIds.add(ishaKriya1HourAug2012.programId); Member.populateDependantFields(client, Utils.getList(sathyaEntity, sowmyaEntity, syamalaEntity)); assertTrue(sathyaEntity.practiceIds.contains(shambhavi.practiceId)); assertTrue(sathyaEntity.programTypeIds .contains(innerEngineering7Day.programTypeId)); assertTrue(sowmyaEntity.practiceIds.contains(suryaNamaskar.practiceId)); assertTrue(sowmyaEntity.practiceIds.contains(yogaAsanas.practiceId)); assertTrue(sowmyaEntity.practiceIds.contains(angamardhana.practiceId)); assertTrue(sowmyaEntity.programTypeIds .contains(hataYoga3Day.programTypeId)); assertTrue(sowmyaEntity.programTypeIds .contains(angamardhana2Day.programTypeId)); assertTrue(syamalaEntity.practiceIds.contains(ishaKriya.practiceId)); } @Test public void practicesPopulatedBasedOnList() { ListProp shambhaviList = List.createRestricted(client, sgp.groupId, "Shambhavi email list", Utils.getSet(shambhavi.practiceId), User.SUPER_USER); MemberEntity sathyaEntity = MemberLoader.safeGet(client, sathya.memberId, User.SUPER_USER); MemberEntity sowmyaEntity = MemberLoader.safeGet(client, sowmya.memberId, User.SUPER_USER); sathyaEntity.listIds.add(shambhaviList.listId); sowmyaEntity.listIds.add(shambhaviList.listId); Member.populateDependantFields(client, Utils.getList(sathyaEntity, sowmyaEntity)); assertTrue(sathyaEntity.practiceIds.contains(shambhavi.practiceId)); assertTrue(sowmyaEntity.practiceIds.contains(shambhavi.practiceId)); } @Test public void practicesPopulatedBasedOnListAndPrograms() { ListProp shambhaviList = List.createRestricted(client, sgp.groupId, "Shambhavi email list", Utils.getSet(shambhavi.practiceId), User.SUPER_USER); MemberEntity sathyaEntity = MemberLoader.safeGet(client, sathya.memberId, User.SUPER_USER); MemberEntity sowmyaEntity = MemberLoader.safeGet(client, sowmya.memberId, User.SUPER_USER); sathyaEntity.listIds.add(shambhaviList.listId); sathyaEntity.programIds.add(ishaKriya1HourAug2012.programId); sowmyaEntity.listIds.add(shambhaviList.listId); Member.populateDependantFields(client, Utils.getList(sathyaEntity, sowmyaEntity)); assertTrue(sathyaEntity.practiceIds.contains(shambhavi.practiceId)); assertTrue(sathyaEntity.practiceIds.contains(ishaKriya.practiceId)); assertTrue(sowmyaEntity.practiceIds.contains(shambhavi.practiceId)); } }