package com.chalmers.feedlr.database;
import java.util.ArrayList;
import com.chalmers.feedlr.model.Feed;
import com.chalmers.feedlr.model.TwitterItem;
import com.chalmers.feedlr.model.User;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
public class DatabaseHelperTest extends AndroidTestCase {
DatabaseHelper dbHelper;
SQLiteDatabase db;
protected void setUp() throws Exception {
super.setUp();
getContext().deleteDatabase("feedlrDatabase");
dbHelper = new DatabaseHelper(getContext());
db = dbHelper.getWritableDatabase();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testAddFeed() {
// Testing if the feed gets added to the table.
String feedName = "testFeed";
Feed f1 = new Feed(feedName);
dbHelper.addFeed(f1);
long feedTableSize = DatabaseUtils.queryNumEntries(db,
DatabaseHelper.TABLE_FEED);
assertTrue(feedTableSize == 1);
// Checking the name if the name is saved correctly.
Cursor c = db
.query(DatabaseHelper.TABLE_FEED,
new String[] { DatabaseHelper.FEED_COLUMN_NAME },
DatabaseHelper.FEED_COLUMN_ID + " = ?",
new String[] { dbHelper.getFeed_id(f1) + "" }, null,
null, null);
c.moveToFirst();
assertTrue(c.getString(0).equals(feedName));
// Checking if adding the same feed again is possible.
assertFalse(dbHelper.addFeed(new Feed(feedName)));
}
public void testRemoveFeed() {
String feedName = "testFeed";
Feed f1 = new Feed(feedName);
dbHelper.addFeed(f1);
assertTrue(dbHelper.removeFeed(f1));
// Checks that no feeds are left.
long feedTableSize = DatabaseUtils.queryNumEntries(db,
DatabaseHelper.TABLE_FEED);
assertTrue(feedTableSize == 0);
// Trying to remove a feed that does not exist.
assertFalse(dbHelper.removeFeed(f1));
}
public void testClearFeeds() {
String feedName = "testFeed";
Feed f1 = new Feed(feedName);
dbHelper.addFeed(f1);
dbHelper.clearFeeds();
assertTrue(DatabaseUtils.queryNumEntries(db, DatabaseHelper.TABLE_FEED) == 0);
}
public void getFeedTableSize() {
Feed f1 = new Feed("feed1");
Feed f2 = new Feed("feed2");
Feed f3 = new Feed("feed3");
dbHelper.addFeed(f1);
dbHelper.addFeed(f2);
assertTrue(DatabaseUtils.queryNumEntries(db, DatabaseHelper.TABLE_FEED) == dbHelper.getFeedTableSize());
dbHelper.addFeed(f3);
assertTrue(DatabaseUtils.queryNumEntries(db, DatabaseHelper.TABLE_FEED) == dbHelper.getFeedTableSize());
// Testing so remove feed affects tablesize aswell.
dbHelper.removeFeed(f1);
assertTrue(DatabaseUtils.queryNumEntries(db, DatabaseHelper.TABLE_FEED) == dbHelper.getFeedTableSize());
}
public void testListFeeds() {
dbHelper.addFeed(new Feed("Feed1"));
dbHelper.addFeed(new Feed("Feed2"));
ArrayList<String> feeds = dbHelper.listFeeds();
assertTrue(feeds.get(0).equals("Feed1") && feeds.get(1).equals("Feed2"));
}
public void testAddUser() {
String username = "Olle";
String id = "507";
String URL = "pictureurl";
String source = "twitter";
User u1 = new User(id, username);
u1.setProfileImageURL(URL);
u1.setSource(source);
dbHelper.addUser(u1);
Cursor c = db.query(DatabaseHelper.TABLE_USER, null,
DatabaseHelper.USER_COLUMN_USERID + " = ?", new String[] { id
+ "" }, null, null, null);
c.moveToFirst();
String dbUsername = c.getString(1);
String dbId = c.getString(2);
String dbURL = c.getString(3);
String dbSource = c.getString(4);
assertTrue(dbUsername.equals(username));
assertTrue(dbId.equals(id + ""));
assertTrue(dbURL.equals(URL));
assertTrue(dbSource.equals(source));
// Testing to update a user;
String newUsername = "Daniel";
u1.setUserName(newUsername);
dbHelper.addUser(u1);
c = db.query(DatabaseHelper.TABLE_USER, null,
DatabaseHelper.USER_COLUMN_USERID + " = ?", new String[] { id
+ "" }, null, null, null);
c.moveToFirst();
assertTrue(c.getString(1).equals(newUsername));
// Trying to addUser with no id or username
assertFalse(dbHelper.addUser(new User(null, null)));
}
public void testRemoveUser() {
User u1 = new User("507", "Daniel");
u1.setSource("twitter");
dbHelper.addUser(u1);
dbHelper.removeUser(u1);
Cursor c = db.query(DatabaseHelper.TABLE_USER,
new String[] { DatabaseHelper.USER_COLUMN_USERID },
DatabaseHelper.USER_COLUMN_USERID + " = ?",
new String[] { u1.getId() + "" }, null, null, null);
assertTrue(c.getCount() == 0);
// Trying to remove a user that doesn't exist
assertFalse(dbHelper.removeUser(new User("509", "Daniel")));
}
public void testUpdateUser() {
String id = "507";
String newUsername = "Daniel Larsson";
User u1 = new User(id, "Daniel");
u1.setSource("twitter");
dbHelper.addUser(u1);
u1.setUserName(newUsername);
assertTrue(dbHelper.updateUser(u1));
Cursor c = db.query(DatabaseHelper.TABLE_USER, null,
DatabaseHelper.USER_COLUMN_USERID + " = ?", new String[] { id
+ "" }, null, null, null);
c.moveToFirst();
assertTrue(c.getString(1).equals(newUsername));
}
public void testUserExist() {
User u1 = new User("507", "Daniel");
u1.setSource("twitter");
dbHelper.addUser(u1);
assertTrue(dbHelper.userExist(u1));
// Trying a user that don't exist.
assertFalse(dbHelper.userExist(new User("104", "David")));
}
public void testClearUserTable() {
User u1 = new User("507", "Daniel");
u1.setSource("twitter");
dbHelper.addUser(u1);
dbHelper.clearUserTable();
assertTrue(DatabaseUtils.queryNumEntries(db, DatabaseHelper.TABLE_USER) == 0);
}
public void testGetUserTableSize() {
User u1 = new User("507", "Daniel");
u1.setSource("twitter");
dbHelper.addUser(u1);
User u2 = new User("509", "David");
u2.setSource("twitter");
dbHelper.addUser(u2);
assertTrue(DatabaseUtils.queryNumEntries(db, DatabaseHelper.TABLE_USER) == dbHelper.getUserTableSize());
// Updating user too make sure size doesn't increase.
u1.setUserName("Olle");
dbHelper.addUser(u1);
assertTrue(DatabaseUtils.queryNumEntries(db, DatabaseHelper.TABLE_USER) == dbHelper.getUserTableSize());
}
public void testAddItem(){
User u1 = new User("507", "Daniel");
u1.setSource("twitter");
long id = 13001;
String text = "test item";
String timestamp = "Wed Jul 04 13:37:11 +0100 2012";
TwitterItem i1 = new TwitterItem();
i1.setId(id + "");
i1.setText(text);
i1.setUser(u1);
i1.setTimestamp(timestamp);
assertTrue(dbHelper.addItem(i1));
Cursor c = db.query(DatabaseHelper.TABLE_ITEM, null,
DatabaseHelper.ITEM_COLUMN_ITEMID + " = ?", new String[] { id
+ "" }, null, null, null);
c.moveToFirst();
String dbId = c.getString(1);
String dbText = c.getString(2);
assertTrue(dbId.equals(id + ""));
assertTrue(dbText.equals(text));
// Testing to update the same item:
String dbNewText = "new test item";
i1.setText(dbNewText);
assertTrue(dbHelper.addItem(i1));
c = db.query(DatabaseHelper.TABLE_ITEM, null,
DatabaseHelper.ITEM_COLUMN_ITEMID + " = ?", new String[] { id
+ "" }, null, null, null);
c.moveToFirst();
assertTrue(dbNewText.equals(c.getString(2)));
// Trying to add a item with no ID;
assertFalse(dbHelper.addItem(new TwitterItem()));
}
public void testUpdateItem(){
User u1 = new User("507", "Daniel");
u1.setSource("twitter");
long id = 13001;
String text = "test item";
String updatedText = "updated test item";
String timestamp = "Wed Jul 04 13:37:11 +0100 2012";
TwitterItem i1 = new TwitterItem();
i1.setId(id + "");
i1.setText(text);
i1.setUser(u1);
i1.setTimestamp(timestamp);
dbHelper.addItem(i1);
i1.setText(updatedText);
assertTrue(dbHelper.updateItem(i1));
Cursor c = db.query(DatabaseHelper.TABLE_ITEM, null,
DatabaseHelper.ITEM_COLUMN_ITEMID + " = ?", new String[] { id
+ "" }, null, null, null);
c.moveToFirst();
String dbText = c.getString(2);
assertTrue(dbText.equals(updatedText));
i1.setId(null);
// Trying to update a item without id.
assertFalse(dbHelper.updateItem(i1));
}
public void testItemExist(){
User u1 = new User("507", "Daniel");
u1.setSource("twitter");
long id = 13001;
String text = "test item";
String timestamp = "Wed Jul 04 13:37:11 +0100 2012";
TwitterItem i1 = new TwitterItem();
i1.setId(id + "");
i1.setText(text);
i1.setUser(u1);
i1.setTimestamp(timestamp);
dbHelper.addItem(i1);
// Checking if itemExist adds
assertTrue(dbHelper.itemExist(i1));
TwitterItem i2 = new TwitterItem();
i2.setId(13002 + "");
i2.setText(text);
i2.setUser(u1);
i2.setTimestamp(timestamp);
// Checking if i2 exists.
assertFalse(dbHelper.itemExist(i2));
// Checking if a empty TwitterItem
assertFalse(dbHelper.itemExist(new TwitterItem()));
}
}