Skip to content

Commit e1e1eec

Browse files
authored
fix tests (#18)
1 parent 9fe15bd commit e1e1eec

File tree

18 files changed

+647
-280
lines changed

18 files changed

+647
-280
lines changed

course/src/test/java/com/raccoongang/course/presentation/container/CourseContainerViewModelTest.kt

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package com.raccoongang.course.presentation.container
33
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
44
import com.raccoongang.core.system.connection.NetworkConnection
55
import com.raccoongang.core.R
6+
import com.raccoongang.core.domain.model.CourseStructure
7+
import com.raccoongang.core.domain.model.CoursewareAccess
68
import com.raccoongang.core.system.ResourceManager
79
import com.raccoongang.core.system.notifier.CourseNotifier
810
import com.raccoongang.core.system.notifier.CourseStructureUpdated
@@ -35,6 +37,30 @@ class CourseContainerViewModelTest {
3537
private val noInternet = "Slow or no internet connection"
3638
private val somethingWrong = "Something went wrong"
3739

40+
private val courseStructure = CourseStructure(
41+
root = "",
42+
blockData = listOf(),
43+
id = "id",
44+
name = "Course name",
45+
number = "",
46+
org = "Org",
47+
start = null,
48+
startDisplay = "",
49+
startType = "",
50+
end = null,
51+
coursewareAccess = CoursewareAccess(
52+
true,
53+
"",
54+
"",
55+
"",
56+
"",
57+
""
58+
),
59+
media = null,
60+
certificate = null,
61+
isSelfPaced = false
62+
)
63+
3864
@Before
3965
fun setUp() {
4066
Dispatchers.setMain(dispatcher)
@@ -84,21 +110,23 @@ class CourseContainerViewModelTest {
84110
val viewModel = CourseContainerViewModel("", interactor,resourceManager, notifier, networkConnection)
85111
every { networkConnection.isOnline() } returns true
86112
coEvery { interactor.preloadCourseStructure(any()) } returns Unit
113+
every { interactor.getCourseStructureFromCache() } returns courseStructure
87114
viewModel.preloadCourseStructure()
88115
advanceUntilIdle()
89116

90117
coVerify(exactly = 1) { interactor.preloadCourseStructure(any()) }
91118

92119
assert(viewModel.errorMessage.value == null)
93120
assert(viewModel.showProgress.value == false)
94-
assert(viewModel.dataReady.value == true)
121+
assert(viewModel.dataReady.value != null)
95122
}
96123

97124
@Test
98125
fun `preloadCourseStructure success without internet`() = runTest {
99126
val viewModel = CourseContainerViewModel("", interactor,resourceManager, notifier, networkConnection)
100127
every { networkConnection.isOnline() } returns false
101128
coEvery { interactor.preloadCourseStructureFromCache(any()) } returns Unit
129+
every { interactor.getCourseStructureFromCache() } returns courseStructure
102130
viewModel.preloadCourseStructure()
103131
advanceUntilIdle()
104132

@@ -107,7 +135,7 @@ class CourseContainerViewModelTest {
107135

108136
assert(viewModel.errorMessage.value == null)
109137
assert(viewModel.showProgress.value == false)
110-
assert(viewModel.dataReady.value == true)
138+
assert(viewModel.dataReady.value != null)
111139
}
112140

113141
@Test

course/src/test/java/com/raccoongang/course/presentation/detail/CourseDetailsViewModelTest.kt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,9 @@ class CourseDetailsViewModelTest {
5555
CourseDetailsViewModel("", networkConnection, interactor, resourceManager, notifier)
5656
every { networkConnection.isOnline() } returns true
5757
coEvery { interactor.getCourseDetails(any()) } throws UnknownHostException()
58-
coEvery { interactor.getEnrolledCourseById(any()) } throws UnknownHostException()
5958
advanceUntilIdle()
6059

6160
coVerify(exactly = 1) { interactor.getCourseDetails(any()) }
62-
coVerify(exactly = 1) { interactor.getEnrolledCourseById(any()) }
6361

6462
val message = viewModel.uiMessage.value as? UIMessage.SnackBarMessage
6563

@@ -73,11 +71,9 @@ class CourseDetailsViewModelTest {
7371
CourseDetailsViewModel("", networkConnection, interactor, resourceManager, notifier)
7472
every { networkConnection.isOnline() } returns true
7573
coEvery { interactor.getCourseDetails(any()) } throws Exception()
76-
coEvery { interactor.getEnrolledCourseById(any()) } throws Exception()
7774
advanceUntilIdle()
7875

7976
coVerify(exactly = 1) { interactor.getCourseDetails(any()) }
80-
coVerify(exactly = 1) { interactor.getEnrolledCourseById(any()) }
8177

8278
val message = viewModel.uiMessage.value as? UIMessage.SnackBarMessage
8379

@@ -91,12 +87,10 @@ class CourseDetailsViewModelTest {
9187
CourseDetailsViewModel("", networkConnection, interactor, resourceManager, notifier)
9288
every { networkConnection.isOnline() } returns true
9389
coEvery { interactor.getCourseDetails(any()) } returns mockk()
94-
coEvery { interactor.getEnrolledCourseById(any()) } returns mockk()
9590

9691
advanceUntilIdle()
9792

9893
coVerify(exactly = 1) { interactor.getCourseDetails(any()) }
99-
coVerify(exactly = 1) { interactor.getEnrolledCourseById(any()) }
10094

10195
assert(viewModel.uiMessage.value == null)
10296
assert(viewModel.uiState.value is CourseDetailsUIState.CourseData)
@@ -108,14 +102,11 @@ class CourseDetailsViewModelTest {
108102
CourseDetailsViewModel("", networkConnection, interactor, resourceManager, notifier)
109103
every { networkConnection.isOnline() } returns false
110104
coEvery { interactor.getCourseDetailsFromCache(any()) } returns mockk()
111-
coEvery { interactor.getEnrolledCourseFromCacheById(any()) } returns mockk()
112105

113106
advanceUntilIdle()
114107

115108
coVerify(exactly = 0) { interactor.getCourseDetails(any()) }
116-
coVerify(exactly = 0) { interactor.getEnrolledCourseById(any()) }
117109
coVerify(exactly = 1) { interactor.getCourseDetailsFromCache(any()) }
118-
coVerify(exactly = 1) { interactor.getEnrolledCourseFromCacheById(any()) }
119110

120111
assert(viewModel.uiMessage.value == null)
121112
assert(viewModel.uiState.value is CourseDetailsUIState.CourseData)
@@ -126,7 +117,6 @@ class CourseDetailsViewModelTest {
126117
val viewModel =
127118
CourseDetailsViewModel("", networkConnection, interactor, resourceManager, notifier)
128119
coEvery { interactor.enrollInACourse(any()) } throws UnknownHostException()
129-
coEvery { interactor.getEnrolledCourseById(any()) } returns mockk()
130120
coEvery { notifier.send(CourseDashboardUpdate()) } returns Unit
131121
every { networkConnection.isOnline() } returns true
132122
coEvery { interactor.getCourseDetails(any()) } returns mockk()
@@ -147,7 +137,6 @@ class CourseDetailsViewModelTest {
147137
val viewModel =
148138
CourseDetailsViewModel("", networkConnection, interactor, resourceManager, notifier)
149139
coEvery { interactor.enrollInACourse(any()) } throws Exception()
150-
coEvery { interactor.getEnrolledCourseById(any()) } returns mockk()
151140
coEvery { notifier.send(CourseDashboardUpdate()) } returns Unit
152141
every { networkConnection.isOnline() } returns true
153142
coEvery { interactor.getCourseDetails(any()) } returns mockk()
@@ -168,7 +157,6 @@ class CourseDetailsViewModelTest {
168157
val viewModel =
169158
CourseDetailsViewModel("", networkConnection, interactor, resourceManager, notifier)
170159
coEvery { interactor.enrollInACourse(any()) } returns Unit
171-
coEvery { interactor.getEnrolledCourseById(any()) } returns mockk()
172160
coEvery { notifier.send(CourseDashboardUpdate()) } returns Unit
173161
every { networkConnection.isOnline() } returns true
174162
coEvery { interactor.getCourseDetails(any()) } returns mockk()
@@ -179,7 +167,6 @@ class CourseDetailsViewModelTest {
179167
advanceUntilIdle()
180168

181169
coVerify(exactly = 1) { interactor.enrollInACourse(any()) }
182-
coVerify(exactly = 2) { interactor.getEnrolledCourseById(any()) }
183170

184171
assert(viewModel.uiMessage.value == null)
185172
assert(viewModel.uiState.value is CourseDetailsUIState.CourseData)

course/src/test/java/com/raccoongang/course/presentation/handouts/HandoutsViewModelTest.kt

Lines changed: 28 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -28,44 +28,10 @@ class HandoutsViewModelTest {
2828

2929
private val interactor = mockk<CourseInteractor>()
3030

31-
//region mockEnrolledCourse
32-
33-
private val mockCourseEnrolled = EnrolledCourse(
34-
auditAccessExpires = Date(),
35-
created = "created",
36-
certificate = Certificate(""),
37-
mode = "mode",
38-
isActive = true,
39-
course = EnrolledCourseData(
40-
id = "id",
41-
name = "name",
42-
number = "",
43-
org = "Org",
44-
start = Date(),
45-
startDisplay = "",
46-
startType = "",
47-
end = null,
48-
dynamicUpgradeDeadline = "",
49-
subscriptionId = "",
50-
coursewareAccess = CoursewareAccess(
51-
true,
52-
"",
53-
"",
54-
"",
55-
"",
56-
""
57-
),
58-
media = null,
59-
courseImage = "",
60-
courseAbout = "",
61-
courseSharingUtmParameters = CourseSharingUtmParameters("", ""),
62-
courseUpdates = "",
63-
courseHandouts = "",
64-
discussionUrl = "",
65-
videoOutline = "",
66-
isSelfPaced = false
67-
)
68-
)
31+
//region mockHandoutsModel
32+
33+
private val handoutsModel = HandoutsModel("")
34+
6935
//endregion
7036

7137
@Before
@@ -80,36 +46,29 @@ class HandoutsViewModelTest {
8046

8147
@Test
8248
fun `getEnrolledCourse no internet connection exception`() = runTest {
83-
val viewModel = HandoutsViewModel("","Handouts", interactor)
84-
coEvery { interactor.getEnrolledCourseFromCacheById(any()) } throws UnknownHostException()
85-
coEvery { interactor.getAnnouncements(any()) } returns mockk()
49+
val viewModel = HandoutsViewModel("", "Handouts", interactor)
50+
coEvery { interactor.getHandouts(any()) } throws UnknownHostException()
8651

8752
advanceUntilIdle()
88-
coVerify(exactly = 1) { interactor.getEnrolledCourseFromCacheById(any()) }
8953

9054
assert(viewModel.htmlContent.value == null)
9155
}
9256

9357
@Test
9458
fun `getEnrolledCourse unknown exception`() = runTest {
95-
val viewModel = HandoutsViewModel("","Handouts", interactor)
96-
coEvery { interactor.getEnrolledCourseFromCacheById(any()) } throws Exception()
97-
coEvery { interactor.getAnnouncements(any()) } returns mockk()
98-
59+
val viewModel = HandoutsViewModel("", "Handouts", interactor)
60+
coEvery { interactor.getHandouts(any()) } throws Exception()
9961
advanceUntilIdle()
100-
coVerify(exactly = 1) { interactor.getEnrolledCourseFromCacheById(any()) }
10162

10263
assert(viewModel.htmlContent.value == null)
10364
}
10465

10566
@Test
10667
fun `getEnrolledCourse handouts success`() = runTest {
107-
val viewModel = HandoutsViewModel("",HandoutsType.Handouts.name, interactor)
108-
coEvery { interactor.getEnrolledCourseFromCacheById(any()) } returns mockCourseEnrolled
68+
val viewModel = HandoutsViewModel("", HandoutsType.Handouts.name, interactor)
10969
coEvery { interactor.getHandouts(any()) } returns HandoutsModel("hello")
11070

11171
advanceUntilIdle()
112-
coVerify(exactly = 1) { interactor.getEnrolledCourseFromCacheById(any()) }
11372
coVerify(exactly = 1) { interactor.getHandouts(any()) }
11473
coVerify(exactly = 0) { interactor.getAnnouncements(any()) }
11574

@@ -118,12 +77,15 @@ class HandoutsViewModelTest {
11877

11978
@Test
12079
fun `getEnrolledCourse announcements success`() = runTest {
121-
val viewModel = HandoutsViewModel("",HandoutsType.Announcements.name, interactor)
122-
coEvery { interactor.getEnrolledCourseFromCacheById(any()) } returns mockCourseEnrolled
123-
coEvery { interactor.getAnnouncements(any()) } returns listOf(AnnouncementModel("date","content"))
80+
val viewModel = HandoutsViewModel("", HandoutsType.Announcements.name, interactor)
81+
coEvery { interactor.getAnnouncements(any()) } returns listOf(
82+
AnnouncementModel(
83+
"date",
84+
"content"
85+
)
86+
)
12487

12588
advanceUntilIdle()
126-
coVerify(exactly = 1) { interactor.getEnrolledCourseFromCacheById(any()) }
12789
coVerify(exactly = 0) { interactor.getHandouts(any()) }
12890
coVerify(exactly = 1) { interactor.getAnnouncements(any()) }
12991

@@ -132,12 +94,19 @@ class HandoutsViewModelTest {
13294

13395
@Test
13496
fun `injectDarkMode test`() = runTest {
135-
val viewModel = HandoutsViewModel("",HandoutsType.Announcements.name, interactor)
136-
coEvery { interactor.getEnrolledCourseFromCacheById(any()) } returns mockCourseEnrolled
137-
coEvery { interactor.getAnnouncements(any()) } returns listOf(AnnouncementModel("date","content"))
138-
viewModel.injectDarkMode(viewModel.htmlContent.value.toString(), ULong.MAX_VALUE, ULong.MAX_VALUE)
97+
val viewModel = HandoutsViewModel("", HandoutsType.Announcements.name, interactor)
98+
coEvery { interactor.getAnnouncements(any()) } returns listOf(
99+
AnnouncementModel(
100+
"date",
101+
"content"
102+
)
103+
)
104+
viewModel.injectDarkMode(
105+
viewModel.htmlContent.value.toString(),
106+
ULong.MAX_VALUE,
107+
ULong.MAX_VALUE
108+
)
139109
advanceUntilIdle()
140-
coVerify(exactly = 1) { interactor.getEnrolledCourseFromCacheById(any()) }
141110
coVerify(exactly = 0) { interactor.getHandouts(any()) }
142111
coVerify(exactly = 1) { interactor.getAnnouncements(any()) }
143112

0 commit comments

Comments
 (0)