From c28f7969399fcb667d02de4030fba0fc40ff9130 Mon Sep 17 00:00:00 2001 From: Ta-wei Yen Date: Mon, 16 Oct 2017 12:53:06 -0700 Subject: Implement bulkInsert for VoicemailProvider DbModifierWithNotification will only generate one aggregated notification during bulk insert. Test: VoicemailProviderTest Change-Id: Ie808400d666c073642bdda175f714f9f3e2c68d6 Fixes: 21281858 --- .../providers/contacts/VoicemailProviderTest.java | 40 +++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'tests') diff --git a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java index 4fa935fa..1cd6646d 100644 --- a/tests/src/com/android/providers/contacts/VoicemailProviderTest.java +++ b/tests/src/com/android/providers/contacts/VoicemailProviderTest.java @@ -20,7 +20,6 @@ import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; -import android.os.BatteryStats.Uid.Proc; import android.os.ParcelFileDescriptor; import android.os.Process; import android.provider.CallLog; @@ -32,6 +31,7 @@ import android.test.MoreAsserts; import android.test.suitebuilder.annotation.SmallTest; import com.android.common.io.MoreCloseables; +import org.mockito.Mockito; import java.io.FileNotFoundException; import java.io.IOException; @@ -40,6 +40,9 @@ import java.io.OutputStream; import java.util.Arrays; import java.util.List; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.mock; + /** * Unit tests for {@link VoicemailContentProvider}. * @@ -51,7 +54,12 @@ import java.util.List; // TODO: Test that calltype and voicemail_uri are auto populated by the provider. @SmallTest public class VoicemailProviderTest extends BaseVoicemailProviderTest { - /** Fields specific to call_log provider that should not be exposed by voicemail provider. */ + + private static final String SYSTEM_PROPERTY_DEXMAKER_DEXCACHE = "dexmaker.dexcache"; + + /** + * Fields specific to call_log provider that should not be exposed by voicemail provider. + */ private static final String[] CALLLOG_PROVIDER_SPECIFIC_COLUMNS = { Calls.CACHED_NAME, Calls.CACHED_NUMBER_LABEL, @@ -60,23 +68,37 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest { Calls.VOICEMAIL_URI, Calls.COUNTRY_ISO }; - /** Total number of columns exposed by voicemail provider. */ + /** + * Total number of columns exposed by voicemail provider. + */ private static final int NUM_VOICEMAIL_FIELDS = 24; @Override protected void setUp() throws Exception { super.setUp(); setUpForOwnPermission(); + System.setProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE, getContext().getCacheDir().getPath()); + Thread.currentThread().setContextClassLoader(VoicemailContentProvider.class.getClassLoader()); addProvider(CallLogProviderTestable.class, CallLog.AUTHORITY); } - /** Returns the appropriate /voicemail URI. */ + @Override + protected void tearDown() throws Exception { + System.clearProperty(SYSTEM_PROPERTY_DEXMAKER_DEXCACHE); + DbModifierWithNotification.setVoicemailNotifierForTest(null); + } + + /** + * Returns the appropriate /voicemail URI. + */ private Uri voicemailUri() { return mUseSourceUri ? Voicemails.buildSourceUri(mActor.packageName) : Voicemails.CONTENT_URI; } - /** Returns the appropriate /status URI. */ + /** + * Returns the appropriate /status URI. + */ private Uri statusUri() { return mUseSourceUri ? Status.buildSourceUri(mActor.packageName) : Status.CONTENT_URI; @@ -118,6 +140,14 @@ public class VoicemailProviderTest extends BaseVoicemailProviderTest { } } + public void testBulkInsert() { + VoicemailNotifier notifier = mock(VoicemailNotifier.class); + DbModifierWithNotification.setVoicemailNotifierForTest(notifier); + mResolver.bulkInsert(voicemailUri(), + new ContentValues[] {getTestVoicemailValues(), getTestVoicemailValues()}); + verify(notifier, Mockito.times(1)).sendNotification(); + } + // Test to ensure that media content can be written and read back. public void testFileContent() throws Exception { Uri uri = insertVoicemail(); -- cgit v1.2.3