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.DateUtils;
import crmdna.common.api.APIException;
import crmdna.common.api.APIResponse.Status;
import crmdna.common.contact.Contact.Gender;
import crmdna.common.contact.ContactProp;
import crmdna.group.Group;
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.sequence.Sequence;
import crmdna.sequence.Sequence.SequenceType;
import crmdna.teacher.Teacher;
import crmdna.teacher.Teacher.TeacherProp;
import crmdna.user.User;
import crmdna.user.User.ClientLevelPrivilege;
import crmdna.user.UserCore;
import crmdna.venue.Venue;
import crmdna.venue.Venue.VenueProp;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class MemberTest {
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 validUser2 = "valid2@login.com";
private final String invalidUser = "invalid@login.com";
private final String userWithPermission = "userwithpermission@login.com";
ProgramProp shambhavi201405, mysticEye201401, sathsang201405;
MemberProp thulasi;
String sgpUser = "sgpuser@valid.com";
private GroupProp sgp;
private GroupProp kl;
private GroupProp sydney;
private GroupProp iyc;
private PracticeProp shambhavi, mysticEye, ishaKriya;
private ProgramTypeProp shambhavi2Day, mysticEye1Day;
@Before
public void setUp() {
datastoreHelper.setUp();
ObjectifyFilter.complete();
Client.create(client);
sgp = Group.create(client, "Singapore", User.SUPER_USER);
assertEquals(1, sgp.groupId);
kl = Group.create(client, "Malaysia/KL", User.SUPER_USER);
assertEquals(2, kl.groupId);
sydney = Group.create(client, "Australia/Sydney", User.SUPER_USER);
assertEquals(3, sydney.groupId);
iyc = Group.create(client, "India/Isha Yoga Center", User.SUPER_USER);
assertEquals(4, iyc.groupId);
User.create(client, validUser, sgp.groupId, User.SUPER_USER);
assertEquals(1,
UserCore.safeGet(client, validUser).toProp(client).userId);
User.create(client, validUser2, sgp.groupId, User.SUPER_USER);
assertEquals(2,
UserCore.safeGet(client, validUser2).toProp(client).userId);
User.create(client, userWithPermission, sgp.groupId, User.SUPER_USER);
assertEquals(
3,
UserCore.safeGet(client, userWithPermission).toProp(client).userId);
User.addClientLevelPrivilege(client, userWithPermission,
ClientLevelPrivilege.UPDATE_INTERACTION, User.SUPER_USER);
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);
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 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",
"nidhi.jain@ishafoundation.org", sgp.groupId, User.SUPER_USER);
TeacherProp sadhguru = Teacher.create("isha", "Sadhguru", "",
"sadhguru@ishafoundation.org", sgp.groupId, User.SUPER_USER);
shambhavi201405 = Program.create("isha", sgp.groupId,
shambhavi2Day.programTypeId, giis.venueId, nidhi.teacherId,
20140503, 20140504, 1, null, 0, null, User.SUPER_USER);
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);
User.create("isha", sgpUser, sgp.groupId, User.SUPER_USER);
User.addClientLevelPrivilege("isha", sgpUser,
ClientLevelPrivilege.UPDATE_GROUP, User.SUPER_USER);
}
@After
public void tearDown() {
ObjectifyFilter.complete();
datastoreHelper.tearDown();
}
@Test
public void createTest() {
// client should be valid
try {
Member.create(invalidClient, sgp.groupId, null, false, invalidUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_NOT_FOUND, ex.statusCode);
}
// should not be invalid user
try {
Member.create(client, sgp.groupId, null, false, invalidUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_INVALID_USER, ex.statusCode);
}
// group id should be valid
try {
Member.create(client, 100, null, false, validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_NOT_FOUND, ex.statusCode);
}
// contact details should be valid
ContactProp contact = new ContactProp();
contact.firstName = "sathya"; // no email or phone number
contact.gender = Gender.MALE;
contact.asOfyyyymmdd = DateUtils.toYYYYMMDD(new Date());
try {
Member.create(client, sgp.groupId, contact, false, validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode);
}
contact.email = "sathya.t@ishafoundation.org";
MemberProp prop = Member.create(client, sgp.groupId, contact, false,
validUser);
prop = MemberLoader.safeGet(client, prop.memberId, validUser).toProp();
assertEquals("sathya.t@ishafoundation.org", prop.contact.email);
assertEquals(Gender.MALE, prop.contact.gender);
// cannot add the same email again
try {
Member.create(client, sgp.groupId, contact, false, validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_ALREADY_EXISTS, ex.statusCode);
}
// can add member without email but with valid phone number
contact.email = null;
contact.homePhone = "+6565227030";
contact.gender = null;
prop = Member.create(client, sgp.groupId, contact, false, validUser);
prop = MemberLoader.safeGet(client, prop.memberId, userWithPermission)
.toProp();
assertEquals("+6565227030", prop.contact.homePhone);
assertEquals(null, prop.contact.email);
assertEquals(null, prop.contact.gender);
// can add email again if allowDuplicateEmail is true
contact.email = "sathya.t@ishafoundation.org";
prop = Member.create(client, sgp.groupId, contact, true, validUser);
assertEquals("sathya.t@ishafoundation.org", prop.contact.email);
}
@Test
public void updateContactDetailsTest() {
ContactProp contact = new ContactProp();
contact.firstName = "sathya";
contact.email = "sathya.t@ishafoundation.org";
contact.asOfyyyymmdd = DateUtils.toYYYYMMDD(new Date());
MemberProp prop = Member.create(client, sgp.groupId, contact, false,
validUser);
assertEquals(1, prop.memberId);
// change first name
contact = new ContactProp();
contact.firstName = "Sathyanarayanan";
contact.asOfyyyymmdd = DateUtils.toYYYYMMDD(new Date());
Member.updateContactDetails(client, prop.memberId, contact, validUser);
prop = MemberLoader.safeGet(client, prop.memberId, userWithPermission)
.toProp();
assertEquals("Sathyanarayanan", prop.contact.firstName);
assertEquals(null, prop.contact.gender);
// multiple changes
contact = new ContactProp();
contact.firstName = "Sathya";
contact.lastName = "Thilakan";
contact.mobilePhone = "+6598361844";
contact.homePhone = "+6565227030";
contact.officePhone = "+6563083013";
contact.gender = Gender.MALE;
contact.asOfyyyymmdd = DateUtils.toYYYYMMDD(new Date());
Member.updateContactDetails(client, prop.memberId, contact, validUser);
prop = MemberLoader.safeGet(client, prop.memberId, userWithPermission)
.toProp();
assertEquals("Sathya", prop.contact.firstName);
assertEquals("Thilakan", prop.contact.lastName);
assertEquals("+6598361844", prop.contact.mobilePhone);
assertEquals("+6565227030", prop.contact.homePhone);
assertEquals("+6563083013", prop.contact.officePhone);
assertEquals(Gender.MALE, prop.contact.gender);
// phone no cannot be invalid
contact = new ContactProp();
contact.mobilePhone = "9384938ad";
try {
Member.updateContactDetails(client, prop.memberId, contact,
validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode);
}
// email cannot be invalid
contact = new ContactProp();
contact.email = "sathyafkdjf";
try {
Member.updateContactDetails(client, prop.memberId, contact,
validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode);
}
// email cannot clash with another member
contact = new ContactProp();
contact.firstName = "sathya isha";
contact.email = "sathya.isha@gmail.com";
contact.asOfyyyymmdd = DateUtils.toYYYYMMDD(new Date());
Member.create(client, sgp.groupId, contact, false, validUser);
contact = new ContactProp();
contact.email = "sathya.isha@gmail.com";
try {
Member.updateContactDetails(client, prop.memberId, contact,
validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_ALREADY_EXISTS, ex.statusCode);
}
}
@Test
public void addDeleteUniverifiedProgramTest() {
// available in a seperate file: UnverifiedProgramTest
}
// @Test
// public void queryTest() {
//
// ContactProp contact = new ContactProp();
// contact.email = "Sathya.t@IshaFoundation.org";
// contact.mobilePhone = "+6598361844";
// contact.homePhone = "+6565227030";
//
// MemberProp sathya = Member.create(client, sgp.groupId, contact,
// User.SUPER_USER);
// assertEquals(1, sathya.memberId);
//
// try {
// Member.query("isha", "SathYa", null, null, null, null, invalidUser);
// assertTrue(false);
// } catch (APIException ex) {
// assertEquals(Status.ERROR_INVALID_USER, ex.statusCode);
// }
//
// // search string cannot be less than 3 char
// try {
// Member.query("isha", "Sa", null, null, null, null, validUser);
// assertTrue(false);
// } catch (APIException ex) {
// assertEquals(Status.ERROR_RESOURCE_INCORRECT, ex.statusCode);
// }
//
// List<MemberProp> searchResults = Member.query("isha", "SathYa", null,
// null, null, null, validUser);
// assertEquals(1, searchResults.size());
//
// searchResults = Member.query("isha", "sathyat", null, null, null, null,
// validUser);
// assertEquals(0, searchResults.size());
//
// // add few more members
// contact = new ContactProp();
// contact.firstName = "Amit";
// contact.email = "amit@gmail.com";
// MemberProp amit = Member.create(client, sgp.groupId, contact,
// User.SUPER_USER);
// assertEquals(2, amit.memberId);
//
// contact = new ContactProp();
// contact.firstName = "Shiva";
// contact.email = "sjawaji@gmail.com";
// MemberProp shiva = Member.create(client, sydney.groupId, contact,
// User.SUPER_USER);
// assertEquals(3, shiva.memberId);
//
// contact = new ContactProp();
// contact.firstName = "Anantha";
// contact.email = "anantha@gmail.com";
// MemberProp anantha = Member.create(client, kl.groupId, contact,
// User.SUPER_USER);
// assertEquals(4, anantha.memberId);
//
// // search for gmail without specifying group
// searchResults = Member.query("isha", "Gmail", null, null, null, null,
// validUser);
// assertEquals(3, searchResults.size());
// // should be sorted by name
// assertEquals("Amit", searchResults.get(0).contact.firstName);
// assertEquals("Anantha", searchResults.get(1).contact.firstName);
// assertEquals("Shiva", searchResults.get(2).contact.firstName);
//
// // search for gmail only for sgp and kl
// Set<Long> groupIds = new HashSet<>();
// groupIds.add(sgp.groupId);
// groupIds.add(kl.groupId);
// searchResults = Member.query("isha", "Gmail", groupIds, null, null,
// null, validUser);
// assertEquals(2, searchResults.size());
// // should be sorted by name
// assertEquals("Amit", searchResults.get(0).contact.firstName);
// assertEquals("Anantha", searchResults.get(1).contact.firstName);
//
// // search phone number
// searchResults = Member.query("isha", "844", groupIds, null, null, null,
// validUser); // matches sathya
// assertEquals(1, searchResults.size());
// assertEquals("sathya.t@ishafoundation.org", searchResults.get(0).name);
//
// // create a shambhavi program and mystic eye program
// // shambhavi;//i = Practice.create(client, "Shambhavi",
// // User.SUPER_USER);
// PracticeProp mysticEyePractice = Practice.create(client,
// "Mystic Eye Pracice", User.SUPER_USER);
// Set<Long> practiceIds = new HashSet<>();
// practiceIds.add(shambhavi.practiceId);
// ProgramTypeProp ie7day = ProgramType.create(client, "IE 7 Day",
// practiceIds, User.SUPER_USER);
//
// practiceIds.clear();
// practiceIds.add(mysticEyePractice.practiceId);
// ProgramTypeProp mysticEye = ProgramType.create(client, "MysticEye1Day",
// practiceIds, User.SUPER_USER);
// VenueProp notFixed = Venue.create(client, "Not Fixed", "NA",
// sgp.groupId, User.SUPER_USER);
// TeacherProp notFixed2 = Teacher.create(client, "dummy@dummy.com",
// sgp.groupId, User.SUPER_USER);
// ProgramProp ie7day2011 = Program.create(client, sgp.groupId,
// ie7day.programTypeId, notFixed.venueId, notFixed2.teacherId,
// 20110505, 20110511, 1, null, 0, null, User.SUPER_USER);
// ProgramProp mysticEyeJan14 = Program.create(client, sgp.groupId,
// mysticEye.programTypeId, notFixed.venueId, notFixed2.teacherId,
// 20140112, 20140112, 1, null, 0, null, User.SUPER_USER);
// Member.addOrDeleteProgram(client, sathya.memberId,
// ie7day2011.programId, true, User.SUPER_USER);
// Member.addOrDeleteProgram(client, amit.memberId, ie7day2011.programId,
// true, User.SUPER_USER);
// Member.addOrDeleteProgram(client, shiva.memberId, ie7day2011.programId,
// true, User.SUPER_USER);
// Member.addOrDeleteProgram(client, anantha.memberId,
// ie7day2011.programId, true, User.SUPER_USER);
//
// // mystic eye only for amit
// Member.addOrDeleteProgram(client, amit.memberId,
// mysticEyeJan14.programId, true, User.SUPER_USER);
//
// // search for both mysticeye - only amit
// practiceIds.add(shambhavi.practiceId);
// practiceIds.add(mysticEyePractice.practiceId);
// List<MemberProp> memberProps = Member.query(client, "amit", null,
// practiceIds, null, null, User.SUPER_USER);
// assertEquals(1, memberProps.size());
//
// // search for all members that are initiated into shambhavi
// practiceIds.clear();
// practiceIds.add(shambhavi.practiceId);
// memberProps = Member.query(client, null, null, practiceIds, null, null,
// User.SUPER_USER);
// System.out.println("memberProps = " + new Gson().toJson(memberProps));
// assertEquals(4, memberProps.size());
//
// // limit size to 1
// memberProps = Member.query(client, null, null, practiceIds, null, 1,
// User.SUPER_USER);
// assertEquals(1, memberProps.size());
//
// // limit to 4
// memberProps = Member.query(client, null, null, practiceIds, null, 4,
// User.SUPER_USER);
// assertEquals(4, memberProps.size());
//
// // query by program
// assertTrue(false);
// }
@Test
public void addOrDeleteGroupTest() {
ContactProp contact = new ContactProp();
contact.email = "Sathya.t@IshaFoundation.org";
contact.mobilePhone = "+6598361844";
contact.homePhone = "+6565227030";
contact.asOfyyyymmdd = 20141021;
MemberProp prop = Member.create(client, sgp.groupId, contact, false,
User.SUPER_USER);
// user cannot be invalid
try {
Member.addOrDeleteGroup(client, prop.memberId, sgp.groupId, true,
invalidUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_INVALID_USER, ex.statusCode);
}
// member should exist
try {
Member.addOrDeleteGroup(client, 3456, kl.groupId, true, validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_NOT_FOUND, ex.statusCode);
}
// center should exist
try {
Member.addOrDeleteGroup(client, prop.memberId, 100, true, validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_RESOURCE_NOT_FOUND, ex.statusCode);
}
// add kl
Member.addOrDeleteGroup(client, prop.memberId, kl.groupId, true,
validUser);
ObjectifyFilter.complete();
prop = MemberLoader.safeGet(client, prop.memberId, userWithPermission)
.toProp();
assertEquals(2, prop.groupIds.size());
assertTrue(prop.groupIds.contains(sgp.groupId));
assertTrue(prop.groupIds.contains(kl.groupId));
// can add the same center again
Member.addOrDeleteGroup(client, prop.memberId, kl.groupId, true,
validUser);
ObjectifyFilter.complete();
prop = MemberLoader.safeGet(client, prop.memberId, userWithPermission)
.toProp();
assertEquals(2, prop.groupIds.size());
assertTrue(prop.groupIds.contains(sgp.groupId));
assertTrue(prop.groupIds.contains(kl.groupId));
// remove center
Member.addOrDeleteGroup(client, prop.memberId, kl.groupId, false,
validUser);
ObjectifyFilter.complete();
prop = MemberLoader.safeGet(client, prop.memberId, userWithPermission)
.toProp();
assertEquals(1, prop.groupIds.size());
assertTrue(prop.groupIds.contains(sgp.groupId));
assertTrue(!prop.groupIds.contains(kl.groupId));
// can remove center again
Member.addOrDeleteGroup(client, prop.memberId, kl.groupId, false,
validUser);
ObjectifyFilter.complete();
prop = MemberLoader.safeGet(client, prop.memberId, userWithPermission)
.toProp();
assertEquals(1, prop.groupIds.size());
assertTrue(prop.groupIds.contains(sgp.groupId));
assertTrue(!prop.groupIds.contains(kl.groupId));
// there should be atleast 1 center
try {
Member.addOrDeleteGroup(client, prop.memberId, sgp.groupId, false,
validUser);
assertTrue(false);
} catch (APIException ex) {
assertEquals(Status.ERROR_PRECONDITION_FAILED, ex.statusCode);
}
}
@Test
public void getMatchingMemberIdsTest() {
ContactProp contactDetailProp = new ContactProp();
List<ContactProp> contactDetailProps = new ArrayList<>();
List<Long> matching = Member.getMatchingMemberIds(client,
contactDetailProps);
assertEquals(0, matching.size());
contactDetailProps.clear();
contactDetailProp.email = "sathya.t@ishafoundation.org";
contactDetailProps.add(contactDetailProp);
matching = Member.getMatchingMemberIds(client, contactDetailProps);
assertEquals(1, matching.size());
assertEquals(null, matching.get(0));
ContactProp c = new ContactProp();
c.firstName = "Sathyanarayanan";
c.lastName = "Thilakan";
c.email = "sathya.t@ishafoundation.org";
c.mobilePhone = "+6593232152";
c.asOfyyyymmdd = 20141021;
MemberProp sathya = Member.create(client, sgp.groupId, c, false,
User.SUPER_USER);
c = new ContactProp();
c.firstName = "Thulasidhar";
c.lastName = "Kosalram";
c.email = "thulasidhar@gmail.com";
c.mobilePhone = "+6593705371";
c.asOfyyyymmdd = 20141021;
MemberProp thulasi = Member.create(client, sgp.groupId, c, false,
User.SUPER_USER);
c = new ContactProp();
c.firstName = "Sharmila";
c.lastName = "Napa";
c.email = "sharmila@bhairaviyoga.sg";
c.asOfyyyymmdd = 20141021;
MemberProp sharmila = Member.create(client, sgp.groupId, c, false,
User.SUPER_USER);
// create contacts
ContactProp syamala = new ContactProp();
syamala.firstName = "syamala";
syamala.mobilePhone = "+6593232152";
ContactProp thilakan = new ContactProp();
thilakan.firstName = "thilakan";
thilakan.email = "rthilakan@gmail.com";
ContactProp sowmya = new ContactProp();
sowmya.firstName = "sowmya ramakrishnan";
sowmya.email = "sathya.t@ishafoundation.org";
ContactProp sathyaContactDetail = new ContactProp();
sathyaContactDetail.firstName = "sathya";
sathyaContactDetail.mobilePhone = "+6593232152";
contactDetailProps.clear();
contactDetailProps.add(syamala);
contactDetailProps.add(thilakan);
contactDetailProps.add(sowmya);
contactDetailProps.add(sathyaContactDetail);
contactDetailProps.add(thulasi.contact);
contactDetailProps.add(sharmila.contact);
List<Long> matchingMemberIds = Member.getMatchingMemberIds(client,
contactDetailProps);
assertEquals(6, matchingMemberIds.size());
assertEquals(null, matchingMemberIds.get(0));
assertEquals(null, matchingMemberIds.get(1));
assertEquals(null, matchingMemberIds.get(2));
assertEquals(new Long(sathya.memberId), matchingMemberIds.get(3));
assertEquals(new Long(thulasi.memberId), matchingMemberIds.get(4));
assertEquals(new Long(sharmila.memberId), matchingMemberIds.get(5));
}
@Test
public void rebuildTest() {
assertTrue(false);
}
@Test
public void getCSVTest() {
PracticeProp shambhavi = Practice.safeGetByIdOrName(client, "shambhavi").toProp();
PracticeProp shoonya = Practice.create(client, "Shoonya", User.SUPER_USER);
PracticeProp bsp = Practice.create(client, "Bhava Spandana", User.SUPER_USER);
PracticeProp samyama = Practice.create(client, "Samyama", User.SUPER_USER);
List<MemberProp> memberProps = new ArrayList<>();
MemberProp sathya = new MemberProp();
sathya.contact = new ContactProp();
sathya.memberId = Sequence.getNext(client, SequenceType.MEMBER);
sathya.contact.firstName = "Sathya,";
sathya.contact.lastName = "Thilakan";
sathya.contact.email = "sathya.t@ishafoundation.org";
sathya.contact.mobilePhone = "+6593232152";
sathya.practiceIds.add(shambhavi.practiceId);
sathya.practiceIds.add(shoonya.practiceId);
sathya.practiceIds.add(bsp.practiceId);
sathya.practiceIds.add(samyama.practiceId);
MemberProp sowmya = new MemberProp();
sowmya.memberId = Sequence.getNext(client, SequenceType.MEMBER);
sowmya.contact = new ContactProp();
sowmya.contact.firstName = "Sowmya";
sowmya.contact.email = "sowmya@sowmya.com";
sowmya.contact.mobilePhone = "+6593232152";
sowmya.practiceIds.add(shambhavi.practiceId);
memberProps.add(sathya);
memberProps.add(sowmya);
String csv = Member.getCSV(client, memberProps);
//System.out.println("csv: " + csv);
StringBuilder expected = new StringBuilder();
expected.append("First Name, Last Name, Email, Mobile, Home Phone, Office Phone, Shambhavi ?, Shoonya ?, BSP ?, Samyama ?, Isha CRM Member Id\n");
expected.append("Sathya,Thilakan,sathya.t@ishafoundation.org,+6593232152,,,Yes,Yes,Yes,Yes,1\n");
expected.append("Sowmya,,sowmya@sowmya.com,+6593232152,,,Yes,No,No,No,2\n");
assertEquals(expected.toString(), csv);
//todo add occupation and company name
}
}