package com.example.android.tvleanback;
import android.content.ContentValues;
import com.example.android.tvleanback.data.VideoContract;
import com.example.android.tvleanback.data.VideoDbBuilder;
import junit.framework.Assert;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import java.io.IOException;
import java.util.List;
@RunWith(RobolectricGradleTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml")
public class VideoDbUnitTest {
private static final String TAG = "VideoDbTest";
public VideoDbUnitTest() { }
@Test
public void getVideosFromLocalJson() throws JSONException {
// Create some test videos
JSONArray mediaArray = new JSONArray();
JSONObject video1 = new JSONObject();
video1.put(VideoDbBuilder.TAG_TITLE, "New Dad")
.put(VideoDbBuilder.TAG_DESCRIPTION, "Google+ Instant Upload backs up your photos")
.put(VideoDbBuilder.TAG_STUDIO, "Google+")
.put(VideoDbBuilder.TAG_SOURCES,
new JSONArray().put("http://www.example.com/new_dad.mp4"));
mediaArray.put(video1);
JSONObject video2 = new JSONObject();
video2.put(VideoDbBuilder.TAG_TITLE, "Pet Dog")
.put(VideoDbBuilder.TAG_DESCRIPTION, "Google+ lets you share videos of your pets")
.put(VideoDbBuilder.TAG_STUDIO, "Google+")
.put(VideoDbBuilder.TAG_SOURCES,
new JSONArray().put("http://www.example.com/pet_dog.mp4"));
mediaArray.put(video2);
JSONObject myMediaGooglePlus = new JSONObject();
myMediaGooglePlus.put(VideoDbBuilder.TAG_CATEGORY, "Google+")
.put(VideoDbBuilder.TAG_MEDIA, mediaArray);
JSONObject myMedia = new JSONObject();
JSONArray mediaCategories = new JSONArray();
mediaCategories.put(myMediaGooglePlus);
myMedia.put(VideoDbBuilder.TAG_GOOGLE_VIDEOS, mediaCategories);
VideoDbBuilder videoDbBuilder = new VideoDbBuilder();
List<ContentValues> contentValuesList = videoDbBuilder.buildMedia(myMedia);
Assert.assertEquals(
"Google+",
contentValuesList.get(0).getAsString(VideoContract.VideoEntry.COLUMN_CATEGORY)
);
Assert.assertEquals(
"Google+",
contentValuesList.get(1).getAsString(VideoContract.VideoEntry.COLUMN_CATEGORY)
);
Assert.assertEquals(
"Google+",
contentValuesList.get(0).getAsString(VideoContract.VideoEntry.COLUMN_STUDIO)
);
Assert.assertEquals(
"Google+",
contentValuesList.get(1).getAsString(VideoContract.VideoEntry.COLUMN_STUDIO)
);
Assert.assertEquals(
"New Dad",
contentValuesList.get(0).getAsString(VideoContract.VideoEntry.COLUMN_NAME)
);
Assert.assertEquals(
"Pet Dog",
contentValuesList.get(1).getAsString(VideoContract.VideoEntry.COLUMN_NAME)
);
Assert.assertEquals(
"Google+ lets you share videos of your pets",
contentValuesList.get(1).getAsString(VideoContract.VideoEntry.COLUMN_DESC)
);
}
@Test
public void getVideosFromServer() throws IOException, JSONException {
String serverUrl = "https://storage.googleapis.com/android-tv/android_tv_videos_new.json";
VideoDbBuilder videoDbBuilder = new VideoDbBuilder();
List<ContentValues> contentValuesList = videoDbBuilder.fetch(serverUrl);
Assert.assertTrue(contentValuesList.size() > 0);
Assert.assertTrue(!contentValuesList.get(0)
.getAsString(VideoContract.VideoEntry.COLUMN_NAME).isEmpty());
}
}