Search in sources :

Example 1 with ContactSummary

use of com.vodafone360.people.datatypes.ContactSummary in project 360-Engine-for-Android by 360.

the class DownloadServerContactsTest method testRunWithOneNewContact.

@MediumTest
@Suppress
public // Breaks tests.
void testRunWithOneNewContact() {
    final String fnName = "testRunWithOneNewContact";
    Log.i(LOG_TAG, "***** EXECUTING " + fnName + " *****");
    mTestStep = 1;
    startSubTest(fnName, "Checking database is empty");
    Cursor cursor = mDb.openContactSummaryCursor(null, null);
    assertEquals(0, cursor.getCount());
    startSubTest(fnName, "Running processor");
    runProcessor(1, State.RUN_WITH_NEW_CONTACTS);
    startSubTest(fnName, "Checking database now has one contact");
    cursor.requery();
    assertEquals(1, cursor.getCount());
    assertTrue(cursor.moveToNext());
    ContactSummary summary = ContactSummaryTable.getQueryData(cursor);
    Contact contact = new Contact();
    ServiceStatus status = mDb.fetchContact(summary.localContactID, contact);
    assertEquals(ServiceStatus.SUCCESS, status);
    Long userId = generateTestUserID(contact.contactID);
    assertTrue(contact.contactID != null);
    assertEquals(userId, contact.userID);
    assertTrue(mLastNewContact != null);
    assertTrue(TestModule.doContactsMatch(contact, mLastNewContact));
    assertTrue(TestModule.doContactsFieldsMatch(contact, mLastNewContact));
    assertEquals(State.IDLE, mState);
    cursor.close();
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, fnName + " has completed successfully");
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, "");
}
Also used : ContactSummary(com.vodafone360.people.datatypes.ContactSummary) ServiceStatus(com.vodafone360.people.service.ServiceStatus) Cursor(android.database.Cursor) Contact(com.vodafone360.people.datatypes.Contact) Suppress(android.test.suitebuilder.annotation.Suppress) MediumTest(android.test.suitebuilder.annotation.MediumTest)

Example 2 with ContactSummary

use of com.vodafone360.people.datatypes.ContactSummary in project 360-Engine-for-Android by 360.

the class FetchNativeContactsTest method testRunConflictTests.

@MediumTest
@Suppress
public // Breaks tests.
void testRunConflictTests() {
    final String fnName = "testRunConflictTests";
    Log.i(LOG_TAG, "***** EXECUTING " + fnName + " *****");
    mTestStep = 1;
    startSubTest(fnName, "Checking people database is empty");
    Cursor peopleCursor = mDb.openContactSummaryCursor(null, null);
    assertEquals(0, peopleCursor.getCount());
    assertTrue(Settings.ENABLE_UPDATE_NATIVE_CONTACTS);
    startSubTest(fnName, "Checking native database is empty");
    Cursor nativeCursor = mCr.query(People.CONTENT_URI, new String[] { People._ID, People.NAME, People.NOTES }, null, null, null);
    assertEquals(0, nativeCursor.getCount());
    startSubTest(fnName, "Add one dummy native contact");
    ContentValues peopleValues = new ContentValues();
    peopleValues.put(Contacts.People.NAME, ADD_CONTACT_TEST_NAME);
    peopleValues.put(Contacts.People.NOTES, ADD_CONTACT_TEST_NOTE);
    Uri personUri1 = mCr.insert(Contacts.People.CONTENT_URI, peopleValues);
    assertTrue("Unable to insert contact into native people table", personUri1 != null);
    final long personId = ContentUris.parseId(personUri1);
    ContentValues phoneValues = new ContentValues();
    phoneValues.put(Contacts.Phones.PERSON_ID, personId);
    phoneValues.put(Contacts.Phones.NUMBER, ADD_PHONE_TEST1);
    phoneValues.put(Contacts.Phones.TYPE, ADD_PHONE_TYPE_TEST1);
    Uri phoneUri1 = mCr.insert(Contacts.Phones.CONTENT_URI, phoneValues);
    assertTrue("Unable to insert contact into native phone table 1", phoneUri1 != null);
    final long phoneId1 = (int) ContentUris.parseId(phoneUri1);
    phoneValues.put(Contacts.Phones.NUMBER, ADD_PHONE_TEST2);
    phoneValues.put(Contacts.Phones.TYPE, ADD_PHONE_TYPE_TEST2);
    phoneValues.put(Contacts.Phones.ISPRIMARY, 1);
    Uri phoneUri2 = mCr.insert(Contacts.Phones.CONTENT_URI, phoneValues);
    assertTrue("Unable to insert contact into native phone table 2", phoneUri2 != null);
    final long phoneId2 = ContentUris.parseId(phoneUri2);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking contact has been synced to people");
    peopleCursor.requery();
    assertEquals(1, peopleCursor.getCount());
    assertTrue(peopleCursor.moveToFirst());
    ContactSummary summary = ContactSummaryTable.getQueryData(peopleCursor);
    assertTrue(summary != null);
    Contact orgContact = new Contact();
    ServiceStatus status = mDb.fetchContact(summary.localContactID, orgContact);
    assertEquals(ServiceStatus.SUCCESS, status);
    startSubTest(fnName, "Modifying phone detail in people and native");
    phoneValues.clear();
    phoneValues.put(Contacts.Phones.NUMBER, MODIFY_PHONE_TEST1);
    int rowsUpdated = mCr.update(phoneUri1, phoneValues, null, null);
    assertEquals(1, rowsUpdated);
    boolean donePhone1 = false;
    for (ContactDetail detail : orgContact.details) {
        if (detail.key == ContactDetail.DetailKeys.VCARD_PHONE && detail.nativeDetailId.longValue() == phoneId1) {
            detail.setTel(MODIFY_PHONE_TEST2, MODIFY_PHONE_PEOPLE_TYPE_TEST2);
            status = mDb.modifyContactDetail(detail);
            assertEquals(ServiceStatus.SUCCESS, status);
            donePhone1 = true;
            break;
        }
    }
    assertTrue("Phone was not synced", donePhone1);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking contact has not been changed");
    peopleCursor.requery();
    assertEquals(1, peopleCursor.getCount());
    assertTrue(peopleCursor.moveToFirst());
    summary = ContactSummaryTable.getQueryData(peopleCursor);
    assertTrue(summary != null);
    Contact newContact = new Contact();
    status = mDb.fetchContact(summary.localContactID, newContact);
    assertEquals(ServiceStatus.SUCCESS, status);
    donePhone1 = false;
    boolean donePhone2 = false;
    for (ContactDetail detail : newContact.details) {
        if (detail.key == ContactDetail.DetailKeys.VCARD_PHONE) {
            if (detail.nativeDetailId.longValue() == phoneId1) {
                assertEquals(MODIFY_PHONE_TEST2, detail.getTel());
                assertEquals(MODIFY_PHONE_PEOPLE_TYPE_TEST2, detail.keyType);
                donePhone1 = true;
            } else {
                mDb.deleteContactDetail(detail.localDetailID);
                donePhone2 = true;
            }
        }
    }
    assertTrue("Phone detail 1 is now missing", donePhone1);
    assertTrue("Phone detail 2 is now missing", donePhone2);
    startSubTest(fnName, "Modifying phone detail in native when it has been deleted in people");
    phoneValues.clear();
    phoneValues.put(Contacts.Phones.NUMBER, MODIFY_PHONE_TEST1);
    rowsUpdated = mCr.update(phoneUri2, phoneValues, null, null);
    assertEquals(1, rowsUpdated);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking contact has not been changed");
    peopleCursor.requery();
    assertEquals(1, peopleCursor.getCount());
    assertTrue(peopleCursor.moveToFirst());
    summary = ContactSummaryTable.getQueryData(peopleCursor);
    assertTrue(summary != null);
    newContact = new Contact();
    status = mDb.fetchContact(summary.localContactID, newContact);
    assertEquals(ServiceStatus.SUCCESS, status);
    donePhone2 = false;
    for (ContactDetail detail : newContact.details) {
        if (detail.key == ContactDetail.DetailKeys.VCARD_PHONE && detail.nativeDetailId.longValue() == phoneId2) {
            assertEquals(ADD_PHONE_TEST2, detail.getTel());
            assertEquals(ADD_PHONE_PEOPLE_TYPE_TEST2, detail.keyType);
            donePhone2 = true;
            break;
        }
    }
    startSubTest(fnName, "Deleting contact in people");
    status = mDb.deleteContact(summary.localContactID);
    assertEquals(ServiceStatus.SUCCESS, status);
    startSubTest(fnName, "Checking people contact list is empty");
    peopleCursor.requery();
    assertEquals(0, peopleCursor.getCount());
    startSubTest(fnName, "Try adding detail in native");
    ContentValues cmValues = new ContentValues();
    cmValues.put(Contacts.ContactMethods.PERSON_ID, personId);
    cmValues.put(Contacts.ContactMethods.DATA, ADD_CM_TEST1);
    cmValues.put(Contacts.ContactMethods.TYPE, ADD_CM_TYPE_TEST1);
    cmValues.put(Contacts.ContactMethods.KIND, ADD_CM_KIND_TEST1);
    Uri cmUri1 = mCr.insert(Contacts.ContactMethods.CONTENT_URI, cmValues);
    assertTrue("Unable to insert contact into native contact methods table 1", cmUri1 != null);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking people contact list is still empty");
    peopleCursor.requery();
    assertEquals(0, peopleCursor.getCount());
    startSubTest(fnName, "Try modifying detail in native");
    phoneValues.clear();
    phoneValues.put(Contacts.Phones.NUMBER, MODIFY_PHONE_TEST1);
    rowsUpdated = mCr.update(phoneUri2, phoneValues, null, null);
    assertEquals(1, rowsUpdated);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking people contact list is still empty");
    peopleCursor.requery();
    assertEquals(0, peopleCursor.getCount());
    startSubTest(fnName, "Try deleting detail in native");
    rowsUpdated = mCr.delete(phoneUri1, null, null);
    assertEquals(1, rowsUpdated);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking people contact list is still empty");
    peopleCursor.requery();
    assertEquals(0, peopleCursor.getCount());
    nativeCursor.close();
    peopleCursor.close();
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, fnName + " has completed successfully");
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, "");
}
Also used : ContentValues(android.content.ContentValues) ContactDetail(com.vodafone360.people.datatypes.ContactDetail) ContactSummary(com.vodafone360.people.datatypes.ContactSummary) ServiceStatus(com.vodafone360.people.service.ServiceStatus) Cursor(android.database.Cursor) Uri(android.net.Uri) Contact(com.vodafone360.people.datatypes.Contact) Suppress(android.test.suitebuilder.annotation.Suppress) MediumTest(android.test.suitebuilder.annotation.MediumTest)

Example 3 with ContactSummary

use of com.vodafone360.people.datatypes.ContactSummary in project 360-Engine-for-Android by 360.

the class FetchNativeContactsTest method testRunWithOneModifiedContact.

@MediumTest
@Suppress
public // Breaks tests.
void testRunWithOneModifiedContact() {
    final String fnName = "testRunWithOneModifiedContact";
    Log.i(LOG_TAG, "***** EXECUTING " + fnName + " *****");
    mTestStep = 1;
    startSubTest(fnName, "Checking people database is empty");
    Cursor peopleCursor = mDb.openContactSummaryCursor(null, null);
    assertEquals(0, peopleCursor.getCount());
    assertTrue(Settings.ENABLE_UPDATE_NATIVE_CONTACTS);
    startSubTest(fnName, "Checking native database is empty");
    Cursor nativeCursor = mCr.query(People.CONTENT_URI, new String[] { People._ID, People.NAME, People.NOTES }, null, null, null);
    assertEquals(0, nativeCursor.getCount());
    startSubTest(fnName, "Add one dummy native contact");
    ContentValues peopleValues = new ContentValues();
    peopleValues.put(Contacts.People.NAME, ADD_CONTACT_TEST_NAME);
    peopleValues.put(Contacts.People.NOTES, ADD_CONTACT_TEST_NOTE);
    Uri personUri1 = mCr.insert(Contacts.People.CONTENT_URI, peopleValues);
    assertTrue("Unable to insert contact into native people table", personUri1 != null);
    final long personId = ContentUris.parseId(personUri1);
    ContentValues phoneValues = new ContentValues();
    phoneValues.put(Contacts.Phones.PERSON_ID, personId);
    phoneValues.put(Contacts.Phones.NUMBER, ADD_PHONE_TEST1);
    phoneValues.put(Contacts.Phones.TYPE, ADD_PHONE_TYPE_TEST1);
    Uri phoneUri1 = mCr.insert(Contacts.Phones.CONTENT_URI, phoneValues);
    assertTrue("Unable to insert contact into native phone table 1", phoneUri1 != null);
    final long phoneId1 = (int) ContentUris.parseId(phoneUri1);
    ContentValues cmValues = new ContentValues();
    cmValues.put(Contacts.ContactMethods.PERSON_ID, personId);
    cmValues.put(Contacts.ContactMethods.DATA, ADD_CM_TEST1);
    cmValues.put(Contacts.ContactMethods.TYPE, ADD_CM_TYPE_TEST1);
    cmValues.put(Contacts.ContactMethods.KIND, ADD_CM_KIND_TEST1);
    cmValues.put(Contacts.ContactMethods.ISPRIMARY, 1);
    Uri cmUri1 = mCr.insert(Contacts.ContactMethods.CONTENT_URI, cmValues);
    assertTrue("Unable to insert contact into native contact methods table 1", cmUri1 != null);
    final long cmId1 = ContentUris.parseId(cmUri1);
    ContentValues orgValues = new ContentValues();
    orgValues.put(Contacts.Organizations.PERSON_ID, personId);
    orgValues.put(Contacts.Organizations.COMPANY, ADD_ORG_COMPANY_TEST1);
    orgValues.put(Contacts.Organizations.TITLE, ADD_ORG_TITLE_TEST1);
    orgValues.put(Contacts.Organizations.TYPE, ADD_ORG_TYPE_TEST1);
    orgValues.put(Contacts.Organizations.LABEL, ADD_ORG_LABEL_TEST1);
    Uri orgUri = mCr.insert(Contacts.Organizations.CONTENT_URI, orgValues);
    assertTrue("Unable to insert contact into native organizations table 1", orgUri != null);
    final long orgId1 = ContentUris.parseId(orgUri);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking contact has been synced to people");
    peopleCursor.requery();
    assertEquals(1, peopleCursor.getCount());
    startSubTest(fnName, "Modifying name");
    peopleValues.clear();
    peopleValues.put(Contacts.People.NAME, MODIFY_CONTACT_TEST_NAME);
    int rowsUpdated = mCr.update(personUri1, peopleValues, null, null);
    assertEquals(1, rowsUpdated);
    startSubTest(fnName, "Modifying phone number");
    phoneValues.clear();
    phoneValues.put(Contacts.Phones.NUMBER, MODIFY_PHONE_TEST1);
    rowsUpdated = mCr.update(phoneUri1, phoneValues, null, null);
    assertEquals(1, rowsUpdated);
    startSubTest(fnName, "Modifying email address");
    cmValues.clear();
    cmValues.put(Contacts.ContactMethods.DATA, MODIFY_EMAIL_TEST1);
    rowsUpdated = mCr.update(cmUri1, cmValues, null, null);
    assertEquals(1, rowsUpdated);
    startSubTest(fnName, "Modifying organization");
    orgValues.clear();
    orgValues.put(Contacts.Organizations.COMPANY, MODIFY_COMPANY_TEST1);
    rowsUpdated = mCr.update(orgUri, orgValues, null, null);
    assertEquals(1, rowsUpdated);
    startSubTest(fnName, "Adding phone number");
    phoneValues.clear();
    phoneValues.put(Contacts.Phones.PERSON_ID, personId);
    phoneValues.put(Contacts.Phones.NUMBER, MODIFY_PHONE_TEST2);
    phoneValues.put(Contacts.Phones.TYPE, MODIFY_PHONE_TYPE_TEST2);
    phoneValues.put(Contacts.Phones.ISPRIMARY, 1);
    Uri phoneUri2 = mCr.insert(Contacts.Phones.CONTENT_URI, phoneValues);
    assertTrue("Unable to insert contact into native phone table 2", phoneUri2 != null);
    final long phoneId2 = (int) ContentUris.parseId(phoneUri2);
    startSubTest(fnName, "Adding email address");
    cmValues.clear();
    cmValues.put(Contacts.ContactMethods.PERSON_ID, personId);
    cmValues.put(Contacts.ContactMethods.DATA, MODIFY_EMAIL_TEST2);
    cmValues.put(Contacts.ContactMethods.TYPE, MODIFY_EMAIL_TYPE_TEST2);
    cmValues.put(Contacts.ContactMethods.KIND, MODIFY_EMAIL_KIND_TEST2);
    Uri cmUri2 = mCr.insert(Contacts.ContactMethods.CONTENT_URI, cmValues);
    assertTrue("Unable to insert contact into native contact methods table 1", cmUri2 != null);
    final long cmId2 = (int) ContentUris.parseId(cmUri2);
    startSubTest(fnName, "Adding organization");
    orgValues.clear();
    orgValues.put(Contacts.Organizations.PERSON_ID, personId);
    orgValues.put(Contacts.Organizations.COMPANY, MODIFY_COMPANY_TEST2);
    orgValues.put(Contacts.Organizations.TITLE, MODIFY_TITLE_TEST2);
    orgValues.put(Contacts.Organizations.TYPE, MODIFY_COMPANY_TYPE_TEST2);
    orgValues.put(Contacts.Organizations.ISPRIMARY, 1);
    Uri orgUri2 = mCr.insert(Contacts.Organizations.CONTENT_URI, orgValues);
    assertTrue("Unable to insert contact into native contact methods table 1", orgUri2 != null);
    final long orgId2 = (int) ContentUris.parseId(orgUri2);
    startSubTest(fnName, "Running processor");
    runProcessor();
    startSubTest(fnName, "Checking still 1 contact");
    peopleCursor.requery();
    assertEquals(1, peopleCursor.getCount());
    assertTrue(peopleCursor.moveToFirst());
    ContactSummary summary = ContactSummaryTable.getQueryData(peopleCursor);
    assertTrue(summary != null);
    Contact newContact = new Contact();
    ServiceStatus status = mDb.fetchContact(summary.localContactID, newContact);
    assertEquals(ServiceStatus.SUCCESS, status);
    boolean doneName = false;
    boolean doneNickname = false;
    boolean doneNote = false;
    boolean donePhone1 = false;
    boolean donePhone2 = false;
    boolean doneCm1 = false;
    boolean doneCm2 = false;
    boolean doneOrg1 = false;
    boolean doneOrg2 = false;
    boolean doneTitle1 = false;
    boolean doneTitle2 = false;
    assertTrue(newContact.synctophone);
    assertEquals(personId, newContact.nativeContactId.longValue());
    assertEquals(personId, summary.nativeContactId.longValue());
    for (ContactDetail detail : newContact.details) {
        assertEquals(Integer.valueOf((int) personId), detail.nativeContactId);
        detail.syncNativeContactId = fetchSyncNativeId(detail.localDetailID);
        assertEquals("No sync marker, ID = " + detail.nativeDetailId + ", key = " + detail.key, Integer.valueOf(-1), detail.syncNativeContactId);
        Integer detailId = detail.nativeDetailId;
        assertTrue(detailId != null);
        switch(detail.key) {
            case VCARD_NAME:
                assertEquals(personId, detailId.longValue());
                assertEquals(MODIFY_CONTACT_TEST_NAME, detail.nativeVal1);
                VCardHelper.Name name = detail.getName();
                assertTrue(name != null);
                assertEquals(MODIFY_CONTACT_TEST_NAME, name.toString());
                doneName = true;
                break;
            case VCARD_NICKNAME:
                assertEquals(personId, detailId.longValue());
                assertEquals(MODIFY_CONTACT_TEST_NAME, detail.nativeVal1);
                assertEquals(MODIFY_CONTACT_TEST_NAME, detail.getValue());
                doneNickname = true;
                break;
            case VCARD_NOTE:
                assertEquals(personId, detailId.longValue());
                assertEquals(ADD_CONTACT_TEST_NOTE, detail.nativeVal1);
                assertEquals(ADD_CONTACT_TEST_NOTE, detail.getValue());
                doneNote = true;
                break;
            case VCARD_PHONE:
                if (detailId.longValue() == phoneId1) {
                    donePhone1 = true;
                    assertEquals(MODIFY_PHONE_TEST1, detail.nativeVal1);
                    assertEquals(MODIFY_PHONE_TEST1, detail.getValue());
                    assertEquals(ADD_PHONE_PEOPLE_TYPE_TEST1, detail.keyType);
                    assertEquals(Integer.valueOf(ContactDetail.ORDER_NORMAL), detail.order);
                } else if (detailId.longValue() == phoneId2) {
                    donePhone2 = true;
                    assertEquals(MODIFY_PHONE_TEST2, detail.nativeVal1);
                    assertEquals(MODIFY_PHONE_TEST2, detail.getValue());
                    assertEquals(MODIFY_PHONE_PEOPLE_TYPE_TEST2, detail.keyType);
                    assertEquals(Integer.valueOf(ContactDetail.ORDER_PREFERRED), detail.order);
                } else {
                    fail("Unknown phone number in people contact: ID:" + detailId + " does not match " + phoneId1 + "," + phoneId2);
                }
                break;
            case VCARD_EMAIL:
                assertTrue(detailId != null);
                if (detailId.longValue() == cmId1) {
                    doneCm1 = true;
                    assertEquals(MODIFY_EMAIL_TEST1, detail.nativeVal1);
                    assertEquals(MODIFY_EMAIL_TEST1, detail.getValue());
                    assertEquals(String.valueOf(ADD_CM_TYPE_TEST1), detail.nativeVal2);
                    assertEquals(String.valueOf(ADD_CM_KIND_TEST1), detail.nativeVal3);
                    assertEquals(ADD_CM_PEOPLE_TYPE_TEST1, detail.keyType);
                    assertEquals(Integer.valueOf(ContactDetail.ORDER_PREFERRED), detail.order);
                } else if (detailId.longValue() == cmId2) {
                    doneCm2 = true;
                    assertEquals(MODIFY_EMAIL_TEST2, detail.nativeVal1);
                    assertEquals(MODIFY_EMAIL_TEST2, detail.getValue());
                    assertEquals(String.valueOf(MODIFY_EMAIL_KIND_TEST2), detail.nativeVal2);
                    assertEquals(String.valueOf(MODIFY_EMAIL_TYPE_TEST2), detail.nativeVal3);
                    assertEquals(MODIFY_EMAIL_PEOPLE_TYPE_TEST2, detail.keyType);
                    assertEquals(Integer.valueOf(ContactDetail.ORDER_NORMAL), detail.order);
                } else {
                    fail("Unknown email in people contact: ID:" + detailId + " does not match " + phoneId1 + "," + phoneId2);
                }
                break;
            case VCARD_ORG:
                assertTrue(detailId != null);
                if (detailId.longValue() == orgId1) {
                    doneOrg1 = true;
                    assertEquals(MODIFY_COMPANY_TEST1, detail.nativeVal1);
                    assertEquals(String.valueOf(ADD_ORG_TYPE_TEST1), detail.nativeVal3);
                    VCardHelper.Organisation org = detail.getOrg();
                    assertTrue(org != null);
                    assertEquals(0, org.unitNames.size());
                    assertEquals(MODIFY_COMPANY_TEST1, org.name);
                    assertEquals(ADD_ORG_PEOPLE_TYPE_TEST1, detail.keyType);
                    assertEquals(Integer.valueOf(ContactDetail.ORDER_NORMAL), detail.order);
                } else if (detailId.longValue() == orgId2) {
                    doneOrg2 = true;
                    assertEquals(MODIFY_COMPANY_TEST2, detail.nativeVal1);
                    assertEquals(String.valueOf(MODIFY_COMPANY_TYPE_TEST2), detail.nativeVal3);
                    VCardHelper.Organisation org = detail.getOrg();
                    assertTrue(org != null);
                    assertEquals(0, org.unitNames.size());
                    assertEquals(MODIFY_COMPANY_TEST2, org.name);
                    assertEquals(MODIFY_COMPANY_PEOPLE_TYPE_TEST2, detail.keyType);
                    assertEquals(Integer.valueOf(ContactDetail.ORDER_PREFERRED), detail.order);
                } else {
                    fail("Unknown organisation in people contact");
                }
                break;
            case VCARD_TITLE:
                assertTrue(detailId != null);
                if (detailId.longValue() == orgId1) {
                    doneTitle1 = true;
                    assertEquals(ADD_ORG_TITLE_TEST1, detail.nativeVal1);
                    assertEquals(ADD_ORG_TITLE_TEST1, detail.getValue());
                } else if (detailId.longValue() == orgId2) {
                    doneTitle2 = true;
                    assertEquals(MODIFY_TITLE_TEST2, detail.nativeVal1);
                    assertEquals(MODIFY_TITLE_TEST2, detail.getValue());
                } else {
                    fail("Unknown title in people contact");
                }
                break;
            default:
                fail("Unexpected detail in people contact: " + detail.key);
        }
    }
    assertTrue("Name was missing", doneName);
    assertTrue("Nickname was missing", doneNickname);
    assertTrue("Note was missing", doneNote);
    assertTrue("Phone1 was missing", donePhone1);
    assertTrue("Phone2 was missing", donePhone2);
    assertTrue("Email1 was missing", doneCm1);
    assertTrue("Email2 was missing", doneCm2);
    assertTrue("Organisation1 was missing", doneOrg1);
    assertTrue("Organisation2 was missing", doneOrg2);
    assertTrue("Title1 was missing", doneTitle1);
    assertTrue("Title2 was missing", doneTitle2);
    nativeCursor.close();
    peopleCursor.close();
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, fnName + " has completed successfully");
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, "");
}
Also used : ContentValues(android.content.ContentValues) ContactSummary(com.vodafone360.people.datatypes.ContactSummary) Cursor(android.database.Cursor) Uri(android.net.Uri) Contact(com.vodafone360.people.datatypes.Contact) ContactDetail(com.vodafone360.people.datatypes.ContactDetail) ServiceStatus(com.vodafone360.people.service.ServiceStatus) VCardHelper(com.vodafone360.people.datatypes.VCardHelper) Suppress(android.test.suitebuilder.annotation.Suppress) MediumTest(android.test.suitebuilder.annotation.MediumTest)

Example 4 with ContactSummary

use of com.vodafone360.people.datatypes.ContactSummary in project 360-Engine-for-Android by 360.

the class UploadServerContactsTest method testRunWithManyContacts.

@LargeTest
@Suppress
public // Breaks tests
void testRunWithManyContacts() {
    final String fnName = "testRunWithManyContacts";
    mBulkContactTest = true;
    Log.i(LOG_TAG, "***** EXECUTING " + fnName + " *****");
    mTestStep = 1;
    startSubTest(fnName, "Checking change list is empty");
    long noOfChanges = ContactChangeLogTable.fetchNoOfContactDetailChanges(null, mDb.getReadableDatabase());
    assertEquals(0, noOfChanges);
    noOfChanges = ContactDetailsTable.syncNativeFetchNoOfChanges(mDb.getReadableDatabase());
    assertEquals(0, noOfChanges);
    startSubTest(fnName, "Adding " + NO_OF_CONTACTS_TO_ADD + " test contact to database");
    mInitialContactGroupCount = 0;
    for (int i = 0; i < NO_OF_CONTACTS_TO_ADD; i++) {
        Contact contact = mTestModule.createDummyContactData();
        ServiceStatus status = mDb.addContact(contact);
        assertEquals(ServiceStatus.SUCCESS, status);
        mInitialContactGroupCount += contact.groupList.size();
        startSubTest(fnName, "Adding new detail to contact");
        ContactDetail newDetail = new ContactDetail();
        newDetail.value = NEW_DETAIL_VALUE;
        newDetail.key = NEW_DETAIL_KEY;
        newDetail.keyType = NEW_DETAIL_TYPE;
        newDetail.localContactID = contact.localContactID;
        status = mDb.addContactDetail(newDetail);
        assertEquals(ServiceStatus.SUCCESS, status);
        startSubTest(fnName, "Modifying detail in contact");
        ContactDetail modDetail = contact.details.get(0);
        modDetail.value = MOD_DETAIL_VALUE;
        modDetail.key = MOD_DETAIL_KEY;
        modDetail.keyType = MOD_DETAIL_TYPE;
        status = mDb.modifyContactDetail(modDetail);
        assertEquals(ServiceStatus.SUCCESS, status);
    }
    Log.i(LOG_TAG, "Total number of groups = " + mItemCount + " out of " + NO_OF_CONTACTS_TO_ADD + " contacts");
    startSubTest(fnName, "Running processor");
    runProcessor(NO_OF_CONTACTS_TO_ADD, State.ADD_CONTACT_LIST);
    startSubTest(fnName, "Fetching contacts after sync");
    Cursor cursor = mDb.openContactSummaryCursor(null, null);
    assertTrue(cursor != null);
    while (cursor.moveToNext()) {
        ContactSummary summary = ContactSummaryTable.getQueryData(cursor);
        Contact testContact = new Contact();
        ServiceStatus status = mDb.fetchContact(summary.localContactID, testContact);
        assertEquals(ServiceStatus.SUCCESS, status);
        assertEquals(Long.valueOf(summary.localContactID + 1), testContact.contactID);
        if ((testContact.localContactID & 15) != 0) {
            assertEquals(Long.valueOf(summary.localContactID + 2), testContact.userID);
        } else {
            assertEquals(null, testContact.userID);
        }
        for (ContactDetail detail : testContact.details) {
            ContactDetail replyDetail = new ContactDetail();
            generateReplyDetail(replyDetail, detail);
            assertEquals(replyDetail.unique_id, detail.unique_id);
            Long syncServerId = TestModule.fetchSyncServerId(detail.localDetailID, mDb.getReadableDatabase());
            assertEquals(Long.valueOf(-1), syncServerId);
        }
    }
    cursor.close();
    assertEquals(State.IDLE, mState);
    noOfChanges = ContactChangeLogTable.fetchNoOfContactDetailChanges(null, mDb.getReadableDatabase());
    assertEquals(0, noOfChanges);
    noOfChanges = ContactDetailsTable.syncNativeFetchNoOfChanges(mDb.getReadableDatabase());
    assertEquals(0, noOfChanges);
    mState = State.IDLE;
    startSubTest(fnName, "Running processor with no contact changes");
    runProcessor(0, State.IDLE);
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, fnName + " has completed successfully");
    Log.i(LOG_TAG, "*************************************************************************");
    Log.i(LOG_TAG, "");
}
Also used : ContactDetail(com.vodafone360.people.datatypes.ContactDetail) ContactSummary(com.vodafone360.people.datatypes.ContactSummary) ServiceStatus(com.vodafone360.people.service.ServiceStatus) Cursor(android.database.Cursor) Contact(com.vodafone360.people.datatypes.Contact) Suppress(android.test.suitebuilder.annotation.Suppress) LargeTest(android.test.suitebuilder.annotation.LargeTest)

Example 5 with ContactSummary

use of com.vodafone360.people.datatypes.ContactSummary in project 360-Engine-for-Android by 360.

the class NowPlusContactSummaryTest method testSetAllUsersOffline.

public void testSetAllUsersOffline() {
    Log.i(LOG_TAG, "Create ContactSummaryTable");
    ContactSummaryTable.create(mTestDatabase.getWritableDatabase());
    Log.i(LOG_TAG, "Add a contact to ContactSummaryTable");
    final Contact contact = mTestModule.createDummyContactData();
    contact.localContactID = new Long(10);
    contact.nativeContactId = new Integer(11);
    ContactSummaryTable.addContact(contact, mTestDatabase.getWritableDatabase());
    Log.i(LOG_TAG, "Fetching a ContactSummary from ContactSummaryTable");
    final ContactSummary contactSummary = new ContactSummary();
    final ServiceStatus serviceStatus = ContactSummaryTable.fetchSummaryItem(contact.localContactID, contactSummary, mTestDatabase.getReadableDatabase());
    assertEquals(ServiceStatus.SUCCESS, serviceStatus);
    compareContactWithContactSummary(contact, contactSummary);
    // create a new user
    Hashtable<String, String> status = new Hashtable<String, String>();
    status.put("google", "online");
    status.put("microsoft", "online");
    status.put("mobile", "online");
    status.put("pc", "online");
    User user = new User("any", status);
    user.setLocalContactId(contactSummary.localContactID);
    // set him online
    assertEquals(ServiceStatus.SUCCESS, ContactSummaryTable.updateOnlineStatus(user));
    // fetch again
    final ContactSummary contactSummary2 = new ContactSummary();
    assertEquals(ServiceStatus.SUCCESS, ContactSummaryTable.fetchSummaryItem(user.getLocalContactId(), contactSummary2, mTestDatabase.getReadableDatabase()));
    // check if he's online
    assertEquals(OnlineStatus.ONLINE, contactSummary2.onlineStatus);
    // set offline
    assertEquals(ServiceStatus.SUCCESS, ContactSummaryTable.setOfflineStatus());
    // fetch again
    final ContactSummary contactSummary3 = new ContactSummary();
    assertEquals(ServiceStatus.SUCCESS, ContactSummaryTable.fetchSummaryItem(user.getLocalContactId(), contactSummary3, mTestDatabase.getReadableDatabase()));
    // check if it's offline
    assertEquals(OnlineStatus.OFFLINE, contactSummary3.onlineStatus);
}
Also used : ContactSummary(com.vodafone360.people.datatypes.ContactSummary) User(com.vodafone360.people.engine.presence.User) ServiceStatus(com.vodafone360.people.service.ServiceStatus) Hashtable(java.util.Hashtable) Contact(com.vodafone360.people.datatypes.Contact)

Aggregations

ContactSummary (com.vodafone360.people.datatypes.ContactSummary)18 ServiceStatus (com.vodafone360.people.service.ServiceStatus)18 Contact (com.vodafone360.people.datatypes.Contact)15 ContactDetail (com.vodafone360.people.datatypes.ContactDetail)9 Cursor (android.database.Cursor)8 Suppress (android.test.suitebuilder.annotation.Suppress)8 ContentValues (android.content.ContentValues)7 MediumTest (android.test.suitebuilder.annotation.MediumTest)6 Uri (android.net.Uri)5 VCardHelper (com.vodafone360.people.datatypes.VCardHelper)4 SmallTest (android.test.suitebuilder.annotation.SmallTest)3 SQLException (android.database.SQLException)2 SQLiteDatabase (android.database.sqlite.SQLiteDatabase)2 LargeTest (android.test.suitebuilder.annotation.LargeTest)2 User (com.vodafone360.people.engine.presence.User)2 Hashtable (java.util.Hashtable)2 SQLiteException (android.database.sqlite.SQLiteException)1 SQLiteStatement (android.database.sqlite.SQLiteStatement)1 ActivityContact (com.vodafone360.people.datatypes.ActivityContact)1 ActivityItem (com.vodafone360.people.datatypes.ActivityItem)1