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