/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
package org.mozilla.android.sync.test;
import org.mozilla.android.sync.test.helpers.HistoryHelpers;
import org.mozilla.gecko.sync.repositories.NullCursorException;
import org.mozilla.gecko.sync.repositories.android.AndroidBrowserHistoryDataExtender;
import org.mozilla.gecko.sync.repositories.android.ClientsDatabase;
import org.mozilla.gecko.sync.repositories.android.ClientsDatabaseAccessor;
import org.mozilla.gecko.sync.repositories.domain.ClientRecord;
import org.mozilla.gecko.sync.repositories.domain.HistoryRecord;
import android.database.Cursor;
import android.test.AndroidTestCase;
public class TestCachedSQLiteOpenHelper extends AndroidTestCase {
protected ClientsDatabase clientsDB;
protected AndroidBrowserHistoryDataExtender extender;
public void setUp() {
clientsDB = new ClientsDatabase(mContext);
extender = new AndroidBrowserHistoryDataExtender(mContext);
}
public void tearDown() {
clientsDB.close();
extender.close();
}
public void testUnclosedDatabasesDontInteract() throws NullCursorException {
// clientsDB gracefully does its thing and closes.
clientsDB.wipeClientsTable();
ClientRecord record = new ClientRecord();
String profileConst = ClientsDatabaseAccessor.PROFILE_ID;
clientsDB.store(profileConst, record);
clientsDB.close();
// extender does its thing but still hasn't closed.
HistoryRecord h = HistoryHelpers.createHistory1();
extender.store(h.guid, h.visits);
// Ensure items in the clientsDB are still accessible nonetheless.
Cursor cur = null;
try {
cur = clientsDB.fetchAllClients();
assertTrue(cur.moveToFirst());
assertEquals(1, cur.getCount());
} finally {
if (cur != null) {
cur.close();
}
}
}
}