mobile/android/tests/background/junit3/src/db/TestFennecTabsStorage.java

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 package org.mozilla.gecko.background.db;
     6 import org.json.simple.JSONArray;
     7 import org.mozilla.gecko.db.BrowserContract;
     8 import org.mozilla.gecko.sync.repositories.android.BrowserContractHelpers;
    10 import android.app.Activity;
    11 import android.content.ContentProviderClient;
    12 import android.content.ContentResolver;
    13 import android.content.ContentValues;
    14 import android.database.Cursor;
    15 import android.net.Uri;
    16 import android.os.RemoteException;
    17 import android.test.ActivityInstrumentationTestCase2;
    19 /**
    20  * Exercise Fennec's tabs provider.
    21  *
    22  * @author rnewman
    23  *
    24  */
    25 public class TestFennecTabsStorage extends ActivityInstrumentationTestCase2<Activity> {
    26   public static final String TEST_CLIENT_GUID = "test guid"; // Real GUIDs never contain spaces.
    27   public static final String TEST_CLIENT_NAME = "test client name";
    29   public static final String TABS_CLIENT_GUID_IS = BrowserContract.Tabs.CLIENT_GUID + " = ?";
    31   protected Tab testTab1;
    32   protected Tab testTab2;
    33   protected Tab testTab3;
    35   public TestFennecTabsStorage() {
    36     super(Activity.class);
    37   }
    39   protected ContentProviderClient getClientsClient() {
    40     final ContentResolver cr = getInstrumentation().getTargetContext().getApplicationContext().getContentResolver();
    41     return cr.acquireContentProviderClient(BrowserContractHelpers.CLIENTS_CONTENT_URI);
    42   }
    44   protected ContentProviderClient getTabsClient() {
    45     final ContentResolver cr = getInstrumentation().getTargetContext().getApplicationContext().getContentResolver();
    46     return cr.acquireContentProviderClient(BrowserContractHelpers.TABS_CONTENT_URI);
    47   }
    49   protected int deleteAllTestTabs(final ContentProviderClient tabsClient) throws RemoteException {
    50     if (tabsClient == null) {
    51       return -1;
    52     }
    53     return tabsClient.delete(BrowserContractHelpers.TABS_CONTENT_URI, TABS_CLIENT_GUID_IS, new String[] { TEST_CLIENT_GUID });
    54   }
    56   @Override
    57   protected void tearDown() throws Exception {
    58     deleteAllTestTabs(getTabsClient());
    59   }
    61   @SuppressWarnings("unchecked")
    62   protected void insertSomeTestTabs(ContentProviderClient tabsClient) throws RemoteException {
    63     final JSONArray history1 = new JSONArray();
    64     history1.add("http://test.com/test1.html");
    65     testTab1 = new Tab("test title 1", "http://test.com/test1.png", history1, 1000);
    67     final JSONArray history2 = new JSONArray();
    68     history2.add("http://test.com/test2.html#1");
    69     history2.add("http://test.com/test2.html#2");
    70     history2.add("http://test.com/test2.html#3");
    71     testTab2 = new Tab("test title 2", "http://test.com/test2.png", history2, 2000);
    73     final JSONArray history3 = new JSONArray();
    74     history3.add("http://test.com/test3.html#1");
    75     history3.add("http://test.com/test3.html#2");
    76     testTab3 = new Tab("test title 3", "http://test.com/test3.png", history3, 3000);
    78     tabsClient.insert(BrowserContractHelpers.TABS_CONTENT_URI, testTab1.toContentValues(TEST_CLIENT_GUID, 0));
    79     tabsClient.insert(BrowserContractHelpers.TABS_CONTENT_URI, testTab2.toContentValues(TEST_CLIENT_GUID, 1));
    80     tabsClient.insert(BrowserContractHelpers.TABS_CONTENT_URI, testTab3.toContentValues(TEST_CLIENT_GUID, 2));
    81   }
    83   // Sanity.
    84   public void testObtainCP() {
    85     final ContentProviderClient clientsClient = getClientsClient();
    86     assertNotNull(clientsClient);
    87     clientsClient.release();
    89     final ContentProviderClient tabsClient = getTabsClient();
    90     assertNotNull(tabsClient);
    91     tabsClient.release();
    92   }
    94   public void testWipeClients() throws RemoteException {
    95     final Uri uri = BrowserContractHelpers.CLIENTS_CONTENT_URI;
    96     final ContentProviderClient clientsClient = getClientsClient();
    98     // Have to ensure that it's empty…
    99     clientsClient.delete(uri, null, null);
   101     int deleted = clientsClient.delete(uri, null, null);
   102     assertEquals(0, deleted);
   103   }
   105   public void testWipeTabs() throws RemoteException {
   106     final ContentProviderClient tabsClient = getTabsClient();
   108     // Have to ensure that it's empty…
   109     deleteAllTestTabs(tabsClient);
   111     int deleted = deleteAllTestTabs(tabsClient);
   112     assertEquals(0, deleted);
   113   }
   115   public void testStoreAndRetrieveClients() throws RemoteException {
   116     final Uri uri = BrowserContractHelpers.CLIENTS_CONTENT_URI;
   117     final ContentProviderClient clientsClient = getClientsClient();
   119     // Have to ensure that it's empty…
   120     clientsClient.delete(uri, null, null);
   122     final long now = System.currentTimeMillis();
   123     final ContentValues first = new ContentValues();
   124     final ContentValues second = new ContentValues();
   125     first.put(BrowserContract.Clients.GUID, "abcdefghijkl");
   126     first.put(BrowserContract.Clients.NAME, "Frist Psot");
   127     first.put(BrowserContract.Clients.LAST_MODIFIED, now + 1);
   128     second.put(BrowserContract.Clients.GUID, "mnopqrstuvwx");
   129     second.put(BrowserContract.Clients.NAME, "Second!!1!");
   130     second.put(BrowserContract.Clients.LAST_MODIFIED, now + 2);
   132     ContentValues[] values = new ContentValues[] { first, second };
   133     final int inserted = clientsClient.bulkInsert(uri, values);
   134     assertEquals(2, inserted);
   136     final String since = BrowserContract.Clients.LAST_MODIFIED + " >= ?";
   137     final String[] nowArg = new String[] { String.valueOf(now) };
   138     final String guidAscending = BrowserContract.Clients.GUID + " ASC";
   139     Cursor cursor = clientsClient.query(uri, null, since, nowArg, guidAscending);
   141     assertNotNull(cursor);
   142     try {
   143       assertTrue(cursor.moveToFirst());
   144       assertEquals(2, cursor.getCount());
   146       final String g1 = cursor.getString(cursor.getColumnIndexOrThrow(BrowserContract.Clients.GUID));
   147       final String n1 = cursor.getString(cursor.getColumnIndexOrThrow(BrowserContract.Clients.NAME));
   148       final long m1   = cursor.getLong(cursor.getColumnIndexOrThrow(BrowserContract.Clients.LAST_MODIFIED));
   149       assertEquals(first.get(BrowserContract.Clients.GUID), g1);
   150       assertEquals(first.get(BrowserContract.Clients.NAME), n1);
   151       assertEquals(now + 1, m1);
   153       assertTrue(cursor.moveToNext());
   154       final String g2 = cursor.getString(cursor.getColumnIndexOrThrow(BrowserContract.Clients.GUID));
   155       final String n2 = cursor.getString(cursor.getColumnIndexOrThrow(BrowserContract.Clients.NAME));
   156       final long m2   = cursor.getLong(cursor.getColumnIndexOrThrow(BrowserContract.Clients.LAST_MODIFIED));
   157       assertEquals(second.get(BrowserContract.Clients.GUID), g2);
   158       assertEquals(second.get(BrowserContract.Clients.NAME), n2);
   159       assertEquals(now + 2, m2);
   161       assertFalse(cursor.moveToNext());
   162     } finally {
   163       cursor.close();
   164     }
   166     int deleted = clientsClient.delete(uri, null, null);
   167     assertEquals(2, deleted);
   168   }
   170   public void testTabFromCursor() throws Exception {
   171     final ContentProviderClient tabsClient = getTabsClient();
   173     deleteAllTestTabs(tabsClient);
   174     insertSomeTestTabs(tabsClient);
   176     final String positionAscending = BrowserContract.Tabs.POSITION + " ASC";
   177     Cursor cursor = null;
   178     try {
   179       cursor = tabsClient.query(BrowserContractHelpers.TABS_CONTENT_URI, null, TABS_CLIENT_GUID_IS, new String[] { TEST_CLIENT_GUID }, positionAscending);
   180       assertEquals(3, cursor.getCount());
   182       cursor.moveToFirst();
   183       final Tab parsed1 = Tab.fromCursor(cursor);
   184       assertEquals(testTab1, parsed1);
   186       cursor.moveToNext();
   187       final Tab parsed2 = Tab.fromCursor(cursor);
   188       assertEquals(testTab2, parsed2);
   190       cursor.moveToPosition(2);
   191       final Tab parsed3 = Tab.fromCursor(cursor);
   192       assertEquals(testTab3, parsed3);
   193     } finally {
   194       cursor.close();
   195     }
   196   }
   197 }

mercurial