package com.truckmuncher.app.data.sql;
import android.content.ContentValues;
import android.database.Cursor;
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 TruckPropertiesTableTest extends DatabaseTableTestCase {
@Test
public void allExpectedColumnsExist() {
ContentValues values = new ContentValues();
values.put(PublicContract.Truck.ID, "hello");
values.put(PublicContract.Truck.NAME, "hello");
values.put(PublicContract.Truck.IMAGE_URL, "hello");
values.put(PublicContract.Truck.KEYWORDS, "hello");
values.put(PublicContract.Truck.COLOR_PRIMARY, "hello");
values.put(PublicContract.Truck.COLOR_SECONDARY, "hello");
values.put(PublicContract.Truck.DESCRIPTION, "hello");
values.put(PublicContract.Truck.PHONE_NUMBER, "hello");
values.put(PublicContract.Truck.WEBSITE, "hello");
values.put(PublicContract.Truck.OWNER_ID, "hello");
assertThat(db.insert(Tables.TRUCK_PROPERTIES, null, values)).isEqualTo(1);
}
@Test
public void _idIsAutoIncrementPrimaryKey() {
ContentValues values = new ContentValues();
values.put(PublicContract.Truck.ID, 1234);
assertThat(db.insert(Tables.TRUCK_PROPERTIES, null, values)).isEqualTo(1);
values.put(PublicContract.Truck.ID, 6789);
assertThat(db.insert(Tables.TRUCK_PROPERTIES, null, values)).isEqualTo(2);
Cursor c = db.query(Tables.TRUCK_PROPERTIES, 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_PROPERTIES, null, values)).isEqualTo(1);
// Can't do a repeat
assertThat(db.insert(Tables.TRUCK_PROPERTIES, null, values)).isEqualTo(-1);
// Can do something different
values.put(PublicContract.Truck.ID, "world");
assertThat(db.insert(Tables.TRUCK_PROPERTIES, null, values)).isEqualTo(2);
}
@Test
public void tableHasSameNameAsInSqlScript() {
assertThat(Tables.TRUCK_PROPERTIES).isEqualTo("truck_properties");
}
}