package com.felkertech.cumulustv.test.tvs;
import android.app.Activity;
import android.net.Uri;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import com.felkertech.cumulustv.model.ChannelDatabase;
import com.felkertech.cumulustv.plugins.CumulusChannel;
import com.felkertech.cumulustv.tv.activities.LeanbackActivity;
import com.felkertech.cumulustv.utils.ActivityUtils;
import org.json.JSONException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/**
*Tests creating and editing of channels
*/
@RunWith(AndroidJUnit4.class)
public class MainPickerIntegrationTest extends ActivityInstrumentationTestCase2<LeanbackActivity> {
private static final String TAG = com.felkertech.cumulustv.test.TifDatabaseIntegrationTest.class.getSimpleName();
private static final String MEDIA_URL = "http://example.com/stream.mp4";
private Uri mDatabaseUri;
public MainPickerIntegrationTest() {
super(LeanbackActivity.class);
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
getActivity();
}
@Before
public void insertChannels() throws JSONException {
ChannelDatabase channelDatabase = ChannelDatabase.getInstance(getActivity());
CumulusChannel channel = new CumulusChannel.Builder()
.setName("Hello")
.setNumber("12-3")
.setMediaUrl(MEDIA_URL)
.build();
channelDatabase.add(channel);
}
@Test
public void addChannel() throws InterruptedException {
Activity activity = getActivity();
ActivityUtils.openPluginPicker(true, activity);
// Does it crash?
CountDownLatch latch = new CountDownLatch(1);
assertFalse(latch.await(2, TimeUnit.SECONDS));
/* assertEquals("",
((TextView) MainPicker.streamView).getText());*/
activity.finish();
}
@Test
public void editChannel() throws InterruptedException {
Activity activity = getActivity();
ActivityUtils.editChannel(activity, MEDIA_URL);
// Does it crash?
CountDownLatch latch = new CountDownLatch(1);
assertFalse(latch.await(2, TimeUnit.SECONDS));
/* assertEquals(MEDIA_URL,
((TextView) MainPicker.streamView).getText());*/
activity.finish();
}
@Test
public void updateChannel() throws InterruptedException, JSONException {
Activity activity = getActivity();
ActivityUtils.editChannel(activity, MEDIA_URL);
// Does it crash?
CountDownLatch latch = new CountDownLatch(1);
assertFalse(latch.await(2, TimeUnit.SECONDS));
// Update ChannelDatabase
ChannelDatabase channelDatabase = ChannelDatabase.getInstance(activity);
CumulusChannel channel = channelDatabase.findChannelByMediaUrl(MEDIA_URL);
channel = new CumulusChannel.Builder(channel)
.setNumber("456")
.build();
channelDatabase.update(channel);
// Check value
assertEquals("456", channelDatabase.findChannelByMediaUrl(MEDIA_URL).getNumber());
activity.finish();
}
@After
public void deleteChannels() throws JSONException {
ChannelDatabase channelDatabase = ChannelDatabase.getInstance(getActivity());
CumulusChannel channel = channelDatabase.findChannelByMediaUrl(MEDIA_URL);
channelDatabase.delete(channel);
}
}