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 MenuItemTableTest extends DatabaseTableTestCase {
@Test
public void allExpectedColumnsExist() {
ContentValues values = new ContentValues();
values.put(PublicContract.MenuItem.ID, "hello");
values.put(PublicContract.MenuItem.NAME, "hello");
values.put(PublicContract.MenuItem.PRICE, 3.99);
values.put(PublicContract.MenuItem.IS_AVAILABLE, true);
values.put(PublicContract.MenuItem.TAGS, "hello");
values.put(PublicContract.MenuItem.CATEGORY_ID, "hello");
values.put(PublicContract.MenuItem.NOTES, "hello");
values.put(PublicContract.MenuItem.ORDER_IN_CATEGORY, 2);
values.put(Contract.MenuItem.IS_DIRTY, true);
assertThat(db.insert(Tables.MENU_ITEM, null, values)).isEqualTo(1);
}
@Test
public void _idIsAutoIncrementPrimaryKey() {
ContentValues values = new ContentValues();
values.put(PublicContract.MenuItem.ID, 1234);
assertThat(db.insert(Tables.MENU_ITEM, null, values)).isEqualTo(1);
values.put(PublicContract.MenuItem.ID, 6789);
assertThat(db.insert(Tables.MENU_ITEM, null, values)).isEqualTo(2);
Cursor c = db.query(Tables.MENU_ITEM, new String[]{PublicContract.MenuItem._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.MenuItem.ID, "hello");
assertThat(db.insert(Tables.MENU_ITEM, null, values)).isEqualTo(1);
// Can't do a repeat
assertThat(db.insert(Tables.MENU_ITEM, null, values)).isEqualTo(-1);
// Can do something different
values.put(PublicContract.MenuItem.ID, "world");
assertThat(db.insert(Tables.MENU_ITEM, null, values)).isEqualTo(2);
}
@Test
public void isDirtyDefaultsToFalse() {
ContentValues values = new ContentValues();
values.put(PublicContract.MenuItem.ID, "hello");
assertThat(db.insert(Tables.MENU_ITEM, null, values)).isEqualTo(1);
Cursor cursor = db.query(Tables.MENU_ITEM, null, null, null, null, null, null);
assertThat(cursor).isNotNull();
assertThat(cursor.moveToFirst()).isTrue();
assertThat(cursor.getInt(cursor.getColumnIndexOrThrow(Contract.MenuItem.IS_DIRTY))).isZero();
}
@Test
public void tableHasSameNameAsInSqlScript() {
assertThat(Tables.MENU_ITEM).isEqualTo("menu_item");
}
}