package crmdna.participant;
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.group.Group.GroupProp;
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.user.User.GroupLevelPrivilege;
import crmdna.venue.Venue;
import crmdna.venue.Venue.VenueProp;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.HashSet;
import java.util.Set;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class ParticipantTest {
private final LocalServiceTestHelper datastoreHelper = new LocalServiceTestHelper(
new LocalDatastoreServiceTestConfig().setApplyAllHighRepJobPolicy());
private final String client = "isha";
private final String invalidClient = "invalid";
private final String validUser = "valid@login.com";
private final String sgpUser = "sgpuser@login.com";
private final String klUser = "kluser@login.com";
GroupProp sgp;
GroupProp kl;
PracticeProp suryaNamaskar;
PracticeProp yogaAsanas;
PracticeProp shambhavi;
PracticeProp aumChanting;
PracticeProp ishaKriya;
ProgramTypeProp innerEngineering7Day;
ProgramTypeProp suryaNamaskarAndAsanas;
ProgramTypeProp ishaKriyaTeacherLed;
VenueProp giis;
VenueProp chaichee;
VenueProp gujarathiBhavan;
VenueProp yuhuaCC;
VenueProp woodlandsCC;
TeacherProp tina;
TeacherProp thulasi;
TeacherProp muthu;
ProgramProp ishaKriya18Aug2013;
ProgramProp ishaKriya25Aug2013;
@Before
public void setUp() {
datastoreHelper.setUp();
ObjectifyFilter.complete();
Client.create(client);
sgp = crmdna.group.Group.create(client, "Singapore", User.SUPER_USER);
assertEquals(1, sgp.groupId);
kl = crmdna.group.Group.create(client, "KL", User.SUPER_USER);
assertEquals(2, kl.groupId);
User.create(client, validUser, sgp.groupId, User.SUPER_USER);
assertEquals(1, User.get(client, validUser).toProp(client).userId);
User.create(client, sgpUser, sgp.groupId, User.SUPER_USER);
assertEquals(2, User.get(client, sgpUser).toProp(client).userId);
User.addGroupLevelPrivilege(client, sgp.groupId, sgpUser,
GroupLevelPrivilege.UPDATE_PROGRAM, User.SUPER_USER);
User.create(client, klUser, kl.groupId, User.SUPER_USER);
assertEquals(3, User.get(client, klUser).toProp(client).userId);
User.addGroupLevelPrivilege(client, kl.groupId, klUser,
GroupLevelPrivilege.UPDATE_PROGRAM, User.SUPER_USER);
suryaNamaskar = Practice.create(client, "Surya Namaskar",
User.SUPER_USER);
yogaAsanas = Practice.create(client, "Yoga Asanas", User.SUPER_USER);
shambhavi = Practice.create(client, "Shambhavi", User.SUPER_USER);
ishaKriya = Practice.create(client, "Isha Kriya", User.SUPER_USER);
aumChanting = Practice.create(client, "Aum Chanting", User.SUPER_USER);
Set<Long> practiceIds = new HashSet<Long>();
practiceIds.add(shambhavi.practiceId);
practiceIds.add(aumChanting.practiceId);
innerEngineering7Day = ProgramType.create(client,
"Inner Engineering 7 day", practiceIds, User.SUPER_USER);
practiceIds.clear();
practiceIds.add(suryaNamaskar.practiceId);
practiceIds.add(yogaAsanas.practiceId);
suryaNamaskarAndAsanas = ProgramType.create(client,
"Hata Yoga (Surya Namaskar & Asanas)", practiceIds,
User.SUPER_USER);
practiceIds.clear();
practiceIds.add(ishaKriya.practiceId);
ishaKriyaTeacherLed = ProgramType.create(client, "Isha Kriya",
practiceIds, User.SUPER_USER);
giis = Venue.create(client, "GIIS", "GIIS", sgp.groupId,
User.SUPER_USER);
chaichee = Venue.create(client, "Chai Chee", "Chai Chee", sgp.groupId,
User.SUPER_USER);
gujarathiBhavan = Venue.create(client, "Gujarathi Bhavan",
"Gujarathi Bhavan", sgp.groupId, User.SUPER_USER);
yuhuaCC = Venue.create(client, "Yuhua CC", "Yuhua CC", sgp.groupId,
User.SUPER_USER);
woodlandsCC = Venue.create(client, "Woodlands CC", "Woodlands CC",
sgp.groupId, User.SUPER_USER);
tina = Teacher.create(client, "", "", "tina@ishafoundation.org", sgp.groupId,
User.SUPER_USER);
thulasi = Teacher.create(client, "", "", "thulasidhar@gmail.com", sgp.groupId,
User.SUPER_USER);
muthu = Teacher.create(client, "", "", "muthu_sys@yahoo.com", sgp.groupId,
User.SUPER_USER);
ishaKriya18Aug2013 = Program.create(client, sgp.groupId,
ishaKriyaTeacherLed.programTypeId, woodlandsCC.venueId,
muthu.teacherId, 20130818, 20130818, 1, null, 0, null,
User.SUPER_USER);
ishaKriya25Aug2013 = Program.create(client, sgp.groupId,
ishaKriyaTeacherLed.programTypeId, woodlandsCC.venueId,
muthu.teacherId, 20130825, 20130825, 1, null, 0, null,
User.SUPER_USER);
}
@After
public void tearDown() {
ObjectifyFilter.complete();
datastoreHelper.tearDown();
}
// @Test
// public void uploadAllTest() {
// ContactProp c1 = new ContactProp();
// c1.email = "oasisram@gmail.com";
// c1.firstName = "Ramakrishnan";
//
// List<ContactProp> contactDetailProps = new ArrayList<>();
// contactDetailProps.add(c1);
//
// UploadReportProp uploadReportProp = Participant.uploadAll(client,
// contactDetailProps, ishaKriya18Aug2013.programId, false,
// User.SUPER_USER);
//
// assertEquals(1, uploadReportProp.numParticipants);
// assertEquals(1, uploadReportProp.newMemberEmails);
// assertEquals(0, uploadReportProp.existingMemberEmails);
//
// List<ParticipantProp> participantProps = Participant.getAll(client,
// ishaKriya18Aug2013.programId, User.SUPER_USER);
//
// assertEquals(1, participantProps.size());
// ParticipantProp participantProp = participantProps.get(0);
//
// assertEquals(1, participantProp.participantId); // first participant
// // should have id 1
//
// assertEquals("Ramakrishnan", participantProp.contactDetail.firstName);
// assertEquals(null, participantProp.contactDetail.lastName);
// assertEquals(null, participantProp.contactDetail.mobilePhone);
// assertEquals(1, participantProp.memberId); // first member
// assertEquals(ishaKriya18Aug2013.programId, participantProp.programId);
//
// // should be able to get the associated member
// MemberProp memberProp = Member.safeGet(client,
// participantProp.memberId, User.SUPER_USER).toProp();
// assertEquals(participantProp.memberId, memberProp.memberId);
// assertEquals(participantProp.contactDetail.firstName,
// memberProp.contact.firstName);
// assertEquals(null, memberProp.contact.lastName);
// assertEquals("oasisram@gmail.com", memberProp.contact.email);
// assertTrue(memberProp.programIds.contains(ishaKriya18Aug2013.programId));
// assertTrue(memberProp.programTypeIds
// .contains(ishaKriyaTeacherLed.programTypeId));
// assertTrue(memberProp.practiceIds.contains(ishaKriya.practiceId));
//
// // add the same person as participant for another program. This time he
// specifies
// //his contact number and house address
// c1.mobilePhone = "+6591846937";
// c1.homeAddress.address = "Block 292B, #09-210, Compassvale Street";
// c1.homeAddress.country = "Singapore";
// uploadReportProp = Participant.uploadAll(client, contactDetailProps,
// ishaKriya25Aug2013.programId, false, User.SUPER_USER);
// assertEquals(1, uploadReportProp.numParticipants);
// assertEquals(1, uploadReportProp.existingMemberEmails);
// assertEquals(0, uploadReportProp.newMemberEmails);
//
// // should be tagged to the same member
// participantProps = Participant.getAll(client,
// ishaKriya25Aug2013.programId, User.SUPER_USER);
//
// assertEquals(1, participantProps.size());
// participantProp = participantProps.get(0);
//
// assertEquals(2, participantProp.participantId); // id should be sequence
// assertEquals("Ramakrishnan", participantProp.contactDetail.firstName);
// assertEquals(null, participantProp.contactDetail.lastName);
// assertEquals(null, participantProp.contactDetail.mobilePhone);
// assertEquals(1, participantProp.memberId); // same member
// assertEquals(ishaKriya25Aug2013.programId, participantProp.programId);
//
// // delete all participants, update participants list and upload again
//
// Participant.deleteAll(client, ishaKriya25Aug2013.programId,
// User.SUPER_USER);
//
// // add somebody else who has given the same email
// c1 = new ContactProp();
// c1.email = "oasisram@gmail.com";
// c1.firstName = "Hemamalini";
// c1.lastName = "Krishnamurthy";
// c1.mobilePhone = "+6593232152";
// c1.homePhone = "+6565072230";
// contactDetailProps.add(c1);
// uploadReportProp = Participant.uploadAll(client, contactDetailProps,
// ishaKriya25Aug2013.programId, false, User.SUPER_USER);
//
// assertEquals(2, uploadReportProp.numParticipants);
// assertEquals(1, uploadReportProp.existingMemberEmails);
// assertEquals(1, uploadReportProp.newMemberEmails);
//
// participantProps = Participant.getAll(client,
// ishaKriya18Aug2013.programId, User.SUPER_USER);
//
// assertEquals(3, participantProp.participantId); // id should be sequence
// assertEquals("Hemamalini", participantProp.contactDetail.firstName);
// assertEquals("Krishnamurthy", participantProp.contactDetail.lastName);
// assertEquals(null, participantProp.contactDetail.mobilePhone);
// // should be tagged to a different member
// assertEquals(2, participantProp.memberId); // same member
//
// memberProp = Member.safeGet(client, participantProp.memberId,
// User.SUPER_USER).toProp();
// assertEquals(participantProp.memberId, memberProp.memberId);
// assertEquals(participantProp.contactDetail.firstName,
// memberProp.contact.firstName);
// assertEquals("oasisram@gmail.com", memberProp.contact.email);
// assertTrue(memberProp.programIds.contains(ishaKriya18Aug2013.programId));
// assertTrue(memberProp.programTypeIds
// .contains(ishaKriyaTeacherLed.programTypeId));
// assertTrue(memberProp.practiceIds.contains(ishaKriya.practiceId));
//
// // // add same person with a typo in the name
// // c1 = new ContactDetailProp();
// // c1.email = "oasisram@gmail.com";
// // c1.firstName = "Ramkrishnan";
// // // should get linked to the same member
// // participantProp = Participant.createWithoutDuplicateCheck(client, c1,
// // ishaKriya25Aug2013.programId, User.SUPER_USER);
// // memberProp = Member.safeGet(client, participantProp.memberId,
// // User.SUPER_USER).toProp();
// // assertEquals(participantProp.memberId, memberProp.memberId);
// // assertEquals(participantProp.contactDetail.firstName,
// // memberProp.contact.firstName);
// // assertEquals("oasisram@gmail.com", memberProp.contact.email);
// //
// assertTrue(memberProp.programIds.contains(ishaKriya18Aug2013.programId));
// // assertTrue(memberProp.programTypeIds
// // .contains(ishaKriyaTeacherLed.programTypeId));
// // assertTrue(memberProp.practiceIds.contains(ishaKriya.practiceId));
//
// assertTrue(false);
// }
@Test
public void getTest() {
assertEquals("force failure", true, false);
}
@Test
public void safeGetTest() {
assertTrue(false);
}
@Test
public void updateTest() {
assertTrue(false);
}
@Test
public void getQSMatchesTest() {
assertTrue(false);
}
@Test
public void bulkUploadTest() {
assertTrue(false);
}
@Test
public void deleteTest() {
assertTrue(false);
}
}