Fix SQL statement error in SIM contact import
Introduced by change I1eb259f5a6a6b97150d67b9e1e8238529c3c0dba
Test
Ran GoogleContactsTests
Change-Id: Ib0c0a43aa5cf10162e37272b771efb78e906884f
diff --git a/src/com/android/contacts/common/database/SimContactDao.java b/src/com/android/contacts/common/database/SimContactDao.java
index 25fa65b..b5b6626 100644
--- a/src/com/android/contacts/common/database/SimContactDao.java
+++ b/src/com/android/contacts/common/database/SimContactDao.java
@@ -350,8 +350,8 @@
selectionArgs.add(contact.getName());
}
}
+ selectionBuilder.append(')');
}
- selectionBuilder.append(')');
return mResolver.query(Data.CONTENT_URI.buildUpon()
.appendQueryParameter(Data.VISIBLE_CONTACTS_ONLY, "true")
diff --git a/tests/src/com/android/contacts/common/database/SimContactDaoTests.java b/tests/src/com/android/contacts/common/database/SimContactDaoTests.java
index 265600c..ec03f0f 100644
--- a/tests/src/com/android/contacts/common/database/SimContactDaoTests.java
+++ b/tests/src/com/android/contacts/common/database/SimContactDaoTests.java
@@ -25,6 +25,7 @@
import android.support.annotation.RequiresApi;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.LargeTest;
+import android.support.test.filters.MediumTest;
import android.support.test.filters.SdkSuppress;
import android.support.test.filters.Suppress;
import android.support.test.runner.AndroidJUnit4;
@@ -45,10 +46,14 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import static android.os.Build.VERSION_CODES;
import static org.hamcrest.Matchers.allOf;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
@RunWith(Enclosed.class)
public class SimContactDaoTests {
@@ -197,6 +202,54 @@
}
}
+ @SdkSuppress(minSdkVersion = VERSION_CODES.M)
+ // Lollipop MR1 is required for removeAccountExplicitly
+ @RequiresApi(api = VERSION_CODES.LOLLIPOP_MR1)
+ @MediumTest
+ @RunWith(AndroidJUnit4.class)
+ public static class ExistingContactsTest {
+
+ private Context mContext;
+ private AccountsTestHelper mAccountHelper;
+ private AccountWithDataSet mAccount;
+ // We need to generate something distinct to prevent flakiness on devices that may not
+ // start with an empty CP2 DB
+ private String mNameSuffix = "";
+
+ @Before
+ public void setUp() {
+ mContext = InstrumentationRegistry.getTargetContext();
+ mAccountHelper = new AccountsTestHelper(InstrumentationRegistry.getContext());
+ mAccount = mAccountHelper.addTestAccount();
+ mNameSuffix = "testAt" + System.nanoTime();
+ }
+
+ @After
+ public void tearDown() {
+ mAccountHelper.cleanup();
+ }
+
+ @Test
+ public void findAccountsOfExistingContactsReturnsEmptyMapWhenNoMatchingContactsExist() {
+ final SimContactDao sut = createDao();
+
+ final List<SimContact> contacts = Arrays.asList(
+ new SimContact(1, "Name 1 " + mNameSuffix, "15095550101", null),
+ new SimContact(2, "Name 2 " + mNameSuffix, "15095550102", null),
+ new SimContact(3, "Name 3 " + mNameSuffix, "15095550103", null),
+ new SimContact(4, "Name 4 " + mNameSuffix, "15095550104", null));
+
+ final Map<AccountWithDataSet, Set<SimContact>> existing = sut
+ .findAccountsOfExistingSimContacts(contacts);
+
+ assertTrue(existing.isEmpty());
+ }
+
+ private SimContactDao createDao() {
+ return SimContactDao.create(mContext);
+ }
+ }
+
@LargeTest
// suppressed because failed assumptions are reported as test failures by the build server
@Suppress