Skip to content

Commit fca0995

Browse files
committed
Merge branch 'refactor' of https://github.com/snuhcs-course/swpp-2025-project-team-09 into refactor
2 parents 0d2df91 + a814f70 commit fca0995

6 files changed

Lines changed: 80 additions & 28 deletions

File tree

android-app/app/src/androidTest/java/com/example/storybridge_android/DecideSaveActivityMockTest.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ class DecideSaveActivityMockTest {
8989
override suspend fun discardSession(sessionId: String): Result<DiscardSessionResponse> {
9090
return Result.failure(Exception("unused"))
9191
}
92+
93+
override suspend fun pickWords(
94+
sessionId: String,
95+
lang: String
96+
): Result<WordPickerResponse> {
97+
return Result.failure(Exception("unused"))
98+
}
9299
}
93100

94101
ServiceLocator.sessionRepository = fakeRepo
@@ -140,6 +147,13 @@ class DecideSaveActivityMockTest {
140147
override suspend fun discardSession(sessionId: String): Result<DiscardSessionResponse> {
141148
return Result.success(DiscardSessionResponse("discarded"))
142149
}
150+
151+
override suspend fun pickWords(
152+
sessionId: String,
153+
lang: String
154+
): Result<WordPickerResponse> {
155+
return Result.failure(Exception("unused"))
156+
}
143157
}
144158

145159
ServiceLocator.sessionRepository = fakeRepo
@@ -191,6 +205,13 @@ class DecideSaveActivityMockTest {
191205
override suspend fun discardSession(sessionId: String): Result<DiscardSessionResponse> {
192206
return Result.failure(Exception("DISCARD FAIL"))
193207
}
208+
209+
override suspend fun pickWords(
210+
sessionId: String,
211+
lang: String
212+
): Result<WordPickerResponse> {
213+
return Result.failure(Exception("unused"))
214+
}
194215
}
195216

196217
ServiceLocator.sessionRepository = fakeRepo

android-app/app/src/androidTest/java/com/example/storybridge_android/FinishActivityMockTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ class FinishActivityMockTest {
5353
)
5454
override suspend fun reloadAllSession(userId: String, startedAt: String) = Result.failure<ReloadAllSessionResponse>(Exception("unused"))
5555
override suspend fun discardSession(sessionId: String) = Result.failure<DiscardSessionResponse>(Exception("unused"))
56+
override suspend fun pickWords(
57+
sessionId: String,
58+
lang: String
59+
): Result<WordPickerResponse> {
60+
return Result.failure(Exception("unused"))
61+
}
5662
}
5763
ServiceLocator.sessionRepository = mockSessionRepo
5864
}
@@ -112,6 +118,12 @@ class FinishActivityMockTest {
112118
)
113119
override suspend fun reloadAllSession(userId: String, startedAt: String) = Result.failure<ReloadAllSessionResponse>(Exception("unused"))
114120
override suspend fun discardSession(sessionId: String) = Result.failure<DiscardSessionResponse>(Exception("unused"))
121+
override suspend fun pickWords(
122+
sessionId: String,
123+
lang: String
124+
): Result<WordPickerResponse> {
125+
return Result.failure(Exception("unused"))
126+
}
115127
}
116128
ServiceLocator.sessionRepository = mockSessionRepo
117129
val scenario = ActivityScenario.launch<FinishActivity>(createIntent())

android-app/app/src/androidTest/java/com/example/storybridge_android/MainActivityMockTest.kt

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.storybridge_android.ui.main
1+
package com.example.storybridge_android
22

33
import android.app.Activity.RESULT_OK
44
import android.app.Instrumentation
@@ -15,16 +15,17 @@ import androidx.test.espresso.intent.Intents
1515
import androidx.test.espresso.intent.matcher.IntentMatchers
1616
import androidx.test.espresso.intent.Intents.intended
1717
import androidx.test.ext.junit.runners.AndroidJUnit4
18-
import com.example.storybridge_android.ServiceLocator
1918
import com.example.storybridge_android.data.*
2019
import com.example.storybridge_android.network.UserInfoResponse
21-
import com.example.storybridge_android.R
2220
import com.example.storybridge_android.network.DiscardSessionResponse
21+
import com.example.storybridge_android.network.StartSessionResponse
22+
import com.example.storybridge_android.ui.main.MainActivity
2323
import io.mockk.*
2424
import kotlinx.coroutines.ExperimentalCoroutinesApi
2525
import kotlinx.coroutines.test.runTest
2626
import org.junit.*
2727
import org.junit.runner.RunWith
28+
import retrofit2.Response
2829

2930
@RunWith(AndroidJUnit4::class)
3031
@OptIn(ExperimentalCoroutinesApi::class)
@@ -47,6 +48,9 @@ class MainActivityMockTest {
4748
mockkStatic(Settings.Secure::class)
4849
every { Settings.Secure.getString(any(), Settings.Secure.ANDROID_ID) } returns "DEVICE123"
4950

51+
coEvery { mockSessionRepo.startSession("DEVICE123") } returns
52+
Result.success(StartSessionResponse("SESSION_123", "2025-12-03", 1))
53+
5054
Intents.init()
5155
}
5256

@@ -60,21 +64,9 @@ class MainActivityMockTest {
6064
Intent(ApplicationProvider.getApplicationContext(), MainActivity::class.java)
6165
)
6266

63-
@Test
64-
fun startButton_opensStartSessionActivity() = runTest {
65-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(emptyList())
66-
67-
launchMain()
68-
Thread.sleep(1500)
69-
70-
onView(withId(R.id.startNewReadingButton)).perform(click())
71-
72-
intended(IntentMatchers.hasComponent("com.example.storybridge_android.ui.session.start.StartSessionActivity"))
73-
}
74-
7567
@Test
7668
fun settingsButton_opensSettingActivity() = runTest {
77-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(emptyList())
69+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(emptyList())
7870

7971
launchMain()
8072
Thread.sleep(800)
@@ -105,7 +97,7 @@ class MainActivityMockTest {
10597
)
10698
)
10799

108-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(fakeList)
100+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(fakeList)
109101

110102
launchMain()
111103
Thread.sleep(1000)
@@ -116,7 +108,7 @@ class MainActivityMockTest {
116108

117109
@Test
118110
fun userInfo_empty_showsEmptyContainer() = runTest {
119-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(emptyList())
111+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(emptyList())
120112

121113
launchMain()
122114
Thread.sleep(800)
@@ -126,7 +118,7 @@ class MainActivityMockTest {
126118

127119
@Test
128120
fun settingsLauncher_receivesResultOk() = runTest {
129-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(emptyList())
121+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(emptyList())
130122

131123
val intent = Intent(ApplicationProvider.getApplicationContext(), MainActivity::class.java)
132124
val scenario = ActivityScenario.launch<MainActivity>(intent)
@@ -145,7 +137,7 @@ class MainActivityMockTest {
145137
Thread.sleep(1000)
146138

147139
// THEN: SettingActivity activated
148-
Intents.intended(
140+
intended(
149141
IntentMatchers.hasComponent("com.example.storybridge_android.ui.setting.SettingActivity")
150142
)
151143

@@ -158,7 +150,7 @@ class MainActivityMockTest {
158150

159151
@Test
160152
fun backPress_showsExitPanel() = runTest {
161-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(emptyList())
153+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(emptyList())
162154

163155
launchMain()
164156
Thread.sleep(500)
@@ -171,7 +163,7 @@ class MainActivityMockTest {
171163

172164
@Test
173165
fun exitConfirmBtn_closesExitPanel() = runTest {
174-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(emptyList())
166+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(emptyList())
175167

176168
val scenario = launchMain()
177169
Thread.sleep(500)
@@ -200,7 +192,7 @@ class MainActivityMockTest {
200192

201193
@Test
202194
fun exitCancelBtn_hidesExitPanel() = runTest {
203-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(emptyList())
195+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(emptyList())
204196

205197
launchMain()
206198
Thread.sleep(500)
@@ -228,7 +220,7 @@ class MainActivityMockTest {
228220
translated_title = "TestBook"
229221
)
230222
)
231-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(fakeList)
223+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(fakeList)
232224

233225
launchMain()
234226
Thread.sleep(800)
@@ -251,7 +243,7 @@ class MainActivityMockTest {
251243
translated_title = "TestBook"
252244
)
253245
)
254-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(fakeList)
246+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(fakeList)
255247

256248
launchMain()
257249
Thread.sleep(800)
@@ -277,7 +269,7 @@ class MainActivityMockTest {
277269
translated_title = "TestBook"
278270
)
279271
)
280-
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns retrofit2.Response.success(fakeList)
272+
coEvery { mockUserRepo.getUserInfo("DEVICE123") } returns Response.success(fakeList)
281273
coEvery { mockSessionRepo.discardSession("S1") } returns
282274
Result.success(DiscardSessionResponse("Session discarded"))
283275

android-app/app/src/androidTest/java/com/example/storybridge_android/StartSessionActivityMockTest.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.example.storybridge_android.network.ReloadAllSessionResponse
1919
import com.example.storybridge_android.network.SelectVoiceResponse
2020
import com.example.storybridge_android.network.SessionStatsResponse
2121
import com.example.storybridge_android.network.StartSessionResponse
22+
import com.example.storybridge_android.network.WordPickerResponse
2223
import com.example.storybridge_android.ui.session.start.StartSessionActivity
2324
import io.mockk.coEvery
2425
import io.mockk.mockkStatic
@@ -82,6 +83,13 @@ class StartSessionActivityMockTest {
8283
override suspend fun discardSession(sessionId: String): Result<DiscardSessionResponse> {
8384
return Result.failure(Exception("unused"))
8485
}
86+
87+
override suspend fun pickWords(
88+
sessionId: String,
89+
lang: String
90+
): Result<WordPickerResponse> {
91+
return Result.failure(Exception("unused"))
92+
}
8593
}
8694

8795
ServiceLocator.sessionRepository = fakeRepo

android-app/app/src/androidTest/java/com/example/storybridge_android/VoiceSelectActivityMockTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@ class VoiceSelectActivityTest {
7272

7373
override suspend fun discardSession(sessionId: String) =
7474
Result.failure<DiscardSessionResponse>(Exception("unused"))
75+
76+
override suspend fun pickWords(
77+
sessionId: String,
78+
lang: String
79+
): Result<WordPickerResponse> {
80+
return Result.failure(Exception("unused"))
81+
}
7582
}
7683

7784
// Fake ProcessRepository

android-app/app/src/test/java/com/example/storybridge_android/view_model/CameraSessionViewModelTest.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ import com.example.storybridge_android.network.UploadImageResponse
1818
import com.example.storybridge_android.network.WordPickerResponse
1919
import com.example.storybridge_android.ui.camera.CameraSessionViewModel
2020
import com.example.storybridge_android.ui.camera.SessionUiState
21+
import io.mockk.every
22+
import io.mockk.mockkStatic
23+
import io.mockk.unmockkAll
2124
import kotlinx.coroutines.Dispatchers
2225
import kotlinx.coroutines.ExperimentalCoroutinesApi
2326
import kotlinx.coroutines.test.StandardTestDispatcher
@@ -40,11 +43,20 @@ import kotlin.test.assertTrue
4043
@OptIn(ExperimentalCoroutinesApi::class)
4144
class CameraSessionViewModelTest {
4245

43-
// Rule to execute LiveData updates synchronously
4446
@get:Rule
4547
val instantTaskExecutorRule = InstantTaskExecutorRule()
4648

47-
// Test dispatcher for coroutines
49+
@Before
50+
fun mockLog() {
51+
mockkStatic(android.util.Log::class)
52+
every { android.util.Log.d(any(), any()) } returns 0
53+
}
54+
55+
@After
56+
fun unmockLog() {
57+
unmockkAll()
58+
}
59+
4860
private val testDispatcher = StandardTestDispatcher()
4961

5062
private lateinit var viewModel: CameraSessionViewModel

0 commit comments

Comments
 (0)