From 72956238202d61eaf7e3d28caccf94e8808daf66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tam=C3=A1s=20Szab=C3=B3?= <tamas@szaboo.com>
Date: Wed, 9 May 2018 15:19:03 +0200
Subject: [PATCH] favorites test

---
 .../xkcd/xkcdbrowser/mock/db/MockDAO.java     |   8 ++
 .../xkcd/xkcdbrowser/test/FavoritesTest.java  | 111 ++++++++++++++++++
 2 files changed, 119 insertions(+)
 create mode 100644 app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/FavoritesTest.java

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 656f20f..3455de7 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
@@ -20,6 +20,14 @@ public class MockDAO implements ComicsDAO {
             setTitle("Title");
             setYear("2000");
         }});
+        comicStrip.add(new ComicStrip(){{
+            setImg("https://cataas.com/cat");
+            setDay("1");
+            setMonth("1");
+            setNum(9L);
+            setTitle("Tittle");
+            setYear("1999");
+        }});
     }
 
     @Override
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
new file mode 100644
index 0000000..ea37d49
--- /dev/null
+++ b/app/src/test/java/me/szaki/xkcd/xkcdbrowser/test/FavoritesTest.java
@@ -0,0 +1,111 @@
+package me.szaki.xkcd.xkcdbrowser.test;
+
+import org.junit.After;
+import org.junit.Before;
+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.List;
+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.favorites.FavoritesPresenter;
+import me.szaki.xkcd.xkcdbrowser.ui.favorites.FavoritesScreen;
+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.reset;
+import static org.mockito.Mockito.verify;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(constants = BuildConfig.class)
+public class FavoritesTest {
+    private FavoritesPresenter favoritesPresenter;
+    private FavoritesScreen favoritesScreen;
+    private CountDownLatch latch;
+
+    @Before
+    public void Setup() {
+        TestHelper.setTestInjector();
+        favoritesScreen = mock(FavoritesScreen.class);
+        favoritesPresenter = new FavoritesPresenter();
+        favoritesPresenter.attachScreen(favoritesScreen);
+        latch = new CountDownLatch(1);
+    }
+
+    @Test
+    public void getData () throws InterruptedException {
+        favoritesPresenter.getData();
+
+        latch.await(200, TimeUnit.MILLISECONDS);
+
+        ArgumentCaptor<List> comiCaptor = ArgumentCaptor.forClass(List.class);
+        verify(favoritesScreen).dataReceived(comiCaptor.capture());
+
+        assertEquals(2, comiCaptor.getValue().size());
+
+        List<ComicStrip> list = comiCaptor.getValue();
+
+        assertEquals(10L, (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("1", list.get(1).getDay());
+        assertEquals("1", list.get(1).getMonth());
+        assertEquals("1999", list.get(1).getYear());
+        assertEquals("Tittle", list.get(1).getTitle());
+        assertEquals("https://cataas.com/cat", list.get(1).getImg());
+    }
+
+    @Test
+    public void deleteData() throws InterruptedException {
+        favoritesPresenter.getData();
+
+        latch.await(200, TimeUnit.MILLISECONDS);
+
+        ArgumentCaptor<List> comiCaptor = ArgumentCaptor.forClass(List.class);
+        verify(favoritesScreen).dataReceived(comiCaptor.capture());
+        reset(favoritesScreen);
+
+        favoritesPresenter.deleteData((ComicStrip) comiCaptor.getValue().get(0));
+
+        latch.await(200, TimeUnit.MILLISECONDS);
+        verify(favoritesScreen).deleteSucess();
+
+        favoritesPresenter.getData();
+
+        latch.await(200, TimeUnit.MILLISECONDS);
+
+        comiCaptor = ArgumentCaptor.forClass(List.class);
+        verify(favoritesScreen).dataReceived(comiCaptor.capture());
+
+        assertEquals(1, comiCaptor.getValue().size());
+
+        List<ComicStrip> list = comiCaptor.getValue();
+
+        assertEquals(9L, (long) list.get(0).getNum());
+        assertEquals("1", list.get(0).getDay());
+        assertEquals("1", list.get(0).getMonth());
+        assertEquals("1999", list.get(0).getYear());
+        assertEquals("Tittle", list.get(0).getTitle());
+        assertEquals("https://cataas.com/cat", list.get(0).getImg());
+    }
+
+    @After
+    public void Teardown() {
+        favoritesPresenter.detachScreen();
+    }
+}
-- 
GitLab