use of com.vodafone360.people.datatypes.Contact in project 360-Engine-for-Android by 360.
the class PeopleContactsApiTest method testAddGetNativeContact.
/**
* Tests the methods sequence addNativeContact() then getNativeContact().
*/
@Suppress
public void testAddGetNativeContact() {
final long NATIVE_ID = 15;
PeopleContactsApi pca = new PeopleContactsApi(mDatabaseHelper);
// the database is empty, it shall not return any ids
assertNull(pca.getNativeContactsIds());
// let's add a contact
ContactChange[] contact = filterContactChanges(ContactChangeHelper.randomContact(ContactChange.INVALID_ID, ContactChange.INVALID_ID, NATIVE_ID));
assertTrue(pca.addNativeContact(contact));
// check that it exists
long[] ids = pca.getNativeContactsIds();
assertEquals(1, ids.length);
assertEquals(NATIVE_ID, ids[0]);
// get the contact back
final ContactChange[] savedContact = pca.getContact(NATIVE_ID);
assertNotNull(savedContact);
// compare with the original one
assertTrue(ContactChangeHelper.areChangeListsEqual(contact, savedContact, false));
}
use of com.vodafone360.people.datatypes.Contact in project 360-Engine-for-Android by 360.
the class PeopleContactsApiTest method testUpdateGetNativeContactWithDelete.
/**
* Tests the updateNativeContact() method when a detail is deleted outside.
*/
public void testUpdateGetNativeContactWithDelete() {
final long NATIVE_ID = 15;
PeopleContactsApi pca = new PeopleContactsApi(mDatabaseHelper);
// the database is empty, it shall not return any ids
assertNull(pca.getNativeContactsIds());
// let's add a contact
ContactChange[] contact = filterContactChanges(ContactChangeHelper.randomContact(ContactChange.INVALID_ID, ContactChange.INVALID_ID, NATIVE_ID));
assertTrue(pca.addNativeContact(contact));
// check that it exists
long[] ids = pca.getNativeContactsIds();
assertEquals(1, ids.length);
assertEquals(NATIVE_ID, ids[0]);
// get the contact back
ContactChange[] savedContact = pca.getContact(NATIVE_ID);
assertNotNull(savedContact);
// let's add a detail
ContactChange addedDetail = new ContactChange(ContactChange.KEY_VCARD_PHONE, "+3300000", ContactChange.FLAG_HOME);
addedDetail.setNabContactId(NATIVE_ID);
addedDetail.setType(ContactChange.TYPE_ADD_DETAIL);
addedDetail.setInternalContactId(savedContact[0].getInternalContactId());
ContactChange[] updates = { addedDetail };
pca.updateNativeContact(updates);
// get the contact back
savedContact = pca.getContact(NATIVE_ID);
assertNotNull(savedContact);
assertEquals(contact.length + 1, savedContact.length);
// find the localId of the detail to delete
int index = findContactChangeIndex(savedContact, addedDetail);
assertTrue(index != -1);
addedDetail.setInternalDetailId(savedContact[index].getInternalDetailId());
// remove the detail as if coming from user or server (i.e. not yet synced to native)
ArrayList<ContactDetail> detailList = new ArrayList<ContactDetail>(1);
detailList.add(mDatabaseHelper.convertContactChange(addedDetail));
mDatabaseHelper.syncDeleteContactDetailList(detailList, false, true);
// get the contact back
savedContact = pca.getContact(NATIVE_ID);
assertNotNull(savedContact);
// the deleted detail shall be given
assertEquals(contact.length + 1, savedContact.length);
// check that one contact has the deleted flag
int deletedIndex = -1;
int deletedCount = 0;
for (int i = 0; i < savedContact.length; i++) {
if (savedContact[i].getType() == ContactChange.TYPE_DELETE_DETAIL) {
deletedIndex = i;
deletedCount++;
}
}
// there shall be only one deleted detail
assertEquals(1, deletedCount);
assertEquals(addedDetail.getInternalDetailId(), savedContact[deletedIndex].getInternalDetailId());
}
use of com.vodafone360.people.datatypes.Contact in project 360-Engine-for-Android by 360.
the class UpdateNativeContactsTest method feedSyncableContactsInDatabase.
/**
* Feeds the People database with random contacts.
*
* @param contactsCount the number of contact to create
*/
private void feedSyncableContactsInDatabase(int contactsCount) {
for (int i = 0; i < contactsCount; i++) {
final Contact contact = mTestModule.createDummyContactData();
contact.synctophone = true;
mDatabaseHelper.addContact(contact);
}
}
use of com.vodafone360.people.datatypes.Contact in project 360-Engine-for-Android by 360.
the class UpdateNativeContactsTest method testExportingDeletedContacts.
/**
* Tests the export of new syncable contacts.
*/
@Suppress
public void testExportingDeletedContacts() {
final int CONTACTS_COUNT = 30;
UpdateNativeContacts processor = new UpdateNativeContacts(mContactSyncCallback, mDatabaseHelper);
// check that there are no contacts to sync
long[] syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(null, syncableIds);
// put some contacts that need to be synchronized to native side
feedSyncableContactsInDatabase(CONTACTS_COUNT);
// check the count of the contacts to sync
syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(CONTACTS_COUNT, syncableIds.length);
// run the UpdateNativeContacts processor until it finishes or it times out
runUpdateNativeContactsProcessor(processor);
// check the contacts count on native side
final NativeContactsApi nca = NativeContactsApi.getInstance();
long[] ids = null;
if (VersionUtils.is2XPlatform()) {
ids = nca.getContactIds(PEOPLE_ACCOUNT);
} else {
ids = nca.getContactIds(null);
}
assertEquals(CONTACTS_COUNT, ids.length);
// check that no more contact is syncable as the export is done
syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(null, syncableIds);
// delete 6 of the exported contacts
mDatabaseHelper.deleteContact(1);
mDatabaseHelper.deleteContact(3);
mDatabaseHelper.deleteContact(5);
mDatabaseHelper.deleteContact(15);
mDatabaseHelper.deleteContact(20);
mDatabaseHelper.deleteContact(26);
// check the count of the contacts to sync
syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(6, syncableIds.length);
// run the UpdateNativeContacts processor until it finishes or it times out
processor = new UpdateNativeContacts(mContactSyncCallback, mDatabaseHelper);
mContactSyncCallback.mProcessorComplete.clear();
runUpdateNativeContactsProcessor(processor);
// check the contacts count on native side
if (VersionUtils.is2XPlatform()) {
ids = nca.getContactIds(PEOPLE_ACCOUNT);
} else {
ids = nca.getContactIds(null);
}
assertEquals(CONTACTS_COUNT - 6, ids.length);
// check that no more contact is syncable as the export is done
syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(null, syncableIds);
}
use of com.vodafone360.people.datatypes.Contact in project 360-Engine-for-Android by 360.
the class UpdateNativeContactsTest method testExportingContactAllDetails.
/**
* Tests the export of a new syncable contact with all the possible details combinations.
*/
public void testExportingContactAllDetails() {
UpdateNativeContacts processor = new UpdateNativeContacts(mContactSyncCallback, mDatabaseHelper);
// check that there are no contacts to sync
long[] syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(null, syncableIds);
// put a contact that need to be synchronized to native side and that contains
// all the possible details that can be synchronized
final Contact contact = feedOneSyncableContact();
// check the count of the contacts to sync
syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(1, syncableIds.length);
// run the UpdateNativeContacts processor until it finishes or it times out
runUpdateNativeContactsProcessor(processor);
// check that the contact on native side is equivalent
final NativeContactsApi nca = NativeContactsApi.getInstance();
long[] ids = null;
if (VersionUtils.is2XPlatform()) {
ids = nca.getContactIds(PEOPLE_ACCOUNT);
} else {
ids = nca.getContactIds(null);
}
assertEquals(1, ids.length);
// check that no more contact is syncable as the export is done
syncableIds = mDatabaseHelper.getNativeSyncableContactsLocalIds();
assertEquals(null, syncableIds);
final ContactChange[] contactChanges = nca.getContact(ids[0]);
assertTrue(compareContactWithContactChange(contact, contactChanges));
}
Aggregations