diff --git a/.travis.yml b/.travis.yml
index 7f4a898138b8015f0cbcbe071cf38b721f9d1a20..dccc6e6d6f4fa863ea00d1946653cf52d068d29a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,7 +12,7 @@ android:
     - extra-google-googleplayservices
     - extra-google-m2repository
     - extra-android-m2repository
-    - addon-google_apis-google-27
+    - addon-google_apis-google-22
     - sys-img-armeabi-v7a-android-22
 env:
   global:
diff --git a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/api/MockAPI.java b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/api/MockAPI.java
index fdae20c7426760ff9b9e575c0260cd41ad1feba2..fb248a3a3848d1a4c5990df39205c47f6a2a4d8d 100644
--- a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/api/MockAPI.java
+++ b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/api/MockAPI.java
@@ -17,7 +17,7 @@ public class MockAPI implements ComicApi {
             setImg("https://cataas.com/c");
             setDay("4");
             setMonth("4");
-            setNum(10);
+            setNum(2);
             setTitle("Title");
             setYear("2000");
         }};
@@ -60,22 +60,22 @@ public class MockAPI implements ComicApi {
     @Override
     public Call<Comic> getComic(Long id) {
         Comic comic = null;
-        if (10L == id) {
+        if (2L == id) {
             comic = new Comic() {{
                 setImg("https://cataas.com/c");
                 setDay("4");
                 setMonth("4");
-                setNum(10);
+                setNum(2);
                 setTitle("Title");
                 setYear("2000");
             }};
 
-        } else if (9L == id) {
+        } else if (1L == id) {
             comic = new Comic() {{
                 setImg("https://cataas.com/cat");
                 setDay("1");
                 setMonth("1");
-                setNum(9);
+                setNum(1);
                 setTitle("Tittle");
                 setYear("1999");
             }};
diff --git a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/db/MockDAO.java b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/db/MockDAO.java
index 3455de785905e561b973afac2db64f929b8b7e4d..b534777f670b23c0f8eb9ed9d37e073cd4ccf1e1 100644
--- a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/db/MockDAO.java
+++ b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/mock/db/MockDAO.java
@@ -16,7 +16,7 @@ public class MockDAO implements ComicsDAO {
             setImg("https://cataas.com/c");
             setDay("4");
             setMonth("4");
-            setNum(10L);
+            setNum(2L);
             setTitle("Title");
             setYear("2000");
         }});
@@ -24,7 +24,7 @@ public class MockDAO implements ComicsDAO {
             setImg("https://cataas.com/cat");
             setDay("1");
             setMonth("1");
-            setNum(9L);
+            setNum(1L);
             setTitle("Tittle");
             setYear("1999");
         }});
diff --git a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/DetailTest.java b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/DetailTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..67c6e66bce339ecb7e5a11e523cf38f382506306
--- /dev/null
+++ b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/DetailTest.java
@@ -0,0 +1,64 @@
+package me.szaki.xkcd.xkcdbrowser.test;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import me.szaki.xkcd.xkcdbrowser.BuildConfig;
+import me.szaki.xkcd.xkcdbrowser.TestHelper;
+import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
+import me.szaki.xkcd.xkcdbrowser.network.model.Comic;
+import me.szaki.xkcd.xkcdbrowser.ui.detail.DetailPresenter;
+import me.szaki.xkcd.xkcdbrowser.ui.detail.DetailScreen;
+import me.szaki.xkcd.xkcdbrowser.ui.main.MainPresenter;
+import me.szaki.xkcd.xkcdbrowser.ui.main.MainScreen;
+
+import static junit.framework.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(constants = BuildConfig.class)
+public class DetailTest {
+    private DetailPresenter detailPresenter;
+    private DetailScreen detailScreen;
+    private CountDownLatch latch;
+
+    @Before
+    public void Setup() {
+        TestHelper.setTestInjector();
+        detailScreen = mock(DetailScreen.class);
+        detailPresenter = new DetailPresenter();
+        detailPresenter.attachScreen(detailScreen);
+        latch = new CountDownLatch(1);
+    }
+
+    @Test
+    public void getComicByNum() throws InterruptedException {
+        detailPresenter.getComicByNum(2L);
+        latch.await(200, TimeUnit.MILLISECONDS);
+
+        ArgumentCaptor<ComicStrip> comiCaptor = ArgumentCaptor.forClass(ComicStrip.class);
+        verify(detailScreen).dataReceived(comiCaptor.capture());
+
+        assertEquals(2L, (long) comiCaptor.getValue().getNum());
+        assertEquals("4", comiCaptor.getValue().getDay());
+        assertEquals("4", comiCaptor.getValue().getMonth());
+        assertEquals("2000", comiCaptor.getValue().getYear());
+        assertEquals("Title", comiCaptor.getValue().getTitle());
+        assertEquals("https://cataas.com/c", comiCaptor.getValue().getImg());
+    }
+
+    @After
+    public void Teardown() {
+        detailPresenter.detachScreen();
+    }
+}
diff --git a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/FavoritesTest.java b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/FavoritesTest.java
index ea37d49290e20d73474f687e14fdeee2565badfe..052af4234fba9d6dfa53eaa9f9400e59d25929be 100644
--- a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/FavoritesTest.java
+++ b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/FavoritesTest.java
@@ -55,14 +55,14 @@ public class FavoritesTest {
 
         List<ComicStrip> list = comiCaptor.getValue();
 
-        assertEquals(10L, (long) list.get(0).getNum());
+        assertEquals(2L, (long) list.get(0).getNum());
         assertEquals("4", list.get(0).getDay());
         assertEquals("4", list.get(0).getMonth());
         assertEquals("2000", list.get(0).getYear());
         assertEquals("Title", list.get(0).getTitle());
         assertEquals("https://cataas.com/c", list.get(0).getImg());
 
-        assertEquals(9L, (long) list.get(1).getNum());
+        assertEquals(1L, (long) list.get(1).getNum());
         assertEquals("1", list.get(1).getDay());
         assertEquals("1", list.get(1).getMonth());
         assertEquals("1999", list.get(1).getYear());
@@ -96,7 +96,7 @@ public class FavoritesTest {
 
         List<ComicStrip> list = comiCaptor.getValue();
 
-        assertEquals(9L, (long) list.get(0).getNum());
+        assertEquals(1L, (long) list.get(0).getNum());
         assertEquals("1", list.get(0).getDay());
         assertEquals("1", list.get(0).getMonth());
         assertEquals("1999", list.get(0).getYear());
diff --git a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/MainTest.java b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/MainTest.java
index 759597ea923381ffa95bdf507ede229f9ed470c7..583faa8ac9df1d1355a9611aab2f6d2647e452c1 100644
--- a/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/MainTest.java
+++ b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/MainTest.java
@@ -18,6 +18,7 @@ import me.szaki.xkcd.xkcdbrowser.network.model.Comic;
 import me.szaki.xkcd.xkcdbrowser.ui.main.MainPresenter;
 import me.szaki.xkcd.xkcdbrowser.ui.main.MainScreen;
 
+import static junit.framework.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
@@ -48,12 +49,14 @@ public class MainTest {
         ArgumentCaptor<Comic> comiCaptor = ArgumentCaptor.forClass(Comic.class);
         verify(mainScreen).getImage(comiCaptor.capture());
 
-        assertEquals(10, (int) comiCaptor.getValue().getNum());
+        assertEquals(2, (int) comiCaptor.getValue().getNum());
         assertEquals("4", comiCaptor.getValue().getDay());
         assertEquals("4", comiCaptor.getValue().getMonth());
         assertEquals("2000", comiCaptor.getValue().getYear());
         assertEquals("Title", comiCaptor.getValue().getTitle());
         assertEquals("https://cataas.com/c", comiCaptor.getValue().getImg());
+
+        verify(mainScreen).setFavorite(true);
     }
 
     @Test
@@ -69,16 +72,45 @@ public class MainTest {
         ArgumentCaptor<Comic> comiCaptor = ArgumentCaptor.forClass(Comic.class);
         verify(mainScreen).getImage(comiCaptor.capture());
 
-        assertEquals(9, (int) comiCaptor.getValue().getNum());
+        assertEquals(1, (int) comiCaptor.getValue().getNum());
         assertEquals("1", comiCaptor.getValue().getDay());
         assertEquals("1", comiCaptor.getValue().getMonth());
         assertEquals("1999", comiCaptor.getValue().getYear());
         assertEquals("Tittle", comiCaptor.getValue().getTitle());
         assertEquals("https://cataas.com/cat", comiCaptor.getValue().getImg());
+
+        verify(mainScreen).setFavorite(true);
     }
 
     @Test
-    public void getRandom() {
+    public void getRandom() throws InterruptedException {
+        mainPresenter.getCurrent();
+        latch.await(200, TimeUnit.MILLISECONDS);
+        reset(mainScreen);
+
+        mainPresenter.getRandom();
+
+        latch.await(200, TimeUnit.MILLISECONDS);
+        ArgumentCaptor<Comic> comiCaptor = ArgumentCaptor.forClass(Comic.class);
+        verify(mainScreen).getImage(comiCaptor.capture());
+
+        if (comiCaptor.getValue().getNum() == 1L) {
+            assertEquals(1, (int) comiCaptor.getValue().getNum());
+            assertEquals("1", comiCaptor.getValue().getDay());
+            assertEquals("1", comiCaptor.getValue().getMonth());
+            assertEquals("1999", comiCaptor.getValue().getYear());
+            assertEquals("Tittle", comiCaptor.getValue().getTitle());
+            assertEquals("https://cataas.com/cat", comiCaptor.getValue().getImg());
+        } else if (comiCaptor.getValue().getNum() == 2L) {
+            assertEquals(2, (int) comiCaptor.getValue().getNum());
+            assertEquals("4", comiCaptor.getValue().getDay());
+            assertEquals("4", comiCaptor.getValue().getMonth());
+            assertEquals("2000", comiCaptor.getValue().getYear());
+            assertEquals("Title", comiCaptor.getValue().getTitle());
+            assertEquals("https://cataas.com/c", comiCaptor.getValue().getImg());
+        } else {
+            assertTrue(false);
+        }
 
     }
 
@@ -98,12 +130,14 @@ public class MainTest {
         ArgumentCaptor<Comic> comiCaptor = ArgumentCaptor.forClass(Comic.class);
         verify(mainScreen).getImage(comiCaptor.capture());
 
-        assertEquals(10, (int) comiCaptor.getValue().getNum());
+        assertEquals(2, (int) comiCaptor.getValue().getNum());
         assertEquals("4", comiCaptor.getValue().getDay());
         assertEquals("4", comiCaptor.getValue().getMonth());
         assertEquals("2000", comiCaptor.getValue().getYear());
         assertEquals("Title", comiCaptor.getValue().getTitle());
         assertEquals("https://cataas.com/c", comiCaptor.getValue().getImg());
+
+        verify(mainScreen).setFavorite(true);
     }
 
     @Test