Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
c379df5
[kotlin][10-room-test] Adding test favorite
AlexzPurewoko Mar 30, 2021
2b7785c
[java][10-room-test] add favorite testing
AlexzPurewoko Mar 30, 2021
fa99dae
[java][11-pagination] adding favorite test
AlexzPurewoko Mar 30, 2021
f1f2a4a
[kotlin][11-pagination] adding favorite test
AlexzPurewoko Mar 30, 2021
5b54823
[java][12-pagination-test] Adding favorite test
AlexzPurewoko Mar 30, 2021
cf3d02c
[kotlin][12-pagination-test] Adding favorite test for some test class
AlexzPurewoko Mar 30, 2021
961d356
[kotlin][12-pagination-test] fix favorite unit test
AlexzPurewoko Mar 30, 2021
fb2b596
[java][10-room-test] Adding favorite test
AlexzPurewoko Mar 30, 2021
b141372
[java][11-pagination] Adding favorite test
AlexzPurewoko Mar 30, 2021
62954b3
[kotlin][11-pagination] Adding favorite test
AlexzPurewoko Mar 30, 2021
0ad9876
[java][12-pagination-test] Adding favorite test
AlexzPurewoko Mar 30, 2021
0099657
[kotlin][12-pagination-test] Adding favorite test
AlexzPurewoko Mar 30, 2021
91dad10
[kotlin][12-pagination-test] fix favorite unit test
AlexzPurewoko Mar 30, 2021
1d2374d
Merge remote-tracking branch 'origin/update/room-test' into update/ro…
AlexzPurewoko Mar 31, 2021
a7e6586
[kotlin][10-room-test] rename field 'exercutor' to 'executor'
AlexzPurewoko Mar 31, 2021
d2edebb
[java][10-room-test] fix uneffective code for setBookmark test
AlexzPurewoko Apr 7, 2021
5e8fcba
[kotlin][10-room-test] fix uneffective code for setBookmark test
AlexzPurewoko Apr 7, 2021
0ccbc1d
[java][11-pagination] fix uneffective code for setBookmark test
AlexzPurewoko Apr 7, 2021
076ef28
[kotlin][11-pagination] fix uneffective code for setBookmark test
AlexzPurewoko Apr 7, 2021
e208424
[kotlin][12-pagination-test] fix uneffective code for setBookmark test
AlexzPurewoko Apr 7, 2021
bb80b06
[java][12-pagination-test] fix uneffective code for setBookmark test
AlexzPurewoko Apr 7, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand All @@ -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);

Expand Down Expand Up @@ -108,4 +113,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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -53,4 +54,20 @@ public void getCourseWithModule() {

verify(observer).onChanged(dummyCourseWithModule);
}

@Test
public void setBookmark() {
Resource<CourseWithModule> dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false));
MutableLiveData<Resource<CourseWithModule>> course = new MutableLiveData<>();
course.setValue(dummyCourseWithModule);

when(academyRepository.getCourseWithModules(courseId)).thenReturn(course);
viewModel.courseModule.observeForever(observer);

doNothing().when(academyRepository).setCourseBookmark(dummyCourse, true);

viewModel.setBookmark();

verify(academyRepository).setCourseBookmark(dummyCourse, true);
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -16,8 +15,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 {

Expand All @@ -26,7 +25,9 @@ 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 executor = Executor { it.run() }
private val appExecutors = AppExecutors(executor, executor, executor)

private val academyRepository = FakeAcademyRepository(remote, local, appExecutors)

Expand Down Expand Up @@ -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]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ini dummy cuman buat invoke sama verify? Tambahkan assertion

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kalau yang ini kan yang di test method void dan hanya meneruskan call saja ke repository. Jadi menurutku, disini cukup verify call method saja
https://blog.knoldus.com/unit-testing-void-methods-with-mockito-and-junit/

Atau mungkin dari mas Alfian ada cara lain kah ?


academyRepository.setReadModule(dummy)
verify(local, times(1)).setReadModule(dummy)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -49,4 +51,20 @@ class DetailCourseViewModelTest {

verify(observer).onChanged(dummyCourseWithModule)
}

@Test
fun setBookmark() {
val dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false))
val course = MutableLiveData<Resource<CourseWithModule>>()
course.value = dummyCourseWithModule

`when`(academyRepository.getCourseWithModules(courseId)).thenReturn(course)
viewModel.courseModule.observeForever(observer)

doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, true)

viewModel.setBookmark()

verify(academyRepository).setCourseBookmark(dummyCourse, true)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand All @@ -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);

Expand Down Expand Up @@ -108,4 +113,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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -53,4 +54,20 @@ public void getCourseWithModule() {

verify(observer).onChanged(dummyCourseWithModule);
}

@Test
public void setBookmark() {
Resource<CourseWithModule> dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false));
MutableLiveData<Resource<CourseWithModule>> course = new MutableLiveData<>();
course.setValue(dummyCourseWithModule);

when(academyRepository.getCourseWithModules(courseId)).thenReturn(course);
viewModel.courseModule.observeForever(observer);

doNothing().when(academyRepository).setCourseBookmark(dummyCourse, true);

viewModel.setBookmark();

verify(academyRepository).setCourseBookmark(dummyCourse, true);
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand All @@ -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)

Expand Down Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class BookmarkViewModelTest {

`when`(academyRepository.getBookmarkedCourses()).thenReturn(courses)
val courseEntities = viewModel.getBookmarks().value
verify<AcademyRepository>(academyRepository).getBookmarkedCourses()
verify(academyRepository).getBookmarkedCourses()
assertNotNull(courseEntities)
assertEquals(5, courseEntities?.size)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -49,4 +51,20 @@ class DetailCourseViewModelTest {

verify(observer).onChanged(dummyCourseWithModule)
}

@Test
fun setBookmark() {
val dummyCourseWithModule = Resource.success(DataDummy.generateDummyCourseWithModules(dummyCourse, false))
val course = MutableLiveData<Resource<CourseWithModule>>()
course.value = dummyCourseWithModule

`when`(academyRepository.getCourseWithModules(courseId)).thenReturn(course)
viewModel.courseModule.observeForever(observer)

doNothing().`when`(academyRepository).setCourseBookmark(dummyCourse, true)

viewModel.setBookmark()

verify(academyRepository).setCourseBookmark(dummyCourse, true)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class CourseReaderViewModelTest {
viewModel.setSelectedModule(moduleId)

val dummyModule = dummyModules[0]
dummyModule.contentEntity = ContentEntity("<h3 class=\\\"fr-text-bordered\\\">"+dummyModule.title+"</h3><p>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.</p>")
dummyModule.contentEntity = ContentEntity("<h3 class=\\\"fr-text-bordered\\\">" + dummyModule.title + "</h3><p>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.</p>")
}

@Test
Expand Down
Loading