From c379df57e0fadc7f4264de7cfde62cc74ed7d7dc Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 14:02:48 +0700 Subject: [PATCH 01/20] [kotlin][10-room-test] Adding test favorite --- .../academies/data/AcademyRepositoryTest.kt | 23 ++++++++++++++++--- .../ui/detail/DetailCourseViewModelTest.kt | 20 ++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt index d28e24b9..5b5fc58f 100644 --- a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt +++ b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt @@ -16,8 +16,8 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Rule import org.junit.Test -import org.mockito.Mockito.`when` -import org.mockito.Mockito.mock +import org.mockito.Mockito.* +import java.util.concurrent.Executor class AcademyRepositoryTest { @@ -26,7 +26,8 @@ class AcademyRepositoryTest { private val remote = mock(RemoteDataSource::class.java) private val local = mock(LocalDataSource::class.java) - private val appExecutors = mock(AppExecutors::class.java) + private val exercutor = Executor { it.run() } + private val appExecutors = AppExecutors(exercutor, exercutor, exercutor) private val academyRepository = FakeAcademyRepository(remote, local, appExecutors) @@ -99,4 +100,20 @@ class AcademyRepositoryTest { assertNotNull(courseEntities.data?.mCourse?.title) assertEquals(courseResponses[0].title, courseEntities.data?.mCourse?.title) } + + @Test + fun setCourseBookmark() { + val dummy = DataDummy.generateDummyCourses()[0] + + academyRepository.setCourseBookmark(dummy, true) + verify(local, times(1)).setCourseBookmark(dummy, true) + } + + @Test + fun setReadModule() { + val dummy = DataDummy.generateDummyModules("a")[0] + + academyRepository.setReadModule(dummy) + verify(local, times(1)).setReadModule(dummy) + } } \ No newline at end of file diff --git a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index 9ada204d..ea897cb7 100644 --- a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -7,11 +7,13 @@ import com.dicoding.academies.data.AcademyRepository import com.dicoding.academies.data.source.local.entity.CourseWithModule import com.dicoding.academies.utils.DataDummy import com.dicoding.academies.vo.Resource +import com.nhaarman.mockitokotlin2.doNothing import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito import org.mockito.Mockito.`when` import org.mockito.Mockito.verify import org.mockito.junit.MockitoJUnitRunner @@ -49,4 +51,22 @@ class DetailCourseViewModelTest { verify(observer).onChanged(dummyCourseWithModule) } + + @Test + fun setBookmark() { + val dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)) + val course = MutableLiveData>() + course.value = dummyCourseWithModule + + `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(course) + viewModel.courseModule.observeForever(observer) + + val courseFromViewModel = viewModel.courseModule.value!!.data + + doNothing().`when`(academyRepository).setCourseBookmark(courseFromViewModel!!.mCourse, true) + + viewModel.setBookmark() + + verify(academyRepository).setCourseBookmark(dummyCourse, true) + } } \ No newline at end of file From 2b7785cbd09f8ef358d1efbd488f00e113dfc896 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 14:32:11 +0700 Subject: [PATCH 02/20] [java][10-room-test] add favorite testing --- .../academies/data/AcademyRepositoryTest.java | 25 +++++++++++++++++-- .../ui/detail/DetailCourseViewModelTest.java | 19 ++++++++++++++ .../academies/utils/TestExecutor.java | 10 ++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java diff --git a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java index cbef972f..a6ed0844 100644 --- a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java +++ b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java @@ -14,6 +14,7 @@ import com.dicoding.academies.utils.AppExecutors; import com.dicoding.academies.utils.DataDummy; import com.dicoding.academies.utils.LiveDataTestUtil; +import com.dicoding.academies.utils.TestExecutor; import com.dicoding.academies.vo.Resource; import org.junit.Rule; @@ -22,9 +23,11 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -35,7 +38,9 @@ public class AcademyRepositoryTest { private RemoteDataSource remote = Mockito.mock(RemoteDataSource.class); private LocalDataSource local = Mockito.mock(LocalDataSource.class); - private AppExecutors appExecutors = Mockito.mock(AppExecutors.class); + private Executor executor = new TestExecutor(); + + private AppExecutors appExecutors = new AppExecutors(executor, executor, executor); private FakeAcademyRepository academyRepository = new FakeAcademyRepository(remote, local, appExecutors); @@ -108,4 +113,20 @@ public void getCourseWithModules() { assertNotNull(courseEntities.data.mCourse.getTitle()); assertEquals(courseResponses.get(0).getTitle(), courseEntities.data.mCourse.getTitle()); } -} \ No newline at end of file + + @Test + public void setCourseBookmark() { + CourseEntity dummy = DataDummy.generateDummyCourses().get(0); + + academyRepository.setCourseBookmark(dummy, true); + verify(local, times(1)).setCourseBookmark(dummy, true); + } + + @Test + public void setReadModule() { + ModuleEntity dummy = DataDummy.generateDummyModules("a").get(0); + + academyRepository.setReadModule(dummy); + verify(local, times(1)).setReadModule(dummy); + } +} diff --git a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index 0287e400..f8639c66 100644 --- a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -17,6 +17,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -53,4 +54,22 @@ public void getCourseWithModule() { verify(observer).onChanged(dummyCourseWithModule); } + + @Test + public void setBookmark() { + Resource dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)); + MutableLiveData> course = new MutableLiveData<>(); + course.setValue(dummyCourseWithModule); + + when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); + viewModel.courseModule.observeForever(observer); + + CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; + + doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + + viewModel.setBookmark(); + + verify(academyRepository).setCourseBookmark(dummyCourse, true); + } } \ No newline at end of file diff --git a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java new file mode 100644 index 00000000..c439bf63 --- /dev/null +++ b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java @@ -0,0 +1,10 @@ +package com.dicoding.academies.utils; + +import java.util.concurrent.Executor; + +public class TestExecutor implements Executor { + @Override + public void execute(Runnable command) { + command.run(); + } +} \ No newline at end of file From fa99dae8861f42895a8203ac018432d76cf10421 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 14:45:21 +0700 Subject: [PATCH 03/20] [java][11-pagination] adding favorite test --- .../academies/data/AcademyRepositoryTest.java | 25 +++++++++++++++++-- .../ui/detail/DetailCourseViewModelTest.java | 19 ++++++++++++++ .../academies/utils/TestExecutor.java | 10 ++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java diff --git a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java index cbef972f..a6ed0844 100644 --- a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java +++ b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java @@ -14,6 +14,7 @@ import com.dicoding.academies.utils.AppExecutors; import com.dicoding.academies.utils.DataDummy; import com.dicoding.academies.utils.LiveDataTestUtil; +import com.dicoding.academies.utils.TestExecutor; import com.dicoding.academies.vo.Resource; import org.junit.Rule; @@ -22,9 +23,11 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -35,7 +38,9 @@ public class AcademyRepositoryTest { private RemoteDataSource remote = Mockito.mock(RemoteDataSource.class); private LocalDataSource local = Mockito.mock(LocalDataSource.class); - private AppExecutors appExecutors = Mockito.mock(AppExecutors.class); + private Executor executor = new TestExecutor(); + + private AppExecutors appExecutors = new AppExecutors(executor, executor, executor); private FakeAcademyRepository academyRepository = new FakeAcademyRepository(remote, local, appExecutors); @@ -108,4 +113,20 @@ public void getCourseWithModules() { assertNotNull(courseEntities.data.mCourse.getTitle()); assertEquals(courseResponses.get(0).getTitle(), courseEntities.data.mCourse.getTitle()); } -} \ No newline at end of file + + @Test + public void setCourseBookmark() { + CourseEntity dummy = DataDummy.generateDummyCourses().get(0); + + academyRepository.setCourseBookmark(dummy, true); + verify(local, times(1)).setCourseBookmark(dummy, true); + } + + @Test + public void setReadModule() { + ModuleEntity dummy = DataDummy.generateDummyModules("a").get(0); + + academyRepository.setReadModule(dummy); + verify(local, times(1)).setReadModule(dummy); + } +} diff --git a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index 0287e400..f8639c66 100644 --- a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -17,6 +17,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -53,4 +54,22 @@ public void getCourseWithModule() { verify(observer).onChanged(dummyCourseWithModule); } + + @Test + public void setBookmark() { + Resource dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)); + MutableLiveData> course = new MutableLiveData<>(); + course.setValue(dummyCourseWithModule); + + when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); + viewModel.courseModule.observeForever(observer); + + CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; + + doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + + viewModel.setBookmark(); + + verify(academyRepository).setCourseBookmark(dummyCourse, true); + } } \ No newline at end of file diff --git a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java new file mode 100644 index 00000000..c439bf63 --- /dev/null +++ b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java @@ -0,0 +1,10 @@ +package com.dicoding.academies.utils; + +import java.util.concurrent.Executor; + +public class TestExecutor implements Executor { + @Override + public void execute(Runnable command) { + command.run(); + } +} \ No newline at end of file From f1f2a4a62f3145324e9e85e4c5ff5c058f27e7d6 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 14:50:14 +0700 Subject: [PATCH 04/20] [kotlin][11-pagination] adding favorite test --- .../academies/data/AcademyRepositoryTest.kt | 23 ++++++++++++++++--- .../ui/bookmark/BookmarkViewModelTest.kt | 2 +- .../ui/detail/DetailCourseViewModelTest.kt | 20 ++++++++++++++++ .../ui/reader/CourseReaderViewModelTest.kt | 2 +- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt index d28e24b9..5b5fc58f 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt @@ -16,8 +16,8 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Rule import org.junit.Test -import org.mockito.Mockito.`when` -import org.mockito.Mockito.mock +import org.mockito.Mockito.* +import java.util.concurrent.Executor class AcademyRepositoryTest { @@ -26,7 +26,8 @@ class AcademyRepositoryTest { private val remote = mock(RemoteDataSource::class.java) private val local = mock(LocalDataSource::class.java) - private val appExecutors = mock(AppExecutors::class.java) + private val exercutor = Executor { it.run() } + private val appExecutors = AppExecutors(exercutor, exercutor, exercutor) private val academyRepository = FakeAcademyRepository(remote, local, appExecutors) @@ -99,4 +100,20 @@ class AcademyRepositoryTest { assertNotNull(courseEntities.data?.mCourse?.title) assertEquals(courseResponses[0].title, courseEntities.data?.mCourse?.title) } + + @Test + fun setCourseBookmark() { + val dummy = DataDummy.generateDummyCourses()[0] + + academyRepository.setCourseBookmark(dummy, true) + verify(local, times(1)).setCourseBookmark(dummy, true) + } + + @Test + fun setReadModule() { + val dummy = DataDummy.generateDummyModules("a")[0] + + academyRepository.setReadModule(dummy) + verify(local, times(1)).setReadModule(dummy) + } } \ No newline at end of file diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt index 43559039..04e2b9a3 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt @@ -43,7 +43,7 @@ class BookmarkViewModelTest { `when`(academyRepository.getBookmarkedCourses()).thenReturn(courses) val courseEntities = viewModel.getBookmarks().value - verify(academyRepository).getBookmarkedCourses() + verify(academyRepository).getBookmarkedCourses() assertNotNull(courseEntities) assertEquals(5, courseEntities?.size) diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index 9ada204d..ea897cb7 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -7,11 +7,13 @@ import com.dicoding.academies.data.AcademyRepository import com.dicoding.academies.data.source.local.entity.CourseWithModule import com.dicoding.academies.utils.DataDummy import com.dicoding.academies.vo.Resource +import com.nhaarman.mockitokotlin2.doNothing import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito import org.mockito.Mockito.`when` import org.mockito.Mockito.verify import org.mockito.junit.MockitoJUnitRunner @@ -49,4 +51,22 @@ class DetailCourseViewModelTest { verify(observer).onChanged(dummyCourseWithModule) } + + @Test + fun setBookmark() { + val dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)) + val course = MutableLiveData>() + course.value = dummyCourseWithModule + + `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(course) + viewModel.courseModule.observeForever(observer) + + val courseFromViewModel = viewModel.courseModule.value!!.data + + doNothing().`when`(academyRepository).setCourseBookmark(courseFromViewModel!!.mCourse, true) + + viewModel.setBookmark() + + verify(academyRepository).setCourseBookmark(dummyCourse, true) + } } \ No newline at end of file diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt index d881bdc1..7b9e922d 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt @@ -45,7 +45,7 @@ class CourseReaderViewModelTest { viewModel.setSelectedModule(moduleId) val dummyModule = dummyModules[0] - dummyModule.contentEntity = ContentEntity("

"+dummyModule.title+"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

") + dummyModule.contentEntity = ContentEntity("

" + dummyModule.title + "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

") } @Test From 5b54823d553f6b2d183900996647c22fb816d1da Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 15:03:23 +0700 Subject: [PATCH 05/20] [java][12-pagination-test] Adding favorite test --- .../academies/data/AcademyRepositoryTest.java | 23 ++++++++++++++++++- .../ui/bookmark/BookmarkViewModelTest.java | 15 ++++++++++++ .../ui/detail/DetailCourseViewModelTest.java | 20 ++++++++++++++++ .../academies/utils/TestExecutor.java | 10 ++++++++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java index d90636f8..d4048cc0 100644 --- a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java @@ -17,6 +17,7 @@ import com.dicoding.academies.utils.DataDummy; import com.dicoding.academies.utils.LiveDataTestUtil; import com.dicoding.academies.utils.PagedListUtil; +import com.dicoding.academies.utils.TestExecutor; import com.dicoding.academies.vo.Resource; import org.junit.Rule; @@ -24,10 +25,12 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -38,7 +41,9 @@ public class AcademyRepositoryTest { private RemoteDataSource remote = mock(RemoteDataSource.class); private LocalDataSource local = mock(LocalDataSource.class); - private AppExecutors appExecutors = mock(AppExecutors.class); + private Executor executor = new TestExecutor(); + + private AppExecutors appExecutors = new AppExecutors(executor, executor, executor); private FakeAcademyRepository academyRepository = new FakeAcademyRepository(remote, local, appExecutors); @@ -111,4 +116,20 @@ public void getCourseWithModules() { assertNotNull(courseEntities.data.mCourse.getTitle()); assertEquals(courseResponses.get(0).getTitle(), courseEntities.data.mCourse.getTitle()); } + + @Test + public void setCourseBookmark() { + CourseEntity dummy = DataDummy.generateDummyCourses().get(0); + + academyRepository.setCourseBookmark(dummy, true); + verify(local, times(1)).setCourseBookmark(dummy, true); + } + + @Test + public void setReadModule() { + ModuleEntity dummy = DataDummy.generateDummyModules("a").get(0); + + academyRepository.setReadModule(dummy); + verify(local, times(1)).setReadModule(dummy); + } } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java index 401d9c60..cb90af1a 100644 --- a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java @@ -7,6 +7,9 @@ import com.dicoding.academies.data.AcademyRepository; import com.dicoding.academies.data.source.local.entity.CourseEntity; +import com.dicoding.academies.data.source.local.entity.CourseWithModule; +import com.dicoding.academies.utils.DataDummy; +import com.dicoding.academies.vo.Resource; import org.junit.Before; import org.junit.Rule; @@ -19,6 +22,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -59,4 +64,14 @@ public void getBookmark() { viewModel.getBookmarks().observeForever(observer); verify(observer).onChanged(dummyCourses); } + + @Test + public void setBookmark() { + CourseEntity entity = DataDummy.generateDummyCourses().get(0); + doNothing().when(academyRepository).setCourseBookmark(entity, true); + + viewModel.setBookmark(entity); + + verify(academyRepository).setCourseBookmark(entity, true); + } } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index 466f28b4..3786d5d5 100644 --- a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -20,6 +20,7 @@ import java.util.ArrayList; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -57,4 +58,23 @@ public void getCourseWithModule() { verify(observer).onChanged(dummyCourseWithModule); } + + @Test + public void setBookmark() { + Resource dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)); + MutableLiveData> course = new MutableLiveData<>(); + course.setValue(dummyCourseWithModule); + + when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); + viewModel.courseModule.observeForever(observer); + + CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; + + doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + + viewModel.setBookmark(); + + verify(academyRepository).setCourseBookmark(dummyCourse, true); + } + } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java new file mode 100644 index 00000000..c439bf63 --- /dev/null +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java @@ -0,0 +1,10 @@ +package com.dicoding.academies.utils; + +import java.util.concurrent.Executor; + +public class TestExecutor implements Executor { + @Override + public void execute(Runnable command) { + command.run(); + } +} \ No newline at end of file From cf3d02c1cd14bee24236e490ceefdfd6cfb26484 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 15:24:41 +0700 Subject: [PATCH 06/20] [kotlin][12-pagination-test] Adding favorite test for some test class --- .../academies/data/AcademyRepositoryTest.kt | 17 +++++++++++++++++ .../ui/bookmark/BookmarkViewModelTest.kt | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt index 16025f1d..34254cc8 100644 --- a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt +++ b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt @@ -19,6 +19,7 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Rule import org.junit.Test +import org.mockito.Mockito import org.mockito.Mockito.`when` import org.mockito.Mockito.mock @@ -102,4 +103,20 @@ class AcademyRepositoryTest { assertNotNull(courseEntities.data?.mCourse?.title) assertEquals(courseResponses[0].title, courseEntities.data?.mCourse?.title) } + + @Test + fun setCourseBookmark() { + val dummy = DataDummy.generateDummyCourses()[0] + + academyRepository.setCourseBookmark(dummy, true) + verify(local, Mockito.times(1)).setCourseBookmark(dummy, true) + } + + @Test + fun setReadModule() { + val dummy = DataDummy.generateDummyModules("a")[0] + + academyRepository.setReadModule(dummy) + verify(local, Mockito.times(1)).setReadModule(dummy) + } } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt index b46209c2..0afff03a 100644 --- a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt +++ b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt @@ -8,6 +8,7 @@ import androidx.paging.PositionalDataSource import com.dicoding.academies.data.AcademyRepository import com.dicoding.academies.data.source.local.entity.CourseEntity import com.dicoding.academies.utils.DataDummy +import com.nhaarman.mockitokotlin2.doNothing import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Before @@ -69,6 +70,23 @@ class BookmarkViewModelTest { Assert.assertTrue("size of data should be 0, actual is $actualValueDataSize", actualValueDataSize == 0) } + @Test + fun `setBookmark should add favorite to database`() { + val dummyCourse = DataDummy.generateDummyCourses()[0] + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, true) + viewModel.setBookmark(dummyCourse) + verify(academyRepository).setCourseBookmark(dummyCourse, true) + } + + @Test + fun `setBookmark should remove favorite from database`(){ + val dummyCourse = DataDummy.generateDummyCourses()[0] + dummyCourse.bookmarked = true + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, false) + viewModel.setBookmark(dummyCourse) + verify(academyRepository).setCourseBookmark(dummyCourse, false) + } + class PagedTestDataSources private constructor(private val items: List) : PositionalDataSource() { companion object { fun snapshot(items: List = listOf()): PagedList { From 961d356a64358db7444aff260245b565044762fb Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 15:43:01 +0700 Subject: [PATCH 07/20] [kotlin][12-pagination-test] fix favorite unit test --- .../ui/detail/DetailCourseViewModelTest.kt | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index 2a2e380e..ae743775 100644 --- a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -13,8 +13,7 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock -import org.mockito.Mockito.`when` -import org.mockito.Mockito.verify +import org.mockito.Mockito.* import org.mockito.junit.MockitoJUnitRunner @RunWith(MockitoJUnitRunner::class) @@ -56,20 +55,39 @@ class DetailCourseViewModelTest { } @Test - fun `setBookmark should be success trigger courseModule observer`() { + fun `setBookmark should not add favorite when courseModule is empty`() { + viewModel.setBookmark() + verify(academyRepository, times(0)).setCourseBookmark(dummyCourse, true) + } + + @Test + fun `setBookmark should add favorite when courseModule is not empty and not bookmarked`() { val expected = MutableLiveData>() - expected.value = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, true)) + expected.value = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)) `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(expected) + viewModel.courseModule.observeForever(observer) + + val data = viewModel.courseModule.value!!.data + doNothing().`when`(academyRepository).setCourseBookmark(data!!.mCourse, true) viewModel.setBookmark() - viewModel.courseModule.observeForever(observer) + verify(academyRepository, times(1)).setCourseBookmark(dummyCourse, true) + } - verify(observer).onChanged(expected.value) + @Test + fun `setBookmark should remove from favorite when courseModule is not empty and already bookmarked`() { + val expected = MutableLiveData>() + expected.value = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, true)) - val expectedValue = expected.value - val actualValue = viewModel.courseModule.value + `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(expected) + viewModel.courseModule.observeForever(observer) - assertEquals(expectedValue, actualValue) + val data = viewModel.courseModule.value!!.data + doNothing().`when`(academyRepository).setCourseBookmark(data!!.mCourse, false) + + viewModel.setBookmark() + verify(academyRepository, times(1)).setCourseBookmark(dummyCourse, false) } + } \ No newline at end of file From fb2b5969475b650ce1bcccfb30081878e1900f07 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 14:32:11 +0700 Subject: [PATCH 08/20] [java][10-room-test] Adding favorite test --- .../academies/data/AcademyRepositoryTest.java | 25 +++++++++++++++++-- .../ui/detail/DetailCourseViewModelTest.java | 19 ++++++++++++++ .../academies/utils/TestExecutor.java | 10 ++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java diff --git a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java index cbef972f..a6ed0844 100644 --- a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java +++ b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java @@ -14,6 +14,7 @@ import com.dicoding.academies.utils.AppExecutors; import com.dicoding.academies.utils.DataDummy; import com.dicoding.academies.utils.LiveDataTestUtil; +import com.dicoding.academies.utils.TestExecutor; import com.dicoding.academies.vo.Resource; import org.junit.Rule; @@ -22,9 +23,11 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -35,7 +38,9 @@ public class AcademyRepositoryTest { private RemoteDataSource remote = Mockito.mock(RemoteDataSource.class); private LocalDataSource local = Mockito.mock(LocalDataSource.class); - private AppExecutors appExecutors = Mockito.mock(AppExecutors.class); + private Executor executor = new TestExecutor(); + + private AppExecutors appExecutors = new AppExecutors(executor, executor, executor); private FakeAcademyRepository academyRepository = new FakeAcademyRepository(remote, local, appExecutors); @@ -108,4 +113,20 @@ public void getCourseWithModules() { assertNotNull(courseEntities.data.mCourse.getTitle()); assertEquals(courseResponses.get(0).getTitle(), courseEntities.data.mCourse.getTitle()); } -} \ No newline at end of file + + @Test + public void setCourseBookmark() { + CourseEntity dummy = DataDummy.generateDummyCourses().get(0); + + academyRepository.setCourseBookmark(dummy, true); + verify(local, times(1)).setCourseBookmark(dummy, true); + } + + @Test + public void setReadModule() { + ModuleEntity dummy = DataDummy.generateDummyModules("a").get(0); + + academyRepository.setReadModule(dummy); + verify(local, times(1)).setReadModule(dummy); + } +} diff --git a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index 0287e400..f8639c66 100644 --- a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -17,6 +17,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -53,4 +54,22 @@ public void getCourseWithModule() { verify(observer).onChanged(dummyCourseWithModule); } + + @Test + public void setBookmark() { + Resource dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)); + MutableLiveData> course = new MutableLiveData<>(); + course.setValue(dummyCourseWithModule); + + when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); + viewModel.courseModule.observeForever(observer); + + CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; + + doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + + viewModel.setBookmark(); + + verify(academyRepository).setCourseBookmark(dummyCourse, true); + } } \ No newline at end of file diff --git a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java new file mode 100644 index 00000000..c439bf63 --- /dev/null +++ b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java @@ -0,0 +1,10 @@ +package com.dicoding.academies.utils; + +import java.util.concurrent.Executor; + +public class TestExecutor implements Executor { + @Override + public void execute(Runnable command) { + command.run(); + } +} \ No newline at end of file From b1413720d3b7ef2eac1bdfd58c4cb1c1fd62d0ce Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 14:45:21 +0700 Subject: [PATCH 09/20] [java][11-pagination] Adding favorite test --- .../academies/data/AcademyRepositoryTest.java | 25 +++++++++++++++++-- .../ui/detail/DetailCourseViewModelTest.java | 19 ++++++++++++++ .../academies/utils/TestExecutor.java | 10 ++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java diff --git a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java index cbef972f..a6ed0844 100644 --- a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java +++ b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java @@ -14,6 +14,7 @@ import com.dicoding.academies.utils.AppExecutors; import com.dicoding.academies.utils.DataDummy; import com.dicoding.academies.utils.LiveDataTestUtil; +import com.dicoding.academies.utils.TestExecutor; import com.dicoding.academies.vo.Resource; import org.junit.Rule; @@ -22,9 +23,11 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -35,7 +38,9 @@ public class AcademyRepositoryTest { private RemoteDataSource remote = Mockito.mock(RemoteDataSource.class); private LocalDataSource local = Mockito.mock(LocalDataSource.class); - private AppExecutors appExecutors = Mockito.mock(AppExecutors.class); + private Executor executor = new TestExecutor(); + + private AppExecutors appExecutors = new AppExecutors(executor, executor, executor); private FakeAcademyRepository academyRepository = new FakeAcademyRepository(remote, local, appExecutors); @@ -108,4 +113,20 @@ public void getCourseWithModules() { assertNotNull(courseEntities.data.mCourse.getTitle()); assertEquals(courseResponses.get(0).getTitle(), courseEntities.data.mCourse.getTitle()); } -} \ No newline at end of file + + @Test + public void setCourseBookmark() { + CourseEntity dummy = DataDummy.generateDummyCourses().get(0); + + academyRepository.setCourseBookmark(dummy, true); + verify(local, times(1)).setCourseBookmark(dummy, true); + } + + @Test + public void setReadModule() { + ModuleEntity dummy = DataDummy.generateDummyModules("a").get(0); + + academyRepository.setReadModule(dummy); + verify(local, times(1)).setReadModule(dummy); + } +} diff --git a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index 0287e400..f8639c66 100644 --- a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -17,6 +17,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -53,4 +54,22 @@ public void getCourseWithModule() { verify(observer).onChanged(dummyCourseWithModule); } + + @Test + public void setBookmark() { + Resource dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)); + MutableLiveData> course = new MutableLiveData<>(); + course.setValue(dummyCourseWithModule); + + when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); + viewModel.courseModule.observeForever(observer); + + CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; + + doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + + viewModel.setBookmark(); + + verify(academyRepository).setCourseBookmark(dummyCourse, true); + } } \ No newline at end of file diff --git a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java new file mode 100644 index 00000000..c439bf63 --- /dev/null +++ b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java @@ -0,0 +1,10 @@ +package com.dicoding.academies.utils; + +import java.util.concurrent.Executor; + +public class TestExecutor implements Executor { + @Override + public void execute(Runnable command) { + command.run(); + } +} \ No newline at end of file From 62954b3829a6fe36f79ef2277d3e6ee477efccbd Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 14:50:14 +0700 Subject: [PATCH 10/20] [kotlin][11-pagination] Adding favorite test --- .../academies/data/AcademyRepositoryTest.kt | 23 ++++++++++++++++--- .../ui/bookmark/BookmarkViewModelTest.kt | 2 +- .../ui/detail/DetailCourseViewModelTest.kt | 20 ++++++++++++++++ .../ui/reader/CourseReaderViewModelTest.kt | 2 +- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt index d28e24b9..5b5fc58f 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt @@ -16,8 +16,8 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Rule import org.junit.Test -import org.mockito.Mockito.`when` -import org.mockito.Mockito.mock +import org.mockito.Mockito.* +import java.util.concurrent.Executor class AcademyRepositoryTest { @@ -26,7 +26,8 @@ class AcademyRepositoryTest { private val remote = mock(RemoteDataSource::class.java) private val local = mock(LocalDataSource::class.java) - private val appExecutors = mock(AppExecutors::class.java) + private val exercutor = Executor { it.run() } + private val appExecutors = AppExecutors(exercutor, exercutor, exercutor) private val academyRepository = FakeAcademyRepository(remote, local, appExecutors) @@ -99,4 +100,20 @@ class AcademyRepositoryTest { assertNotNull(courseEntities.data?.mCourse?.title) assertEquals(courseResponses[0].title, courseEntities.data?.mCourse?.title) } + + @Test + fun setCourseBookmark() { + val dummy = DataDummy.generateDummyCourses()[0] + + academyRepository.setCourseBookmark(dummy, true) + verify(local, times(1)).setCourseBookmark(dummy, true) + } + + @Test + fun setReadModule() { + val dummy = DataDummy.generateDummyModules("a")[0] + + academyRepository.setReadModule(dummy) + verify(local, times(1)).setReadModule(dummy) + } } \ No newline at end of file diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt index 43559039..04e2b9a3 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt @@ -43,7 +43,7 @@ class BookmarkViewModelTest { `when`(academyRepository.getBookmarkedCourses()).thenReturn(courses) val courseEntities = viewModel.getBookmarks().value - verify(academyRepository).getBookmarkedCourses() + verify(academyRepository).getBookmarkedCourses() assertNotNull(courseEntities) assertEquals(5, courseEntities?.size) diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index 9ada204d..ea897cb7 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -7,11 +7,13 @@ import com.dicoding.academies.data.AcademyRepository import com.dicoding.academies.data.source.local.entity.CourseWithModule import com.dicoding.academies.utils.DataDummy import com.dicoding.academies.vo.Resource +import com.nhaarman.mockitokotlin2.doNothing import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito import org.mockito.Mockito.`when` import org.mockito.Mockito.verify import org.mockito.junit.MockitoJUnitRunner @@ -49,4 +51,22 @@ class DetailCourseViewModelTest { verify(observer).onChanged(dummyCourseWithModule) } + + @Test + fun setBookmark() { + val dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)) + val course = MutableLiveData>() + course.value = dummyCourseWithModule + + `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(course) + viewModel.courseModule.observeForever(observer) + + val courseFromViewModel = viewModel.courseModule.value!!.data + + doNothing().`when`(academyRepository).setCourseBookmark(courseFromViewModel!!.mCourse, true) + + viewModel.setBookmark() + + verify(academyRepository).setCourseBookmark(dummyCourse, true) + } } \ No newline at end of file diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt index d881bdc1..7b9e922d 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/reader/CourseReaderViewModelTest.kt @@ -45,7 +45,7 @@ class CourseReaderViewModelTest { viewModel.setSelectedModule(moduleId) val dummyModule = dummyModules[0] - dummyModule.contentEntity = ContentEntity("

"+dummyModule.title+"

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

") + dummyModule.contentEntity = ContentEntity("

" + dummyModule.title + "

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

") } @Test From 0ad9876b8b41932296cdd0c3342db0acc652d455 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 15:03:23 +0700 Subject: [PATCH 11/20] [java][12-pagination-test] Adding favorite test --- .../academies/data/AcademyRepositoryTest.java | 23 ++++++++++++++++++- .../ui/bookmark/BookmarkViewModelTest.java | 15 ++++++++++++ .../ui/detail/DetailCourseViewModelTest.java | 20 ++++++++++++++++ .../academies/utils/TestExecutor.java | 10 ++++++++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java index d90636f8..d4048cc0 100644 --- a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.java @@ -17,6 +17,7 @@ import com.dicoding.academies.utils.DataDummy; import com.dicoding.academies.utils.LiveDataTestUtil; import com.dicoding.academies.utils.PagedListUtil; +import com.dicoding.academies.utils.TestExecutor; import com.dicoding.academies.vo.Resource; import org.junit.Rule; @@ -24,10 +25,12 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.Executor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -38,7 +41,9 @@ public class AcademyRepositoryTest { private RemoteDataSource remote = mock(RemoteDataSource.class); private LocalDataSource local = mock(LocalDataSource.class); - private AppExecutors appExecutors = mock(AppExecutors.class); + private Executor executor = new TestExecutor(); + + private AppExecutors appExecutors = new AppExecutors(executor, executor, executor); private FakeAcademyRepository academyRepository = new FakeAcademyRepository(remote, local, appExecutors); @@ -111,4 +116,20 @@ public void getCourseWithModules() { assertNotNull(courseEntities.data.mCourse.getTitle()); assertEquals(courseResponses.get(0).getTitle(), courseEntities.data.mCourse.getTitle()); } + + @Test + public void setCourseBookmark() { + CourseEntity dummy = DataDummy.generateDummyCourses().get(0); + + academyRepository.setCourseBookmark(dummy, true); + verify(local, times(1)).setCourseBookmark(dummy, true); + } + + @Test + public void setReadModule() { + ModuleEntity dummy = DataDummy.generateDummyModules("a").get(0); + + academyRepository.setReadModule(dummy); + verify(local, times(1)).setReadModule(dummy); + } } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java index 401d9c60..cb90af1a 100644 --- a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.java @@ -7,6 +7,9 @@ import com.dicoding.academies.data.AcademyRepository; import com.dicoding.academies.data.source.local.entity.CourseEntity; +import com.dicoding.academies.data.source.local.entity.CourseWithModule; +import com.dicoding.academies.utils.DataDummy; +import com.dicoding.academies.vo.Resource; import org.junit.Before; import org.junit.Rule; @@ -19,6 +22,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -59,4 +64,14 @@ public void getBookmark() { viewModel.getBookmarks().observeForever(observer); verify(observer).onChanged(dummyCourses); } + + @Test + public void setBookmark() { + CourseEntity entity = DataDummy.generateDummyCourses().get(0); + doNothing().when(academyRepository).setCourseBookmark(entity, true); + + viewModel.setBookmark(entity); + + verify(academyRepository).setCourseBookmark(entity, true); + } } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index 466f28b4..3786d5d5 100644 --- a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -20,6 +20,7 @@ import java.util.ArrayList; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -57,4 +58,23 @@ public void getCourseWithModule() { verify(observer).onChanged(dummyCourseWithModule); } + + @Test + public void setBookmark() { + Resource dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)); + MutableLiveData> course = new MutableLiveData<>(); + course.setValue(dummyCourseWithModule); + + when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); + viewModel.courseModule.observeForever(observer); + + CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; + + doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + + viewModel.setBookmark(); + + verify(academyRepository).setCourseBookmark(dummyCourse, true); + } + } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java new file mode 100644 index 00000000..c439bf63 --- /dev/null +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/utils/TestExecutor.java @@ -0,0 +1,10 @@ +package com.dicoding.academies.utils; + +import java.util.concurrent.Executor; + +public class TestExecutor implements Executor { + @Override + public void execute(Runnable command) { + command.run(); + } +} \ No newline at end of file From 00996579249e9118b258492000c15a93633824cf Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 15:24:41 +0700 Subject: [PATCH 12/20] [kotlin][12-pagination-test] Adding favorite test --- .../academies/data/AcademyRepositoryTest.kt | 17 +++++++++++++++++ .../ui/bookmark/BookmarkViewModelTest.kt | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt index 16025f1d..34254cc8 100644 --- a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt +++ b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt @@ -19,6 +19,7 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Rule import org.junit.Test +import org.mockito.Mockito import org.mockito.Mockito.`when` import org.mockito.Mockito.mock @@ -102,4 +103,20 @@ class AcademyRepositoryTest { assertNotNull(courseEntities.data?.mCourse?.title) assertEquals(courseResponses[0].title, courseEntities.data?.mCourse?.title) } + + @Test + fun setCourseBookmark() { + val dummy = DataDummy.generateDummyCourses()[0] + + academyRepository.setCourseBookmark(dummy, true) + verify(local, Mockito.times(1)).setCourseBookmark(dummy, true) + } + + @Test + fun setReadModule() { + val dummy = DataDummy.generateDummyModules("a")[0] + + academyRepository.setReadModule(dummy) + verify(local, Mockito.times(1)).setReadModule(dummy) + } } \ No newline at end of file diff --git a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt index b46209c2..0afff03a 100644 --- a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt +++ b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/bookmark/BookmarkViewModelTest.kt @@ -8,6 +8,7 @@ import androidx.paging.PositionalDataSource import com.dicoding.academies.data.AcademyRepository import com.dicoding.academies.data.source.local.entity.CourseEntity import com.dicoding.academies.utils.DataDummy +import com.nhaarman.mockitokotlin2.doNothing import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Before @@ -69,6 +70,23 @@ class BookmarkViewModelTest { Assert.assertTrue("size of data should be 0, actual is $actualValueDataSize", actualValueDataSize == 0) } + @Test + fun `setBookmark should add favorite to database`() { + val dummyCourse = DataDummy.generateDummyCourses()[0] + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, true) + viewModel.setBookmark(dummyCourse) + verify(academyRepository).setCourseBookmark(dummyCourse, true) + } + + @Test + fun `setBookmark should remove favorite from database`(){ + val dummyCourse = DataDummy.generateDummyCourses()[0] + dummyCourse.bookmarked = true + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, false) + viewModel.setBookmark(dummyCourse) + verify(academyRepository).setCourseBookmark(dummyCourse, false) + } + class PagedTestDataSources private constructor(private val items: List) : PositionalDataSource() { companion object { fun snapshot(items: List = listOf()): PagedList { From 91dad10e06448ebdaed5c598c28b07d8c044c7fe Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Tue, 30 Mar 2021 15:43:01 +0700 Subject: [PATCH 13/20] [kotlin][12-pagination-test] fix favorite unit test --- .../ui/detail/DetailCourseViewModelTest.kt | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index 2a2e380e..ae743775 100644 --- a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -13,8 +13,7 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock -import org.mockito.Mockito.`when` -import org.mockito.Mockito.verify +import org.mockito.Mockito.* import org.mockito.junit.MockitoJUnitRunner @RunWith(MockitoJUnitRunner::class) @@ -56,20 +55,39 @@ class DetailCourseViewModelTest { } @Test - fun `setBookmark should be success trigger courseModule observer`() { + fun `setBookmark should not add favorite when courseModule is empty`() { + viewModel.setBookmark() + verify(academyRepository, times(0)).setCourseBookmark(dummyCourse, true) + } + + @Test + fun `setBookmark should add favorite when courseModule is not empty and not bookmarked`() { val expected = MutableLiveData>() - expected.value = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, true)) + expected.value = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false)) `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(expected) + viewModel.courseModule.observeForever(observer) + + val data = viewModel.courseModule.value!!.data + doNothing().`when`(academyRepository).setCourseBookmark(data!!.mCourse, true) viewModel.setBookmark() - viewModel.courseModule.observeForever(observer) + verify(academyRepository, times(1)).setCourseBookmark(dummyCourse, true) + } - verify(observer).onChanged(expected.value) + @Test + fun `setBookmark should remove from favorite when courseModule is not empty and already bookmarked`() { + val expected = MutableLiveData>() + expected.value = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, true)) - val expectedValue = expected.value - val actualValue = viewModel.courseModule.value + `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(expected) + viewModel.courseModule.observeForever(observer) - assertEquals(expectedValue, actualValue) + val data = viewModel.courseModule.value!!.data + doNothing().`when`(academyRepository).setCourseBookmark(data!!.mCourse, false) + + viewModel.setBookmark() + verify(academyRepository, times(1)).setCourseBookmark(dummyCourse, false) } + } \ No newline at end of file From a7e6586c6bf5919bf097bea1817e6b253ab03bcd Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Wed, 31 Mar 2021 15:53:54 +0700 Subject: [PATCH 14/20] [kotlin][10-room-test] rename field 'exercutor' to 'executor' --- .../com/dicoding/academies/data/AcademyRepositoryTest.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt index 5b5fc58f..0ceeacd7 100644 --- a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt +++ b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/data/AcademyRepositoryTest.kt @@ -1,7 +1,6 @@ package com.dicoding.academies.data import androidx.arch.core.executor.testing.InstantTaskExecutorRule -import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.dicoding.academies.data.source.local.LocalDataSource import com.dicoding.academies.data.source.local.entity.CourseEntity @@ -26,8 +25,9 @@ class AcademyRepositoryTest { private val remote = mock(RemoteDataSource::class.java) private val local = mock(LocalDataSource::class.java) - private val exercutor = Executor { it.run() } - private val appExecutors = AppExecutors(exercutor, exercutor, exercutor) + + private val executor = Executor { it.run() } + private val appExecutors = AppExecutors(executor, executor, executor) private val academyRepository = FakeAcademyRepository(remote, local, appExecutors) From d2edebb12efa75d5f78126e59640739acce2a943 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Thu, 8 Apr 2021 05:42:38 +0700 Subject: [PATCH 15/20] [java][10-room-test] fix uneffective code for setBookmark test --- .../academies/ui/detail/DetailCourseViewModelTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index f8639c66..4ffda395 100644 --- a/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/10. Room-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -64,9 +64,7 @@ public void setBookmark() { when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); viewModel.courseModule.observeForever(observer); - CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; - - doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + doNothing().when(academyRepository).setCourseBookmark(dummyCourse, true); viewModel.setBookmark(); From 5e8fcbacc238b07a9b1ea3030449de3ee068d366 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Thu, 8 Apr 2021 05:45:42 +0700 Subject: [PATCH 16/20] [kotlin][10-room-test] fix uneffective code for setBookmark test --- .../dicoding/academies/ui/detail/DetailCourseViewModelTest.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index ea897cb7..1aaa8715 100644 --- a/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/10. Room-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -61,9 +61,7 @@ class DetailCourseViewModelTest { `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(course) viewModel.courseModule.observeForever(observer) - val courseFromViewModel = viewModel.courseModule.value!!.data - - doNothing().`when`(academyRepository).setCourseBookmark(courseFromViewModel!!.mCourse, true) + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, true) viewModel.setBookmark() From 0ccbc1d5cfeaece0bd7291b949f4c3333280dc4f Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Thu, 8 Apr 2021 05:48:51 +0700 Subject: [PATCH 17/20] [java][11-pagination] fix uneffective code for setBookmark test --- .../academies/ui/detail/DetailCourseViewModelTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index f8639c66..4ffda395 100644 --- a/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/11. Pagination/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -64,9 +64,7 @@ public void setBookmark() { when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); viewModel.courseModule.observeForever(observer); - CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; - - doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + doNothing().when(academyRepository).setCourseBookmark(dummyCourse, true); viewModel.setBookmark(); From 076ef2879e40c103d36d9b535282480f5bf01abc Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Thu, 8 Apr 2021 05:50:10 +0700 Subject: [PATCH 18/20] [kotlin][11-pagination] fix uneffective code for setBookmark test --- .../dicoding/academies/ui/detail/DetailCourseViewModelTest.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index ea897cb7..1aaa8715 100644 --- a/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/11. Pagination/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -61,9 +61,7 @@ class DetailCourseViewModelTest { `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(course) viewModel.courseModule.observeForever(observer) - val courseFromViewModel = viewModel.courseModule.value!!.data - - doNothing().`when`(academyRepository).setCourseBookmark(courseFromViewModel!!.mCourse, true) + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, true) viewModel.setBookmark() From e208424d309e1e867ff4e72e1eeef9318d0378b0 Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Thu, 8 Apr 2021 05:54:54 +0700 Subject: [PATCH 19/20] [kotlin][12-pagination-test] fix uneffective code for setBookmark test --- .../academies/ui/detail/DetailCourseViewModelTest.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt index ae743775..d7f201c5 100644 --- a/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt +++ b/Project Academy/12. Pagination-test/kotlin/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.kt @@ -68,8 +68,7 @@ class DetailCourseViewModelTest { `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(expected) viewModel.courseModule.observeForever(observer) - val data = viewModel.courseModule.value!!.data - doNothing().`when`(academyRepository).setCourseBookmark(data!!.mCourse, true) + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, true) viewModel.setBookmark() verify(academyRepository, times(1)).setCourseBookmark(dummyCourse, true) @@ -83,8 +82,7 @@ class DetailCourseViewModelTest { `when`(academyRepository.getCourseWithModules(courseId)).thenReturn(expected) viewModel.courseModule.observeForever(observer) - val data = viewModel.courseModule.value!!.data - doNothing().`when`(academyRepository).setCourseBookmark(data!!.mCourse, false) + doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, false) viewModel.setBookmark() verify(academyRepository, times(1)).setCourseBookmark(dummyCourse, false) From bb80b0695b553044672d8657bdf8ea74b59cad8a Mon Sep 17 00:00:00 2001 From: AlexzPurewoko Date: Thu, 8 Apr 2021 05:57:40 +0700 Subject: [PATCH 20/20] [java][12-pagination-test] fix uneffective code for setBookmark test --- .../academies/ui/detail/DetailCourseViewModelTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java index 3786d5d5..476e8f90 100644 --- a/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java +++ b/Project Academy/12. Pagination-test/java/app/src/test/java/com/dicoding/academies/ui/detail/DetailCourseViewModelTest.java @@ -68,9 +68,7 @@ public void setBookmark() { when(academyRepository.getCourseWithModules(courseId)).thenReturn(course); viewModel.courseModule.observeForever(observer); - CourseWithModule courseFromViewModel = viewModel.courseModule.getValue().data; - - doNothing().when(academyRepository).setCourseBookmark(courseFromViewModel.mCourse, true); + doNothing().when(academyRepository).setCourseBookmark(dummyCourse, true); viewModel.setBookmark();