package org.liberty.android.fantastischmemo.test.provider;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.support.test.filters.SmallTest;
import org.junit.Test;
import org.liberty.android.fantastischmemo.integrationtest.TestHelper;
import org.liberty.android.fantastischmemo.test.AbstractExistingDBTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class CardProviderTest extends AbstractExistingDBTest {
private static String AUTHORITY = "org.liberty.android.fantastischmemo.cardprovider";
@SmallTest
@Test
public void testNonExistingDbShouldReturnNullCursor() {
ContentResolver cr = getContext().getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://" + AUTHORITY + "/" + "No_such_db_exists.db"+ "/count"),null, null, null, null);
assertNull(cursor);
}
@SmallTest
@Test
public void testCardCount() {
ContentResolver cr = getContext().getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://" + AUTHORITY + "/" + TestHelper.SAMPLE_DB_NAME + "/count"),null, null, null, null);
assertEquals(1, cursor.getCount());
assertTrue(cursor.moveToFirst());
assertEquals(28, cursor.getInt(0));
}
@SmallTest
@Test
public void testGetRandomCards() {
ContentResolver cr = getContext().getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://" + AUTHORITY + "/" + TestHelper.SAMPLE_DB_NAME + "/random/10"),null, null, null, null);
assertEquals(10, cursor.getCount());
}
@SmallTest
@Test
public void testGetByOrdinal() {
ContentResolver cr = getContext().getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://" + AUTHORITY + "/" + TestHelper.SAMPLE_DB_NAME + "/ordinal/3"),null, null, null, null);
assertEquals(1, cursor.getCount());
assertTrue(cursor.moveToFirst());
assertEquals(3, cursor.getInt(cursor.getColumnIndex("ordinal")));
assertEquals("face", cursor.getString(cursor.getColumnIndex("question")));
assertEquals("le visage", cursor.getString(cursor.getColumnIndex("answer")));
}
@SmallTest
@Test
public void testGetById() {
ContentResolver cr = getContext().getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://" + AUTHORITY + "/" + TestHelper.SAMPLE_DB_NAME + "/id/3"),null, null, null, null);
assertEquals(1, cursor.getCount());
assertTrue(cursor.moveToFirst());
assertEquals(3, cursor.getInt(cursor.getColumnIndex("ordinal")));
assertEquals("face", cursor.getString(cursor.getColumnIndex("question")));
assertEquals("le visage", cursor.getString(cursor.getColumnIndex("answer")));
}
@SmallTest
@Test
public void testGetCardWithStartOrdinalAndCount() {
ContentResolver cr = getContext().getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://" + AUTHORITY + "/" + TestHelper.SAMPLE_DB_NAME + "/start_ordinal/3/count/5"),null, null, null, null);
assertEquals(5, cursor.getCount());
assertTrue(cursor.moveToFirst());
assertEquals(3, cursor.getInt(cursor.getColumnIndex("ordinal")));
assertEquals("face", cursor.getString(cursor.getColumnIndex("question")));
assertEquals("le visage", cursor.getString(cursor.getColumnIndex("answer")));
assertTrue(cursor.moveToNext());
assertEquals(4, cursor.getInt(cursor.getColumnIndex("ordinal")));
}
@SmallTest
@Test
public void testGetAllCards() {
ContentResolver cr = getContext().getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://" + AUTHORITY + "/" + TestHelper.SAMPLE_DB_NAME + "/all"),null, null, null, null);
assertEquals(28, cursor.getCount());
assertTrue(cursor.moveToFirst());
assertEquals(1, cursor.getInt(cursor.getColumnIndex("ordinal")));
assertEquals("head", cursor.getString(cursor.getColumnIndex("question")));
assertTrue(cursor.moveToNext());
assertEquals(2, cursor.getInt(cursor.getColumnIndex("ordinal")));
}
}