package droidkit.sqlite;
import android.test.ProviderTestCase2;
import junit.framework.Assert;
import droidkit.sqlite.mock.User;
import droidkit.test.BuildConfig;
/**
* @author Daniel Serdyukov
*/
public class SQLiteUpdateDeleteTest extends ProviderTestCase2<SQLiteProvider> {
private SQLite mSQLite;
public SQLiteUpdateDeleteTest() {
super(SQLiteProvider.class, BuildConfig.APPLICATION_ID);
SQLite.attach(BuildConfig.APPLICATION_ID);
}
@Override
public void setUp() throws Exception {
super.setUp();
mSQLite = SQLite.with(getMockContext());
final User user = new User();
user.setName("John");
user.setAge(26);
mSQLite.insert(user);
}
public void testUpdate() throws Exception {
final User john = mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first();
Assert.assertNotNull(john);
john.setName("Jane");
mSQLite.update(john);
final User jane = mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "Jane")
.first();
Assert.assertNotNull(jane);
Assert.assertEquals(john.getId(), jane.getId());
Assert.assertEquals("Jane", jane.getName());
}
public void testUpdateInTransaction() throws Exception {
final User john = mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first();
Assert.assertNotNull(john);
john.setName("Jane");
mSQLite.beginTransaction();
mSQLite.update(john);
mSQLite.commitTransaction();
final User jane = mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "Jane")
.first();
Assert.assertNotNull(jane);
Assert.assertEquals(john.getId(), jane.getId());
Assert.assertEquals("Jane", jane.getName());
}
public void testDelete() throws Exception {
final User john = mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first();
Assert.assertNotNull(john);
mSQLite.delete(john);
Assert.assertNull(mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first());
}
public void testDeleteInTransaction() throws Exception {
final User john = mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first();
Assert.assertNotNull(john);
mSQLite.beginTransaction();
mSQLite.delete(john);
mSQLite.commitTransaction();
Assert.assertNull(mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first());
}
public void testTransactionRollback() throws Exception {
final User john = mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first();
Assert.assertNotNull(john);
mSQLite.beginTransaction();
mSQLite.delete(john);
mSQLite.rollbackTransaction();
Assert.assertNotNull(mSQLite.where(User.class)
.equalTo(User.Columns.NAME, "John")
.first());
}
}