package com.pocketreddit.library.datasources;
import java.util.List;
import android.test.AndroidTestCase;
import android.util.Log;
import com.pocketreddit.library.datasources.DataSourceException;
import com.pocketreddit.library.datasources.RedditDataSource;
import com.pocketreddit.library.things.Link;
import com.pocketreddit.library.things.Subreddit;
import com.pocketreddit.library.things.Thing;
public class RedditDataSourceTest extends AndroidTestCase {
private static final String TAG = RedditDataSourceTest.class.getName();
private RedditDataSource ds;
@Override
protected void setUp() throws Exception {
super.setUp();
ds = new RedditDataSource();
ds.setDataSource(new MockDataSource(getContext()));
}
public void testGetSubreddits() {
try {
List<Subreddit> subreddits = ds.getSubreddits(null).getChildren();
for (Subreddit subreddit : subreddits) {
Log.v(TAG, "subreddit: " + subreddit.getDisplayName());
}
} catch (DataSourceException e) {
logAndFail("failed to get subreddits", e);
}
}
public void testGetLinksForSubreddit() {
try {
getLinksForSubreddits("askreddit", "nba", "videos", "programming");
} catch (DataSourceException e) {
logAndFail("failed to get links for subreddit", e);
}
}
private void getLinksForSubreddits(String... subreddits) throws DataSourceException {
for (String subreddit : subreddits) {
List<Link> links = ds.getLinksForSubreddit(subreddit).getChildren();
for (Link link : links) {
Log.v(TAG, "link: " + link);
}
}
}
public void testGetCommentsForLink() {
try {
Link link = new Link();
link.setPermalink("/r/politics/comments/wf1t2/melinda_gates_pledges_560000000_for_contraception/");
List<? extends Thing> comments = ds.getCommentsForLink(link).getChildren();
for (Thing comment : comments) {
Log.v(TAG, "comment: " + comment);
}
} catch (DataSourceException e) {
logAndFail("Failed to get comments for link", e);
}
}
public void testGetSubreddit() {
try {
Subreddit subreddit = ds.getSubreddit("programming");
Log.v(TAG, "subreddit programming found: " + subreddit);
} catch (DataSourceException e) {
logAndFail("Could not get subreddit.", e);
}
}
public void testGetDefaultSubreddits() {
try {
List<Subreddit> subreddits = ds.getDefaultSubreddits().getChildren();
for (Subreddit subreddit : subreddits) {
Log.v(TAG, "subreddit: " + subreddit.getDisplayName());
}
} catch (DataSourceException e) {
logAndFail("failed to get default subreddits", e);
}
}
private void logAndFail(String message, Throwable t) {
Log.e(TAG, message, t);
fail(message);
}
}