@@ -12,32 +12,24 @@ import me.nya_n.notificationnotifier.data.repository.AppRepository
1212import me.nya_n.notificationnotifier.data.repository.UserSettingsRepository
1313import me.nya_n.notificationnotifier.data.repository.impl.BackupRepositoryImpl
1414import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase
15- import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase
1615import me.nya_n.notificationnotifier.domain.usecase.ExportDataUseCase
1716import me.nya_n.notificationnotifier.domain.usecase.ImportDataUseCase
1817import me.nya_n.notificationnotifier.domain.usecase.LoadAddressUseCase
1918import me.nya_n.notificationnotifier.domain.usecase.LoadFilterConditionUseCase
20- import me.nya_n.notificationnotifier.domain.usecase.NotifyUseCase
21- import me.nya_n.notificationnotifier.domain.usecase.PackageVisibilityGrantedUseCase
2219import me.nya_n.notificationnotifier.domain.usecase.SaveAddressUseCase
2320import me.nya_n.notificationnotifier.domain.usecase.SaveFilterConditionUseCase
2421import me.nya_n.notificationnotifier.domain.usecase.ToggleIgnoreSummaryUseCase
2522import me.nya_n.notificationnotifier.domain.usecase.impl.AddTargetAppUseCaseImpl
26- import me.nya_n.notificationnotifier.domain.usecase.impl.DeleteTargetAppUseCaseImpl
2723import me.nya_n.notificationnotifier.domain.usecase.impl.ExportDataUseCaseImpl
2824import me.nya_n.notificationnotifier.domain.usecase.impl.ImportDataUseCaseImpl
2925import me.nya_n.notificationnotifier.domain.usecase.impl.LoadAddressUseCaseImpl
3026import me.nya_n.notificationnotifier.domain.usecase.impl.LoadAppUseCaseImpl
3127import me.nya_n.notificationnotifier.domain.usecase.impl.LoadFilterConditionUseCaseImpl
32- import me.nya_n.notificationnotifier.domain.usecase.impl.NotifyUseCaseImpl
33- import me.nya_n.notificationnotifier.domain.usecase.impl.PackageVisibilityGrantedUseCaseImpl
3428import me.nya_n.notificationnotifier.domain.usecase.impl.SaveAddressUseCaseImpl
3529import me.nya_n.notificationnotifier.domain.usecase.impl.SaveFilterConditionUseCaseImpl
3630import me.nya_n.notificationnotifier.domain.usecase.impl.ToggleIgnoreSummaryUseCaseImpl
37- import me.nya_n.notificationnotifier.model.AppException.PermissionDeniedException
3831import me.nya_n.notificationnotifier.model.FilterCondition
3932import me.nya_n.notificationnotifier.model.InstalledApp
40- import org.junit.Assume.assumeTrue
4133import org.junit.Before
4234import org.junit.Test
4335import org.junit.runner.RunWith
@@ -59,14 +51,11 @@ class UseCaseTest {
5951
6052 private lateinit var addTargetAppUseCase: AddTargetAppUseCase
6153 private lateinit var loadAppUseCase: LoadAppUseCaseImpl
62- private lateinit var deleteTargetAppUseCase: DeleteTargetAppUseCase
63- private lateinit var packageVisibilityGrantedUseCase: PackageVisibilityGrantedUseCase
6454 private lateinit var saveFilterConditionUseCase: SaveFilterConditionUseCase
6555 private lateinit var toggleIgnoreSummaryUseCase: ToggleIgnoreSummaryUseCase
6656 private lateinit var loadFilterConditionUseCase: LoadFilterConditionUseCase
6757 private lateinit var saveAddressUseCase: SaveAddressUseCase
6858 private lateinit var loadAddressUseCase: LoadAddressUseCase
69- private lateinit var notifyUseCase: NotifyUseCase
7059 private lateinit var exportDataUseCase: ExportDataUseCase
7160 private lateinit var importDataUseCase: ImportDataUseCase
7261
@@ -82,168 +71,17 @@ class UseCaseTest {
8271 val backupRepository = BackupRepositoryImpl (appContext, testDispatcher)
8372 addTargetAppUseCase = AddTargetAppUseCaseImpl (appRepository)
8473 loadAppUseCase = LoadAppUseCaseImpl (userSettingsRepository, appRepository, testDispatcher)
85- deleteTargetAppUseCase = DeleteTargetAppUseCaseImpl (appRepository)
86- packageVisibilityGrantedUseCase =
87- PackageVisibilityGrantedUseCaseImpl (userSettingsRepository)
8874 saveFilterConditionUseCase = SaveFilterConditionUseCaseImpl (appRepository)
8975 toggleIgnoreSummaryUseCase = ToggleIgnoreSummaryUseCaseImpl (appRepository)
9076 loadFilterConditionUseCase = LoadFilterConditionUseCaseImpl (appRepository)
9177 saveAddressUseCase = SaveAddressUseCaseImpl (userSettingsRepository)
9278 loadAddressUseCase = LoadAddressUseCaseImpl (userSettingsRepository)
93- notifyUseCase = NotifyUseCaseImpl (userSettingsRepository, testDispatcher)
9479 exportDataUseCase =
9580 ExportDataUseCaseImpl (userSettingsRepository, appRepository, backupRepository)
9681 importDataUseCase =
9782 ImportDataUseCaseImpl (userSettingsRepository, appRepository, backupRepository)
9883 }
9984
100- @Test
101- fun `通知対象アプリの追加、取得、削除` () {
102- runTest(testDispatcher) {
103- val app = InstalledApp (" sample" , " com.sample.www" )
104- addTargetAppUseCase(app)
105-
106- val added = loadAppUseCase.loadTargetList()
107- assertThat(added).hasSize(1 )
108- assertThat(added.first()).isEqualTo(app)
109-
110- deleteTargetAppUseCase(app)
111- val deleted = loadAppUseCase.loadTargetList()
112- assertThat(deleted).isEmpty()
113- }
114- }
115-
116- @Test
117- fun `インストール済みアプリの取得_成功(ついでにアプリ一覧取得権限許可処理も)` () {
118- packageVisibilityGrantedUseCase()
119- val ret = loadAppUseCase.loadInstalledAppList()
120- assertThat(ret.getOrNull()).apply {
121- isNotNull()
122- isNotEmpty()
123- }
124- }
125-
126- @Test
127- fun `インストール済みアプリの取得_失敗` () {
128- val ret = loadAppUseCase.loadInstalledAppList()
129- assertThat(ret.exceptionOrNull()).apply {
130- isNotNull()
131- isInstanceOf(PermissionDeniedException ::class .java)
132- }
133- }
134-
135- @Test
136- fun `通知条件の追加、取得、更新` () {
137- runTest(testDispatcher) {
138- val cond = " test"
139- val updatedCond = " updated"
140- val packageName = " com.sample.www"
141- val app = InstalledApp (" sample" , packageName)
142-
143- // 追加
144- saveFilterConditionUseCase(SaveFilterConditionUseCase .Args (app, cond))
145- assertThat(loadFilterConditionUseCase(app)).isEqualTo(
146- FilterCondition (
147- packageName,
148- false ,
149- cond
150- )
151- )
152-
153- // メッセージ条件の更新
154- saveFilterConditionUseCase(SaveFilterConditionUseCase .Args (app, updatedCond))
155- assertThat(loadFilterConditionUseCase(app)).isEqualTo(
156- FilterCondition (
157- packageName,
158- false ,
159- updatedCond
160- )
161- )
162-
163- // サマリー条件の更新
164- toggleIgnoreSummaryUseCase.invoke(ToggleIgnoreSummaryUseCase .Args (app))
165- assertThat(loadFilterConditionUseCase(app)).isEqualTo(
166- FilterCondition (
167- packageName,
168- true ,
169- updatedCond
170- )
171- )
172- }
173- }
174-
175- @Test
176- fun `IPアドレスの追加、更新_成功、成功` () {
177- val host = " 192.168.11.4"
178- val port = 5555
179- val addr = " $host :$port "
180- assertThat(saveAddressUseCase(addr).getOrNull()).isNotNull()
181- assertThat(loadAddressUseCase()).isEqualTo(addr)
182-
183- val updatedHost = " 192.168.11.2"
184- val updatedPort = 3456
185- val updatedAddr = " $updatedHost :$updatedPort "
186- assertThat(saveAddressUseCase(updatedAddr).getOrNull()).isNotNull()
187- assertThat(loadAddressUseCase()).isEqualTo(updatedAddr)
188- }
189-
190- @Test
191- fun `IPアドレスの追加、更新_成功、失敗` () {
192- val host = " 192.168.11.4"
193- val port = 5555
194- val addr = " $host :$port "
195- assertThat(saveAddressUseCase(addr).getOrNull()).isNotNull()
196- assertThat(loadAddressUseCase()).isEqualTo(addr)
197-
198- val updatedHost = " 192.168.11.2"
199- val updatedAddr = " $updatedHost :"
200- assertThat(saveAddressUseCase(updatedAddr).exceptionOrNull()).isNotNull()
201- assertThat(loadAddressUseCase()).isEqualTo(addr)
202- }
203-
204- @Test
205- fun `IPアドレスの追加_失敗_hostなし` () {
206- val port = 5555
207- val addr = " :$port "
208- assertThat(saveAddressUseCase(addr).exceptionOrNull()).isNotNull()
209- }
210-
211- @Test
212- fun `IPアドレスの追加_失敗_portなし` () {
213- val host = " 192.168.11.4"
214- val addr = " $host :"
215- assertThat(saveAddressUseCase(addr).exceptionOrNull()).isNotNull()
216- }
217-
218- @Test
219- fun `IPアドレスの追加_失敗_portが数値じゃない` () {
220- val host = " 192.168.11.4"
221- val addr = " $host :test"
222- assertThat(saveAddressUseCase(addr).exceptionOrNull()).isNotNull()
223- }
224-
225- @Test
226- fun `通知送信_失敗` () {
227- runTest(testDispatcher) {
228- assertThat(notifyUseCase(" 通知テスト" ).exceptionOrNull()).isNotNull()
229- }
230- }
231-
232- @Test
233- @LocalOnly
234- fun `通知送信_成功` () {
235- // CI環境で実行しないようにする
236- assumeTrue(" Local only" , System .getenv(" CI" ) == null )
237-
238- runTest(testDispatcher) {
239- val host = " 192.168.10.18" // テスト環境のIPアドレスに変更する
240- val port = 8484
241- val addr = " $host :$port "
242- saveAddressUseCase(addr)
243- assertThat(notifyUseCase(" 通知テスト" ).getOrNull()).isNotNull()
244- }
245- }
246-
24785 @Test
24886 fun `バックアップ、復元` () {
24987 val uri = Uri .fromFile(File .createTempFile(ExportFileName , null , exportFile))
0 commit comments