package com.truckmuncher.app.data.sql;
import android.content.ContentValues;
import android.database.Cursor;
import com.truckmuncher.app.data.Contract;
import com.truckmuncher.app.data.PublicContract;
import com.truckmuncher.testlib.ReadableRobolectricTestRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(ReadableRobolectricTestRunner.class)
public class TruckStateTableTest extends DatabaseTableTestCase {
@Test
public void allExpectedColumnsExist() {
ContentValues values = new ContentValues();
values.put(PublicContract.Truck.ID, "hello");
values.put(PublicContract.Truck.IS_SERVING, true);
values.put(PublicContract.Truck.LATITUDE, 43.99);
values.put(PublicContract.Truck.LONGITUDE, 53.99);
values.put(Contract.TruckState.IS_DIRTY, true);
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(1);
}
@Test
public void _idIsAutoIncrementPrimaryKey() {
ContentValues values = new ContentValues();
values.put(PublicContract.Truck.ID, 1234);
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(1);
values.put(PublicContract.Truck.ID, 6789);
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(2);
Cursor c = db.query(Tables.TRUCK_STATE, new String[]{PublicContract.Truck._ID}, null, null, null, null, null);
assertThat(c.getCount()).isEqualTo(2);
assertThat(c.moveToFirst()).isTrue();
assertThat(c.getInt(0)).isEqualTo(1);
assertThat(c.moveToNext()).isTrue();
assertThat(c.getInt(0)).isEqualTo(2);
}
@Test
public void idColumnIsUnique() {
ContentValues values = new ContentValues();
values.put(PublicContract.Truck.ID, "hello");
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(1);
// Can't do a repeat
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(-1);
// Can do something different
values.put(PublicContract.Truck.ID, "world");
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(2);
}
@Test
public void isDirtyDefaultsToFalse() {
ContentValues values = new ContentValues();
values.put(PublicContract.Truck.ID, "hello");
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(1);
Cursor cursor = db.query(Tables.TRUCK_STATE, null, null, null, null, null, null);
assertThat(cursor).isNotNull();
assertThat(cursor.moveToFirst()).isTrue();
assertThat(cursor.getInt(cursor.getColumnIndexOrThrow(Contract.TruckState.IS_DIRTY))).isZero();
}
@Test
public void isServingDefaultsToFalse() {
ContentValues values = new ContentValues();
values.put(PublicContract.Truck.ID, "hello");
assertThat(db.insert(Tables.TRUCK_STATE, null, values)).isEqualTo(1);
Cursor cursor = db.query(Tables.TRUCK_STATE, null, null, null, null, null, null);
assertThat(cursor).isNotNull();
assertThat(cursor.moveToFirst()).isTrue();
assertThat(cursor.getInt(cursor.getColumnIndexOrThrow(PublicContract.Truck.IS_SERVING))).isZero();
}
@Test
public void tableHasSameNameAsInSqlScript() {
assertThat(Tables.TRUCK_STATE).isEqualTo("truck_state");
}
}