package cat.foixench.apps.lectorss.test;
import cat.foixench.apps.lectorss.db.LectoRSSContentProvider;
import cat.foixench.apps.lectorss.db.RssContract;
import cat.foixench.apps.lectorss.db.RssContract.FeedsTable;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.test.ProviderTestCase2;
import android.test.mock.MockContentResolver;
import android.text.format.Time;
public class LectoRSSContentProviderTest extends ProviderTestCase2 <LectoRSSContentProvider> {
private MockContentResolver mContentResolver;
public LectoRSSContentProviderTest() {
super (LectoRSSContentProvider.class, RssContract.AUTHORITY);
}
/**
* configuracion del test
* @see android.test.ProviderTestCase2#setUp()
*/
@Override
protected void setUp() throws Exception {
super.setUp();
// obtenemos un content resolver de pruevas.
this.mContentResolver = getMockContentResolver();
}
public void testUri () {
Uri expected = Uri.parse("content://cat.foixench.apps.lectorss/feeds");
Uri actual = FeedsTable.getUri ();
assertEquals(expected, actual);
}
public void testInsert () {
ContentValues values = new ContentValues ();
Uri url = FeedsTable.getUri ();
Time ahora = new Time ();
ahora.setToNow();
values.put(FeedsTable.COLUMN_TITLE, "Titulo de prueba");
values.put(FeedsTable.COLUMN_LINK, "http://www.foo.com");
values.put(FeedsTable.COLUMN_PUB_DATE, Long.valueOf (ahora.toMillis (true)).toString ());
values.put(FeedsTable.COLUMN_DESCRIPTION, "En un lugar de la Mancha de cuyo nombre no quiero acordarme, no ha mucho tiempo que viv�a un hidalgo de los de lanza en astillero, adarga antigua, roc�n flaco y galgo corredor.");
values.put(FeedsTable.COLUMN_AUTHOR, "gothalo");
Uri newUri = mContentResolver.insert(url, values);
assertNotNull(newUri);
}
/**
* verificamos la funcionalidad de seleccion del content provider
*/
public void testQuery () {
// insertamos un par de valores para verificar la query
ContentValues values = new ContentValues ();
Uri url = FeedsTable.getUri ();
Time ahora = new Time ();
ahora.setToNow();
values.put(FeedsTable.COLUMN_TITLE, "Titulo de prueba");
values.put(FeedsTable.COLUMN_LINK, "http://www.foo.com");
values.put(FeedsTable.COLUMN_PUB_DATE, Long.valueOf (ahora.toMillis (true)).toString ());
values.put(FeedsTable.COLUMN_DESCRIPTION, "En un lugar de la Mancha de cuyo nombre no quiero acordarme, no ha mucho tiempo que viv�a un hidalgo de los de lanza en astillero, adarga antigua, roc�n flaco y galgo corredor.");
values.put(FeedsTable.COLUMN_AUTHOR, "tester");
Uri newUri = mContentResolver.insert(url, values);
assertNotNull(newUri);
values.clear();
values.put(FeedsTable.COLUMN_TITLE, "Titulo de prueba2");
values.put(FeedsTable.COLUMN_LINK, "http://www.fo2.com");
values.put(FeedsTable.COLUMN_PUB_DATE, Long.valueOf (ahora.toMillis (true)).toString ());
values.put(FeedsTable.COLUMN_DESCRIPTION, "En un lugar de la Mancha de cuyo nombre no quiero acordarme, no ha mucho tiempo que viv�a un hidalgo de los de lanza en astillero, adarga antigua, roc�n flaco y galgo corredor.");
values.put(FeedsTable.COLUMN_AUTHOR, "tester");
newUri = mContentResolver.insert(url, values);
assertNotNull(newUri);
// lanzamos la consulta
String[] projection = null;
String selection = FeedsTable.COLUMN_AUTHOR + "= ?";
String[] selectionArgs = {"tester"};
String sortOrder = FeedsTable._ID;
Cursor cursor = mContentResolver.query(url, projection, selection, selectionArgs, sortOrder );
cursor.moveToFirst();
assertEquals(cursor.getCount(), 2);
cursor.close ();
}
public void testQueryOne () {
// insertamos un registro para verificar la query
ContentValues values = new ContentValues ();
Uri url = FeedsTable.getUri ();
Time ahora = new Time ();
ahora.setToNow();
String title0 = "Titulo de prueba";
String link0 = "http://www.foo.com";
long pubDate0 = ahora.toMillis (true);
String description0 = "En un lugar de la Mancha de cuyo nombre no quiero acordarme, no ha mucho tiempo que viv�a un hidalgo de los de lanza en astillero, adarga antigua, roc�n flaco y galgo corredor.";
String author0 = "tester";
values.put(FeedsTable.COLUMN_TITLE, title0);
values.put(FeedsTable.COLUMN_LINK, link0);
values.put(FeedsTable.COLUMN_PUB_DATE, pubDate0);
values.put(FeedsTable.COLUMN_DESCRIPTION, description0);
values.put(FeedsTable.COLUMN_AUTHOR, author0);
Uri newUri = mContentResolver.insert(url, values);
assertNotNull(newUri);
Cursor cursor = mContentResolver.query (newUri, null, null, null, null);
assertEquals (cursor.getCount(), 1);
cursor.moveToFirst();
String title = cursor.getString (cursor.getColumnIndex (FeedsTable.COLUMN_TITLE));
String link = cursor.getString (cursor.getColumnIndex (FeedsTable.COLUMN_LINK));
long pubDate = cursor.getLong (cursor.getColumnIndex (FeedsTable.COLUMN_PUB_DATE));
String description = cursor.getString (cursor.getColumnIndex (FeedsTable.COLUMN_DESCRIPTION));
String author = cursor.getString (cursor.getColumnIndex (FeedsTable.COLUMN_AUTHOR));
// verificamos los datos del registro
assertEquals (title0, title);
assertEquals (link0, link);
assertEquals (pubDate0, pubDate);
assertEquals (description0, description);
assertEquals (author0, author);
cursor.close ();
}
}