package crmdna.datamigration;
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;
import crmdna.group.Group.GroupProp;
import crmdna.group.GroupEntity;
import crmdna.practice.Practice;
import crmdna.practice.Practice.PracticeProp;
import crmdna.practice.PracticeEntity;
import crmdna.user.User;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import static crmdna.common.OfyService.ofy;
import static org.junit.Assert.assertEquals;
public class DataMigrationTest {
private final LocalServiceTestHelper datastoreHelper = new LocalServiceTestHelper(
new LocalDatastoreServiceTestConfig().setApplyAllHighRepJobPolicy());
String client;
String invalidClient = "invalid";
@Before
public void setUp() {
datastoreHelper.setUp();
ObjectifyFilter.complete();
client = "isha";
Client.create(client);
}
@After
public void tearDown() {
ObjectifyFilter.complete();
datastoreHelper.tearDown();
}
@Test
public void copyDataToAnotherClientTest() {
String sourceClient = "source";
String targetClient = "target";
Client.create(sourceClient);
Client.create(targetClient);
GroupProp groupProp = Group.create(sourceClient, "Group1", User.SUPER_USER);
assertEquals(1, groupProp.groupId);
groupProp = Group.create(sourceClient, "Group2", User.SUPER_USER);
assertEquals(2, groupProp.groupId);
PracticeProp practiceProp = Practice.create(sourceClient, "Practice1", User.SUPER_USER);
assertEquals(1, practiceProp.practiceId);
practiceProp = Practice.create(sourceClient, "Practice2", User.SUPER_USER);
assertEquals(2, practiceProp.practiceId);
DataMigration.copyAllEntitiesToAnotherClient(sourceClient, targetClient, User.SUPER_USER);
List<GroupEntity> groupEntities = ofy(targetClient).load().type(GroupEntity.class).list();
assertEquals(2, groupEntities.size());
Collections.sort(groupEntities, new Comparator<GroupEntity>() {
@Override
public int compare(GroupEntity o1, GroupEntity o2) {
// TODO Auto-generated method stub
return new Long(o1.toProp().groupId).compareTo(new Long(o2.toProp().groupId));
}
});
assertEquals(1, groupEntities.get(0).toProp().groupId);
assertEquals("Group1", groupEntities.get(0).toProp().displayName);
assertEquals(2, groupEntities.get(1).toProp().groupId);
assertEquals("Group2", groupEntities.get(1).toProp().displayName);
List<PracticeEntity> practiceEntities = ofy(targetClient).load().type(PracticeEntity.class).list();
assertEquals(2, practiceEntities.size());
Collections.sort(practiceEntities, new Comparator<PracticeEntity>() {
@Override
public int compare(PracticeEntity o1, PracticeEntity o2) {
// TODO Auto-generated method stub
return new Long(o1.toProp().practiceId).compareTo(new Long(o2.toProp().practiceId));
}
});
assertEquals(1, practiceEntities.get(0).toProp().practiceId);
assertEquals("Practice1", practiceEntities.get(0).toProp().displayName);
assertEquals(2, practiceEntities.get(1).toProp().practiceId);
assertEquals("Practice2", practiceEntities.get(1).toProp().displayName);
//source is not deleted
int count = ofy(sourceClient).load().type(GroupEntity.class).count();
assertEquals(2, count);
count = ofy(sourceClient).load().type(PracticeEntity.class).count();
assertEquals(2, count);
}
}