Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c832119 authored by Brandon Maxwell's avatar Brandon Maxwell
Browse files

Adding tests for blockNumber

+ The ContactsCommon MockContentProvider now supports mocking the
insert method, added necessary tests.
+ Updating tests with changes to MockContentProvider
  + No longer need to call attachInfo on provider
  + Need to explicitly pass null for vararg query parameters when a
    null values are expected.

Bug=26664600

Change-Id: I5316f8ee8bb442aa36d807781124a936f09e0a9c
parent f7d74807
Loading
Loading
Loading
Loading
+65 −12
Original line number Original line Diff line number Diff line
@@ -16,16 +16,18 @@


package com.android.dialer.database;
package com.android.dialer.database;


import android.content.pm.ProviderInfo;
import android.content.ContentValues;
import android.net.Uri;
import android.net.Uri;
import android.test.InstrumentationTestCase;
import android.test.InstrumentationTestCase;
import android.test.mock.MockContentResolver;
import android.test.mock.MockContentResolver;


import com.android.contacts.common.test.mocks.MockContentProvider;
import com.android.contacts.common.test.mocks.MockContentProvider;
import com.android.contacts.common.test.mocks.MockContentProvider.Query;
import com.android.contacts.common.test.mocks.MockContentProvider.Query;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnBlockNumberListener;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberTypes;


import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CountDownLatch;
@@ -39,6 +41,7 @@ public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase
    private static final Integer ID = 1;
    private static final Integer ID = 1;
    private static final Uri BLOCKED_NUMBER_URI =
    private static final Uri BLOCKED_NUMBER_URI =
            Uri.withAppendedPath(FilteredNumberContract.AUTHORITY_URI, "filtered_numbers_table");
            Uri.withAppendedPath(FilteredNumberContract.AUTHORITY_URI, "filtered_numbers_table");
    private static final Uri EXPECTED_URI = Uri.fromParts("android", "google", "dialer");


    private final MockContentResolver mContentResolver = new MockContentResolver();
    private final MockContentResolver mContentResolver = new MockContentResolver();
    private final MockContentProvider mContentProvider = new MockContentProvider();
    private final MockContentProvider mContentProvider = new MockContentProvider();
@@ -46,16 +49,7 @@ public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase
    @Override
    @Override
    public void setUp() throws Exception {
    public void setUp() throws Exception {
        super.setUp();
        super.setUp();
        setUpProviderForAuthority(mContentProvider, FilteredNumberContract.AUTHORITY,
        mContentResolver.addProvider(FilteredNumberContract.AUTHORITY, mContentProvider);
                mContentResolver);
    }

    private void setUpProviderForAuthority(MockContentProvider provider, String authority,
            MockContentResolver contentResolver) {
        ProviderInfo providerInfo = new ProviderInfo();
        providerInfo.authority = authority;
        provider.attachInfo(null, providerInfo);
        contentResolver.addProvider(authority, provider);
    }
    }


    public void testIsBlockedNumber_NoResults() throws Throwable {
    public void testIsBlockedNumber_NoResults() throws Throwable {
@@ -123,7 +117,51 @@ public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase
        return mContentProvider.expectQuery(BLOCKED_NUMBER_URI).withProjection(
        return mContentProvider.expectQuery(BLOCKED_NUMBER_URI).withProjection(
                FilteredNumberColumns._ID)
                FilteredNumberColumns._ID)
                .withSelection(FilteredNumberColumns.TYPE + "="
                .withSelection(FilteredNumberColumns.TYPE + "="
                        + FilteredNumberTypes.BLOCKED_NUMBER);
                        + FilteredNumberTypes.BLOCKED_NUMBER, null);
    }

    public void testBlockNumber() throws Throwable {
        mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
                EXPECTED_URI);
        final BlockingArgumentCaptorOnBlockNumberListener listener =
                new BlockingArgumentCaptorOnBlockNumberListener();
        runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
                        E164_NUMBER, NUMBER, COUNTRY_ISO);
            }
        });
        assertTrue(listener.onBlockCompleteCalled.await(5000, TimeUnit.MILLISECONDS));
        assertSame(EXPECTED_URI, listener.uri);
        mContentProvider.verify();
    }

    public void testBlockNumber_NullNormalizedNumber() throws Throwable {
        mContentProvider.expectInsert(BLOCKED_NUMBER_URI, newBlockNumberContentValues(),
                EXPECTED_URI);
        final BlockingArgumentCaptorOnBlockNumberListener listener =
                new BlockingArgumentCaptorOnBlockNumberListener();
        runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                new FilteredNumberAsyncQueryHandler(mContentResolver).blockNumber(listener,
                        NUMBER, COUNTRY_ISO);
            }
        });
        assertTrue(listener.onBlockCompleteCalled.await(5000, TimeUnit.MILLISECONDS));
        assertSame(EXPECTED_URI, listener.uri);
        mContentProvider.verify();
    }

    private ContentValues newBlockNumberContentValues() {
        ContentValues contentValues = new ContentValues();
        contentValues.put(FilteredNumberColumns.NORMALIZED_NUMBER, E164_NUMBER);
        contentValues.put(FilteredNumberColumns.NUMBER, NUMBER);
        contentValues.put(FilteredNumberColumns.COUNTRY_ISO, COUNTRY_ISO);
        contentValues.put(FilteredNumberColumns.TYPE, FilteredNumberTypes.BLOCKED_NUMBER);
        contentValues.put(FilteredNumberColumns.SOURCE, FilteredNumberSources.USER);
        return contentValues;
    }
    }


    private class CheckBlockedListener implements OnCheckBlockedListener {
    private class CheckBlockedListener implements OnCheckBlockedListener {
@@ -169,4 +207,19 @@ public class FilteredNumberAsyncQueryHandlerTest extends InstrumentationTestCase
            return hasBlockedNumbers;
            return hasBlockedNumbers;
        }
        }
    }
    }

    private class BlockingArgumentCaptorOnBlockNumberListener implements OnBlockNumberListener {
        public final CountDownLatch onBlockCompleteCalled;
        public Uri uri;

        public BlockingArgumentCaptorOnBlockNumberListener() {
            onBlockCompleteCalled = new CountDownLatch(1);
        }

        @Override
        public void onBlockComplete(Uri uri) {
            this.uri = uri;
            onBlockCompleteCalled.countDown();
        }
    }
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.dialer.filterednumber;


import android.preference.PreferenceManager;
import android.preference.PreferenceManager;
import android.test.AndroidTestCase;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;


import com.android.contacts.common.test.mocks.ContactsMockContext;
import com.android.contacts.common.test.mocks.ContactsMockContext;
import com.android.contacts.common.test.mocks.MockContentProvider.Query;
import com.android.contacts.common.test.mocks.MockContentProvider.Query;
@@ -24,6 +25,7 @@ import com.android.dialer.database.FilteredNumberContract;
import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;


@SmallTest
public class FilteredNumbersUtilTest extends AndroidTestCase {
public class FilteredNumbersUtilTest extends AndroidTestCase {


    private static final String COUNTRY_ISO = "US";
    private static final String COUNTRY_ISO = "US";
+1 −1
Original line number Original line Diff line number Diff line
@@ -257,6 +257,6 @@ public class PhoneNumberInteractionTest extends InstrumentationTestCase {
                        Phone.MIMETYPE,
                        Phone.MIMETYPE,
                        Phone.CONTACT_ID)
                        Phone.CONTACT_ID)
                .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2',"
                .withSelection("mimetype IN ('vnd.android.cursor.item/phone_v2',"
                        + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL");
                        + " 'vnd.android.cursor.item/sip_address') AND data1 NOT NULL", null);
    }
    }
}
}