package crmdna.client.isha;
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.contact.ContactProp;
import crmdna.group.Group;
import crmdna.group.Group.GroupProp;
import crmdna.member.Member;
import crmdna.member.MemberProp;
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.ClientLevelPrivilege;
import crmdna.venue.Venue;
import crmdna.venue.Venue.VenueProp;
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 IshaUtilsTest {
private final LocalServiceTestHelper datastoreHelper = new LocalServiceTestHelper(
new LocalDatastoreServiceTestConfig().setApplyAllHighRepJobPolicy());
PracticeProp shambhavi;
PracticeProp mysticEye;
PracticeProp ishaKriya;
MemberProp madhu, naveen, sanket, thulasi;
ProgramProp sathsang201405;
String sgpUser = "sgpuser@gmail.com";
@Before
public void setUp() {
datastoreHelper.setUp();
ObjectifyFilter.complete();
Client.create("isha");
shambhavi = Practice.create("isha", "Shambhavi", User.SUPER_USER);
mysticEye = Practice.create("isha", "MysticEye", User.SUPER_USER);
ishaKriya = Practice.create("isha", "IshaKriya", User.SUPER_USER);
Set<Long> sathsangPracticeIds = new HashSet<>();
sathsangPracticeIds.add(shambhavi.practiceId);
sathsangPracticeIds.add(mysticEye.practiceId);
IshaConfig.setSathsangPractices(sathsangPracticeIds, User.SUPER_USER);
sathsangPracticeIds = IshaConfig.safeGet().sathsangPracticeIds;
assertEquals(2, sathsangPracticeIds.size());
assertTrue(sathsangPracticeIds.contains(shambhavi.practiceId));
assertTrue(sathsangPracticeIds.contains(mysticEye.practiceId));
Set<Long> practiceIds = new HashSet<>();
practiceIds.add(shambhavi.practiceId);
ProgramTypeProp shambhavi2Day = ProgramType.create("isha", "Shambhavi",
practiceIds, User.SUPER_USER);
practiceIds.clear();
practiceIds.add(mysticEye.practiceId);
ProgramTypeProp mysticEye1Day = ProgramType.create("isha", "MysticEye",
practiceIds, User.SUPER_USER);
ProgramTypeProp sathsang = ProgramType.create("isha", "Sathsang", null,
User.SUPER_USER);
GroupProp sgp = Group.create("isha", "Singapore", User.SUPER_USER);
GroupProp chennai = Group.create("isha", "Chennai", User.SUPER_USER);
VenueProp giis = Venue.create("isha", "GIIS", "GIIS", sgp.groupId,
User.SUPER_USER);
VenueProp expo = Venue.create("isha", "Expo", "Expo", sgp.groupId,
User.SUPER_USER);
TeacherProp nidhi = Teacher.create("isha", "", "",
"nidhi.jain@ishafoundation.org", sgp.groupId, User.SUPER_USER);
TeacherProp sadhguru = Teacher.create("isha", "", "",
"sadhguru@ishafoundation.org", sgp.groupId, User.SUPER_USER);
ProgramProp shambhavi201405 = Program.create("isha", sgp.groupId,
shambhavi2Day.programTypeId, giis.venueId, nidhi.teacherId,
20140503, 20140504, 1, null, 0, null, User.SUPER_USER);
ProgramProp mysticEye201401 = Program.create("isha", sgp.groupId,
mysticEye1Day.programTypeId, expo.venueId, sadhguru.teacherId,
20140503, 20140504, 1, null, 0, null, User.SUPER_USER);
sathsang201405 = Program.create("isha", sgp.groupId,
sathsang.programTypeId, giis.venueId, nidhi.teacherId,
20140503, 20140503, 1, null, 0, null, User.SUPER_USER);
// create members
ContactProp c = new ContactProp(); // shambhavi but not mysticeye
c.email = "thulasidhar@gmail.com";
c.mobilePhone = "+6593875170";
c.officePhone = "+6565882010";
c.homePhone = "+6530133982";
c.asOfyyyymmdd = 20141021;
thulasi = Member.create("isha", sgp.groupId, c, false, User.SUPER_USER);
Member.addOrDeleteProgram("isha", thulasi.memberId,
shambhavi201405.programId, true, User.SUPER_USER);
assertEquals(1, thulasi.memberId);
c = new ContactProp();
c.email = "naveen@gmail.com"; // both shambhavi and mystic eye
c.asOfyyyymmdd = 20141021;
naveen = Member.create("isha", sgp.groupId, c, false, User.SUPER_USER);
Member.addOrDeleteProgram("isha", naveen.memberId,
shambhavi201405.programId, true, User.SUPER_USER);
Member.addOrDeleteProgram("isha", naveen.memberId,
mysticEye201401.programId, true, User.SUPER_USER);
assertEquals(2, naveen.memberId);
c = new ContactProp();
c.email = "sanket@sambaash.com"; // only mystic eye
c.asOfyyyymmdd = 20141021;
sanket = Member.create("isha", sgp.groupId, c, false, User.SUPER_USER);
Member.addOrDeleteProgram("isha", sanket.memberId,
mysticEye201401.programId, true, User.SUPER_USER);
assertEquals(3, sanket.memberId);
c = new ContactProp();
c.email = "madhu@chrysler.com"; // non meditator
c.asOfyyyymmdd = 20141021;
madhu = Member.create("isha", chennai.groupId, c, false,
User.SUPER_USER);
assertEquals(4, madhu.memberId);
User.create("isha", sgpUser, sgp.groupId, User.SUPER_USER);
User.addClientLevelPrivilege("isha", sgpUser,
ClientLevelPrivilege.UPDATE_GROUP, User.SUPER_USER);
}
@Test
public void isMeditatorTest() {
Set<Long> practiceIds = new HashSet<>();
practiceIds.add(ishaKriya.practiceId);
// only ishakriya
assertEquals(false, IshaUtils.isMeditator(practiceIds));
// ishakriya and shambhavi
practiceIds.add(shambhavi.practiceId);
assertEquals(true, IshaUtils.isMeditator(practiceIds));
// ishakriya, shambhavi and mysticeye
practiceIds.add(mysticEye.practiceId);
assertEquals(true, IshaUtils.isMeditator(practiceIds));
// only mysticeye
practiceIds.clear();
practiceIds.add(mysticEye.practiceId);
assertEquals(true, IshaUtils.isMeditator(practiceIds));
}
@Test
public void isSathsangTest() {
String programName = "Sathsang 5 Apr 14 @ GIIS, Singapore";
assertEquals(true, IshaUtils.isSathsang(programName));
programName = "sathsang 5 Apr 14 @ GIIS, Singapore";
assertEquals(true, IshaUtils.isSathsang(programName));
programName = "SATHSANG 5 Apr 14 @ GIIS, Singapore";
assertEquals(true, IshaUtils.isSathsang(programName));
programName = "Isha Kriya 5 Apr 14 @ GIIS, Singapore";
assertEquals(false, IshaUtils.isSathsang(programName));
}
}