From 613cbe26641ecc69dde45dba0639b7d4c833329b Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 00:19:09 +0900 Subject: [PATCH 01/25] =?UTF-8?q?UseCase=E3=82=84=E3=83=AA=E3=83=9D?= =?UTF-8?q?=E3=82=B8=E3=83=88=E3=83=AA=E3=81=AECoroutineDispatcher?= =?UTF-8?q?=E3=82=92=E3=82=B3=E3=83=B3=E3=82=B9=E3=83=88=E3=83=A9=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=81=A7=E6=B8=A1=E3=81=9B=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/repository/impl/AppRepositoryImpl.kt | 16 +++++++++------- .../domain/usecase/impl/ExportDataUseCaseImpl.kt | 4 +++- .../domain/usecase/impl/ImportDataUseCaseImpl.kt | 4 +++- .../domain/usecase/impl/LoadAppUseCaseImpl.kt | 6 ++++-- .../NotifyTargetAppNotificationUseCaseImpl.kt | 6 ++++-- .../domain/usecase/impl/NotifyUseCaseImpl.kt | 6 ++++-- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/AndroidApp/data/repository/src/main/kotlin/me/nya_n/notificationnotifier/data/repository/impl/AppRepositoryImpl.kt b/AndroidApp/data/repository/src/main/kotlin/me/nya_n/notificationnotifier/data/repository/impl/AppRepositoryImpl.kt index 427cd3ec..8bd590af 100644 --- a/AndroidApp/data/repository/src/main/kotlin/me/nya_n/notificationnotifier/data/repository/impl/AppRepositoryImpl.kt +++ b/AndroidApp/data/repository/src/main/kotlin/me/nya_n/notificationnotifier/data/repository/impl/AppRepositoryImpl.kt @@ -1,6 +1,7 @@ package me.nya_n.notificationnotifier.data.repository.impl import android.content.pm.PackageManager +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import me.nya_n.notificationnotifier.data.repository.AppRepository @@ -12,16 +13,17 @@ import me.nya_n.notificationnotifier.model.InstalledApp class AppRepositoryImpl( private val filterConditionDao: FilterConditionDao, private val targetAppDao: TargetAppDao, + private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.IO ) : AppRepository { override suspend fun clearAll() { - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { filterConditionDao.clear() targetAppDao.clear() } } override suspend fun getFilterCondition(targetPackageName: String): FilterCondition? { - return withContext(Dispatchers.IO) { + return withContext(coroutineDispatcher) { filterConditionDao.get(targetPackageName) } } @@ -31,31 +33,31 @@ class AppRepositoryImpl( } override suspend fun getFilterConditionList(): List { - return withContext(Dispatchers.IO) { + return withContext(coroutineDispatcher) { filterConditionDao.getAll() } } override suspend fun saveFilterCondition(condition: FilterCondition) { - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { filterConditionDao.insert(condition) } } override suspend fun getTargetAppList(): List { - return withContext(Dispatchers.IO) { + return withContext(coroutineDispatcher) { targetAppDao.getAll() } } override suspend fun addTargetApp(target: InstalledApp) { - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { targetAppDao.insert(target) } } override suspend fun deleteTargetApp(target: InstalledApp) { - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { targetAppDao.delete(target) } } diff --git a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ExportDataUseCaseImpl.kt b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ExportDataUseCaseImpl.kt index 69ac19c4..6d80df50 100644 --- a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ExportDataUseCaseImpl.kt +++ b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ExportDataUseCaseImpl.kt @@ -3,6 +3,7 @@ package me.nya_n.notificationnotifier.domain.usecase.impl import android.content.Context import android.net.Uri import com.google.gson.Gson +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import me.nya_n.notificationnotifier.data.repository.AppRepository @@ -14,6 +15,7 @@ import me.nya_n.notificationnotifier.model.Backup class ExportDataUseCaseImpl( private val userSettingsRepository: UserSettingsRepository, private val appRepository: AppRepository, + private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.IO ) : ExportDataUseCase { override suspend operator fun invoke(context: Context, uri: Uri): Result { return runCatching { @@ -24,7 +26,7 @@ class ExportDataUseCaseImpl( appRepository.getFilterConditionList() ) val json = Gson().toJson(data) - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { context.contentResolver.openOutputStream(uri).use { it?.write(json.toByteArray()) } diff --git a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ImportDataUseCaseImpl.kt b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ImportDataUseCaseImpl.kt index 4c422837..d3d3bba2 100644 --- a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ImportDataUseCaseImpl.kt +++ b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/ImportDataUseCaseImpl.kt @@ -3,6 +3,7 @@ package me.nya_n.notificationnotifier.domain.usecase.impl import android.content.Context import android.net.Uri import com.google.gson.Gson +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import me.nya_n.notificationnotifier.data.repository.AppRepository @@ -16,11 +17,12 @@ import java.io.InputStreamReader class ImportDataUseCaseImpl( private val userSettingsRepository: UserSettingsRepository, private val appRepository: AppRepository, + private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.IO ) : ImportDataUseCase { override suspend operator fun invoke(context: Context, uri: Uri): Result { return runCatching { val sb = StringBuilder() - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { context.contentResolver.openInputStream(uri).use { input -> BufferedReader(InputStreamReader(input)).use { reader -> sb.append(reader.readLine()) diff --git a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/LoadAppUseCaseImpl.kt b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/LoadAppUseCaseImpl.kt index 2c3af9bc..9d3a11ce 100644 --- a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/LoadAppUseCaseImpl.kt +++ b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/LoadAppUseCaseImpl.kt @@ -2,6 +2,7 @@ package me.nya_n.notificationnotifier.domain.usecase.impl import android.content.pm.PackageManager import androidx.annotation.VisibleForTesting +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import me.nya_n.notificationnotifier.data.repository.AppRepository @@ -13,11 +14,12 @@ import me.nya_n.notificationnotifier.model.InstalledApp class LoadAppUseCaseImpl( private val userSettingsRepository: UserSettingsRepository, - private val appRepository: AppRepository + private val appRepository: AppRepository, + private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.IO ) : LoadAppUseCase { override suspend operator fun invoke(pm: PackageManager): Result = - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { val apps = loadInstalledAppList(pm).getOrElse { return@withContext Result.failure(it) } diff --git a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyTargetAppNotificationUseCaseImpl.kt b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyTargetAppNotificationUseCaseImpl.kt index 226f93a6..415992cf 100644 --- a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyTargetAppNotificationUseCaseImpl.kt +++ b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyTargetAppNotificationUseCaseImpl.kt @@ -1,6 +1,7 @@ package me.nya_n.notificationnotifier.domain.usecase.impl import android.app.Notification +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import me.nya_n.notificationnotifier.data.repository.AppRepository @@ -9,7 +10,8 @@ import me.nya_n.notificationnotifier.domain.usecase.NotifyUseCase class NotifyTargetAppNotificationUseCaseImpl( private val appRepository: AppRepository, - private val notifyUseCase: NotifyUseCase + private val notifyUseCase: NotifyUseCase, + private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.IO ) : NotifyTargetAppNotificationUseCase { override suspend operator fun invoke( packageName: String, @@ -37,7 +39,7 @@ class NotifyTargetAppNotificationUseCaseImpl( } } - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { notifyUseCase("${title}\n${message}") } } diff --git a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyUseCaseImpl.kt b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyUseCaseImpl.kt index 982731d5..1dfffee7 100644 --- a/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyUseCaseImpl.kt +++ b/AndroidApp/domain/src/main/kotlin/me/nya_n/notificationnotifier/domain/usecase/impl/NotifyUseCaseImpl.kt @@ -1,5 +1,6 @@ package me.nya_n.notificationnotifier.domain.usecase.impl +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import me.nya_n.notificationnotifier.data.repository.UserSettingsRepository @@ -9,7 +10,8 @@ import java.net.InetSocketAddress import java.net.Socket class NotifyUseCaseImpl( - private val userSettingsRepository: UserSettingsRepository + private val userSettingsRepository: UserSettingsRepository, + private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.IO ) : NotifyUseCase { companion object { private const val CONNECTION_TIMEOUT = 1_000 @@ -17,7 +19,7 @@ class NotifyUseCaseImpl( override suspend operator fun invoke(message: String): Result { return runCatching { - withContext(Dispatchers.IO) { + withContext(coroutineDispatcher) { val settings = userSettingsRepository.getUserSettings() val addr = InetSocketAddress( InetAddress.getByName(settings.host), From 998f14070b1d6e265be6e6ae5757946a0c365edb Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 01:23:28 +0900 Subject: [PATCH 02/25] =?UTF-8?q?kotlinx-coroutines-test=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidApp/domain/build.gradle.kts | 1 + AndroidApp/gradle/libs.versions.toml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/AndroidApp/domain/build.gradle.kts b/AndroidApp/domain/build.gradle.kts index e8cde834..c38ab89d 100644 --- a/AndroidApp/domain/build.gradle.kts +++ b/AndroidApp/domain/build.gradle.kts @@ -25,6 +25,7 @@ dependencies { implementation(libs.com.google.truth) implementation(libs.androidx.test.ext.junit) implementation(libs.androidx.test.espresso.core) + implementation(libs.kotlinx.corountines.test) // その他 implementation(libs.com.google.code.gson) diff --git a/AndroidApp/gradle/libs.versions.toml b/AndroidApp/gradle/libs.versions.toml index 05e732c6..75be45b8 100644 --- a/AndroidApp/gradle/libs.versions.toml +++ b/AndroidApp/gradle/libs.versions.toml @@ -12,6 +12,7 @@ versionName = "1.1" # Library agp = "8.9.3" kotlin = "2.2.21" +kotlinx-coroutines = "1.10.2" com-google-devtools-ksp = "2.3.3" # Kotlinのバージョンに合わせる必要がある com-jaredsburrows-license = "0.9.8" androidx-core = "1.17.0" @@ -63,6 +64,7 @@ androidx-compose-navigation = { module = "androidx.navigation:navigation-compose # test junit = { module = "junit:junit", version.ref = "junit" } +kotlinx-corountines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } com-google-truth = { module = "com.google.truth:truth", version.ref = "com-google-truth" } androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext" } androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-test-espresso" } From 52c4fb020e838bc30f16dc62fb30551aa0e4bb4e Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 01:30:43 +0900 Subject: [PATCH 03/25] runBlocking -> runTest --- .../me/nya_n/notificationnotifier/UseCaseTest.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 8d15e97a..e1c24d5d 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -7,7 +7,7 @@ import androidx.core.content.edit import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.google.common.truth.Truth.assertThat -import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.test.runTest import me.nya_n.notificationnotifier.data.repository.AppRepository import me.nya_n.notificationnotifier.data.repository.UserSettingsRepository import me.nya_n.notificationnotifier.data.repository.impl.AppRepositoryImpl @@ -80,7 +80,7 @@ class UseCaseTest { @Test fun `通知対象アプリの追加、取得、削除`() { - runBlocking { + runTest { val app = InstalledApp("sample", "com.sample.www") AddTargetAppUseCaseImpl(appRepository)(app) @@ -116,7 +116,7 @@ class UseCaseTest { @Test fun `通知条件の追加、取得、更新`() { - runBlocking { + runTest { val cond = "test" val updatedCond = "updated" val packageName = "com.sample.www" @@ -198,7 +198,7 @@ class UseCaseTest { @Test fun `通知送信_失敗`() { - runBlocking { + runTest { assertThat( NotifyUseCaseImpl(userSettingsRepository)("通知テスト").exceptionOrNull() ).isNotNull() @@ -208,7 +208,7 @@ class UseCaseTest { @Test @Ignore("FIXME: socket failed: EPERM (Operation not permitted)") fun `通知送信_成功`() { - runBlocking { + runTest { val host = "192.168.11.4" val port = 5555 val addr = "$host:$port" @@ -222,7 +222,7 @@ class UseCaseTest { @Test fun `バックアップ、復元`() { val uri = Uri.fromFile(File.createTempFile(exportFileName, null, exportFile)) - runBlocking { + runTest { val targetSaver = AddTargetAppUseCaseImpl(appRepository) val condSaver = SaveFilterConditionUseCaseImpl(appRepository) val addrSaver = SaveAddressUseCaseImpl(userSettingsRepository) From d2b4adda4788e82fa1210ad6c5bfb9d6f86a667e Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:37:45 +0900 Subject: [PATCH 04/25] =?UTF-8?q?testDispatcher=E5=AE=9A=E7=BE=A9=E3=80=81?= =?UTF-8?q?runTest=E6=99=82=E3=81=AF=E3=81=9D=E3=82=8C=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=86=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/nya_n/notificationnotifier/UseCaseTest.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index e1c24d5d..bf9f7002 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -7,6 +7,8 @@ import androidx.core.content.edit import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.google.common.truth.Truth.assertThat +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import me.nya_n.notificationnotifier.data.repository.AppRepository import me.nya_n.notificationnotifier.data.repository.UserSettingsRepository @@ -40,6 +42,8 @@ import java.io.File @Suppress("NonAsciiCharacters", "RemoveRedundantBackticks") @RunWith(AndroidJUnit4::class) class UseCaseTest { + @OptIn(ExperimentalCoroutinesApi::class) + private val testDispatcher = UnconfinedTestDispatcher() private lateinit var appContext: Context private lateinit var userSettingsRepository: UserSettingsRepository private lateinit var appRepository: AppRepository @@ -80,7 +84,7 @@ class UseCaseTest { @Test fun `通知対象アプリの追加、取得、削除`() { - runTest { + runTest(testDispatcher) { val app = InstalledApp("sample", "com.sample.www") AddTargetAppUseCaseImpl(appRepository)(app) @@ -116,7 +120,7 @@ class UseCaseTest { @Test fun `通知条件の追加、取得、更新`() { - runTest { + runTest(testDispatcher) { val cond = "test" val updatedCond = "updated" val packageName = "com.sample.www" @@ -198,7 +202,7 @@ class UseCaseTest { @Test fun `通知送信_失敗`() { - runTest { + runTest(testDispatcher) { assertThat( NotifyUseCaseImpl(userSettingsRepository)("通知テスト").exceptionOrNull() ).isNotNull() @@ -208,7 +212,7 @@ class UseCaseTest { @Test @Ignore("FIXME: socket failed: EPERM (Operation not permitted)") fun `通知送信_成功`() { - runTest { + runTest(testDispatcher) { val host = "192.168.11.4" val port = 5555 val addr = "$host:$port" @@ -222,7 +226,7 @@ class UseCaseTest { @Test fun `バックアップ、復元`() { val uri = Uri.fromFile(File.createTempFile(exportFileName, null, exportFile)) - runTest { + runTest(testDispatcher) { val targetSaver = AddTargetAppUseCaseImpl(appRepository) val condSaver = SaveFilterConditionUseCaseImpl(appRepository) val addrSaver = SaveAddressUseCaseImpl(userSettingsRepository) From 7f12cac4fcfc5650c273f4f74fea6b33189d8c10 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:40:07 +0900 Subject: [PATCH 05/25] =?UTF-8?q?usecase,repository=E3=81=A7=E3=82=82testD?= =?UTF-8?q?ispatcher=E3=82=92=E4=BD=BF=E3=81=86=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nya_n/notificationnotifier/UseCaseTest.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index bf9f7002..cba4dad4 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -78,7 +78,8 @@ class UseCaseTest { } appRepository = AppRepositoryImpl( db.filterConditionDao(), - db.targetAppDao() + db.targetAppDao(), + testDispatcher ) } @@ -204,7 +205,10 @@ class UseCaseTest { fun `通知送信_失敗`() { runTest(testDispatcher) { assertThat( - NotifyUseCaseImpl(userSettingsRepository)("通知テスト").exceptionOrNull() + NotifyUseCaseImpl( + userSettingsRepository, + testDispatcher + )("通知テスト").exceptionOrNull() ).isNotNull() } } @@ -218,7 +222,7 @@ class UseCaseTest { val addr = "$host:$port" SaveAddressUseCaseImpl(userSettingsRepository)(addr) assertThat( - NotifyUseCaseImpl(userSettingsRepository)("通知テスト").getOrNull() + NotifyUseCaseImpl(userSettingsRepository, testDispatcher)("通知テスト").getOrNull() ).isNotNull() } } @@ -246,7 +250,10 @@ class UseCaseTest { addrSaver(addr) // バックアップ - ExportDataUseCaseImpl(userSettingsRepository, appRepository)(appContext, uri) + ExportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher)( + appContext, + uri + ) // バックアップ時とは異なるように適当に変更 // ターゲット @@ -256,7 +263,10 @@ class UseCaseTest { toggler.invoke(ToggleIgnoreSummaryUseCase.Args(app)) // 復元 - ImportDataUseCaseImpl(userSettingsRepository, appRepository)(appContext, uri) + ImportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher)( + appContext, + uri + ) // 正常に復元できているか確認 // ターゲット一覧 From 39dc61de974ec35e8af019e842031f06dd724e1e Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:44:48 +0900 Subject: [PATCH 06/25] =?UTF-8?q?AddTargetAppUseCase=E3=81=AE=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/nya_n/notificationnotifier/UseCaseTest.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index cba4dad4..cd6e03f8 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -17,6 +17,7 @@ import me.nya_n.notificationnotifier.data.repository.impl.UserSettingsRepository import me.nya_n.notificationnotifier.data.repository.source.DB import me.nya_n.notificationnotifier.data.repository.source.UserSettingsDataStore import me.nya_n.notificationnotifier.data.repository.util.SharedPreferenceProvider +import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.ToggleIgnoreSummaryUseCase import me.nya_n.notificationnotifier.domain.usecase.impl.AddTargetAppUseCaseImpl @@ -47,6 +48,7 @@ class UseCaseTest { private lateinit var appContext: Context private lateinit var userSettingsRepository: UserSettingsRepository private lateinit var appRepository: AppRepository + private lateinit var addTargetAppUseCase: AddTargetAppUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -81,13 +83,14 @@ class UseCaseTest { db.targetAppDao(), testDispatcher ) + addTargetAppUseCase = AddTargetAppUseCaseImpl(appRepository) } @Test fun `通知対象アプリの追加、取得、削除`() { runTest(testDispatcher) { val app = InstalledApp("sample", "com.sample.www") - AddTargetAppUseCaseImpl(appRepository)(app) + addTargetAppUseCase(app) val loader = LoadAppUseCaseImpl(userSettingsRepository, appRepository) val added = loader.loadTargetList() @@ -231,7 +234,6 @@ class UseCaseTest { fun `バックアップ、復元`() { val uri = Uri.fromFile(File.createTempFile(exportFileName, null, exportFile)) runTest(testDispatcher) { - val targetSaver = AddTargetAppUseCaseImpl(appRepository) val condSaver = SaveFilterConditionUseCaseImpl(appRepository) val addrSaver = SaveAddressUseCaseImpl(userSettingsRepository) val toggler = ToggleIgnoreSummaryUseCaseImpl(appRepository) @@ -240,7 +242,7 @@ class UseCaseTest { // ターゲット val packageName = "test.export" val app = InstalledApp("export", packageName) - targetSaver(app) + addTargetAppUseCase(app) // 条件 val cond = ".*" condSaver(SaveFilterConditionUseCase.Args(app, cond)) @@ -257,7 +259,7 @@ class UseCaseTest { // バックアップ時とは異なるように適当に変更 // ターゲット - targetSaver(InstalledApp("new", "new")) + addTargetAppUseCase(InstalledApp("new", "new")) // 条件 condSaver(SaveFilterConditionUseCase.Args(app, "new")) toggler.invoke(ToggleIgnoreSummaryUseCase.Args(app)) From 33f00d6dda6a18d360fc27865d92846214745ef8 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:47:55 +0900 Subject: [PATCH 07/25] =?UTF-8?q?LoadAppUseCase=E3=81=AE=E7=94=9F=E6=88=90?= =?UTF-8?q?=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/nya_n/notificationnotifier/UseCaseTest.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index cd6e03f8..ca77ed32 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -49,6 +49,7 @@ class UseCaseTest { private lateinit var userSettingsRepository: UserSettingsRepository private lateinit var appRepository: AppRepository private lateinit var addTargetAppUseCase: AddTargetAppUseCase + private lateinit var loadAppUseCase: LoadAppUseCaseImpl private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -84,6 +85,7 @@ class UseCaseTest { testDispatcher ) addTargetAppUseCase = AddTargetAppUseCaseImpl(appRepository) + loadAppUseCase = LoadAppUseCaseImpl(userSettingsRepository, appRepository) } @Test @@ -92,13 +94,12 @@ class UseCaseTest { val app = InstalledApp("sample", "com.sample.www") addTargetAppUseCase(app) - val loader = LoadAppUseCaseImpl(userSettingsRepository, appRepository) - val added = loader.loadTargetList() + val added = loadAppUseCase.loadTargetList() assertThat(added).hasSize(1) assertThat(added.first()).isEqualTo(app) DeleteTargetAppUseCaseImpl(appRepository)(app) - val deleted = loader.loadTargetList() + val deleted = loadAppUseCase.loadTargetList() assertThat(deleted).isEmpty() } } @@ -106,7 +107,7 @@ class UseCaseTest { @Test fun `インストール済みアプリの取得_成功(ついでにアプリ一覧取得権限許可処理も)`() { PackageVisibilityGrantedUseCaseImpl(userSettingsRepository)() - val ret = LoadAppUseCaseImpl(userSettingsRepository, appRepository).loadInstalledAppList(pm) + val ret = loadAppUseCase.loadInstalledAppList(pm) assertThat(ret.getOrNull()).apply { isNotNull() isNotEmpty() @@ -115,7 +116,7 @@ class UseCaseTest { @Test fun `インストール済みアプリの取得_失敗`() { - val ret = LoadAppUseCaseImpl(userSettingsRepository, appRepository).loadInstalledAppList(pm) + val ret = loadAppUseCase.loadInstalledAppList(pm) assertThat(ret.exceptionOrNull()).apply { isNotNull() isInstanceOf(me.nya_n.notificationnotifier.model.AppException.PermissionDeniedException::class.java) @@ -272,8 +273,7 @@ class UseCaseTest { // 正常に復元できているか確認 // ターゲット一覧 - val restoreTargets = - LoadAppUseCaseImpl(userSettingsRepository, appRepository).loadTargetList() + val restoreTargets = loadAppUseCase.loadTargetList() assertThat(restoreTargets).apply { hasSize(1) contains(app) From 31d8ab56e0559ef5493f6de7bccb032f1d787eaa Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:49:26 +0900 Subject: [PATCH 08/25] =?UTF-8?q?DeleteTargetAppUseCase=E3=81=AE=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/nya_n/notificationnotifier/UseCaseTest.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index ca77ed32..89f3ca34 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -18,6 +18,7 @@ import me.nya_n.notificationnotifier.data.repository.source.DB import me.nya_n.notificationnotifier.data.repository.source.UserSettingsDataStore import me.nya_n.notificationnotifier.data.repository.util.SharedPreferenceProvider import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase +import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.ToggleIgnoreSummaryUseCase import me.nya_n.notificationnotifier.domain.usecase.impl.AddTargetAppUseCaseImpl @@ -50,6 +51,7 @@ class UseCaseTest { private lateinit var appRepository: AppRepository private lateinit var addTargetAppUseCase: AddTargetAppUseCase private lateinit var loadAppUseCase: LoadAppUseCaseImpl + private lateinit var deleteTargetAppUseCase: DeleteTargetAppUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -86,6 +88,7 @@ class UseCaseTest { ) addTargetAppUseCase = AddTargetAppUseCaseImpl(appRepository) loadAppUseCase = LoadAppUseCaseImpl(userSettingsRepository, appRepository) + deleteTargetAppUseCase = DeleteTargetAppUseCaseImpl(appRepository) } @Test @@ -98,7 +101,7 @@ class UseCaseTest { assertThat(added).hasSize(1) assertThat(added.first()).isEqualTo(app) - DeleteTargetAppUseCaseImpl(appRepository)(app) + deleteTargetAppUseCase(app) val deleted = loadAppUseCase.loadTargetList() assertThat(deleted).isEmpty() } From 0b97ea13f5c8ca8661b95f8d569a10c11736485c Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:50:31 +0900 Subject: [PATCH 09/25] =?UTF-8?q?PackageVisibilityGrantedUseCase=E3=81=AE?= =?UTF-8?q?=E7=94=9F=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/nya_n/notificationnotifier/UseCaseTest.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 89f3ca34..6463278d 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -19,6 +19,7 @@ import me.nya_n.notificationnotifier.data.repository.source.UserSettingsDataStor import me.nya_n.notificationnotifier.data.repository.util.SharedPreferenceProvider import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase +import me.nya_n.notificationnotifier.domain.usecase.PackageVisibilityGrantedUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.ToggleIgnoreSummaryUseCase import me.nya_n.notificationnotifier.domain.usecase.impl.AddTargetAppUseCaseImpl @@ -52,6 +53,7 @@ class UseCaseTest { private lateinit var addTargetAppUseCase: AddTargetAppUseCase private lateinit var loadAppUseCase: LoadAppUseCaseImpl private lateinit var deleteTargetAppUseCase: DeleteTargetAppUseCase + private lateinit var packageVisibilityGrantedUseCase: PackageVisibilityGrantedUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -89,6 +91,8 @@ class UseCaseTest { addTargetAppUseCase = AddTargetAppUseCaseImpl(appRepository) loadAppUseCase = LoadAppUseCaseImpl(userSettingsRepository, appRepository) deleteTargetAppUseCase = DeleteTargetAppUseCaseImpl(appRepository) + packageVisibilityGrantedUseCase = + PackageVisibilityGrantedUseCaseImpl(userSettingsRepository) } @Test @@ -109,7 +113,7 @@ class UseCaseTest { @Test fun `インストール済みアプリの取得_成功(ついでにアプリ一覧取得権限許可処理も)`() { - PackageVisibilityGrantedUseCaseImpl(userSettingsRepository)() + packageVisibilityGrantedUseCase() val ret = loadAppUseCase.loadInstalledAppList(pm) assertThat(ret.getOrNull()).apply { isNotNull() From 95aaf8f869ccc9977cda13453989557e409ce3a1 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:52:05 +0900 Subject: [PATCH 10/25] =?UTF-8?q?SaveFilterConditionUseCase=E3=81=AE?= =?UTF-8?q?=E7=94=9F=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/nya_n/notificationnotifier/UseCaseTest.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 6463278d..9014dd14 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -54,6 +54,7 @@ class UseCaseTest { private lateinit var loadAppUseCase: LoadAppUseCaseImpl private lateinit var deleteTargetAppUseCase: DeleteTargetAppUseCase private lateinit var packageVisibilityGrantedUseCase: PackageVisibilityGrantedUseCase + private lateinit var saveFilterConditionUseCase: SaveFilterConditionUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -93,6 +94,7 @@ class UseCaseTest { deleteTargetAppUseCase = DeleteTargetAppUseCaseImpl(appRepository) packageVisibilityGrantedUseCase = PackageVisibilityGrantedUseCaseImpl(userSettingsRepository) + saveFilterConditionUseCase = SaveFilterConditionUseCaseImpl(appRepository) } @Test @@ -138,16 +140,15 @@ class UseCaseTest { val packageName = "com.sample.www" val app = InstalledApp("sample", packageName) - val saver = SaveFilterConditionUseCaseImpl(appRepository) val toggler = ToggleIgnoreSummaryUseCaseImpl(appRepository) val loader = LoadFilterConditionUseCaseImpl(appRepository) // 追加 - saver(SaveFilterConditionUseCase.Args(app, cond)) + saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, cond)) assertThat(loader(app)).isEqualTo(FilterCondition(packageName, false, cond)) // メッセージ条件の更新 - saver(SaveFilterConditionUseCase.Args(app, updatedCond)) + saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, updatedCond)) assertThat(loader(app)).isEqualTo(FilterCondition(packageName, false, updatedCond)) // サマリー条件の更新 @@ -242,7 +243,6 @@ class UseCaseTest { fun `バックアップ、復元`() { val uri = Uri.fromFile(File.createTempFile(exportFileName, null, exportFile)) runTest(testDispatcher) { - val condSaver = SaveFilterConditionUseCaseImpl(appRepository) val addrSaver = SaveAddressUseCaseImpl(userSettingsRepository) val toggler = ToggleIgnoreSummaryUseCaseImpl(appRepository) @@ -253,7 +253,7 @@ class UseCaseTest { addTargetAppUseCase(app) // 条件 val cond = ".*" - condSaver(SaveFilterConditionUseCase.Args(app, cond)) + saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, cond)) toggler.invoke(ToggleIgnoreSummaryUseCase.Args(app)) // アドレス val addr = "192.168.1.4:5050" @@ -269,7 +269,7 @@ class UseCaseTest { // ターゲット addTargetAppUseCase(InstalledApp("new", "new")) // 条件 - condSaver(SaveFilterConditionUseCase.Args(app, "new")) + saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, "new")) toggler.invoke(ToggleIgnoreSummaryUseCase.Args(app)) // 復元 From 6df193696cd9e1166d077572bcf5a5a66c243388 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:53:19 +0900 Subject: [PATCH 11/25] =?UTF-8?q?ToggleIgnoreSummaryUseCase=E3=81=AE?= =?UTF-8?q?=E7=94=9F=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/nya_n/notificationnotifier/UseCaseTest.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 9014dd14..155a1e56 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -55,6 +55,7 @@ class UseCaseTest { private lateinit var deleteTargetAppUseCase: DeleteTargetAppUseCase private lateinit var packageVisibilityGrantedUseCase: PackageVisibilityGrantedUseCase private lateinit var saveFilterConditionUseCase: SaveFilterConditionUseCase + private lateinit var toggleIgnoreSummaryUseCase: ToggleIgnoreSummaryUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -95,6 +96,7 @@ class UseCaseTest { packageVisibilityGrantedUseCase = PackageVisibilityGrantedUseCaseImpl(userSettingsRepository) saveFilterConditionUseCase = SaveFilterConditionUseCaseImpl(appRepository) + toggleIgnoreSummaryUseCase = ToggleIgnoreSummaryUseCaseImpl(appRepository) } @Test @@ -140,7 +142,6 @@ class UseCaseTest { val packageName = "com.sample.www" val app = InstalledApp("sample", packageName) - val toggler = ToggleIgnoreSummaryUseCaseImpl(appRepository) val loader = LoadFilterConditionUseCaseImpl(appRepository) // 追加 @@ -152,7 +153,7 @@ class UseCaseTest { assertThat(loader(app)).isEqualTo(FilterCondition(packageName, false, updatedCond)) // サマリー条件の更新 - toggler.invoke(ToggleIgnoreSummaryUseCase.Args(app)) + toggleIgnoreSummaryUseCase.invoke(ToggleIgnoreSummaryUseCase.Args(app)) assertThat(loader(app)).isEqualTo(FilterCondition(packageName, true, updatedCond)) } } @@ -244,7 +245,6 @@ class UseCaseTest { val uri = Uri.fromFile(File.createTempFile(exportFileName, null, exportFile)) runTest(testDispatcher) { val addrSaver = SaveAddressUseCaseImpl(userSettingsRepository) - val toggler = ToggleIgnoreSummaryUseCaseImpl(appRepository) // 初期値の保存 // ターゲット @@ -254,7 +254,7 @@ class UseCaseTest { // 条件 val cond = ".*" saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, cond)) - toggler.invoke(ToggleIgnoreSummaryUseCase.Args(app)) + toggleIgnoreSummaryUseCase.invoke(ToggleIgnoreSummaryUseCase.Args(app)) // アドレス val addr = "192.168.1.4:5050" addrSaver(addr) @@ -270,7 +270,7 @@ class UseCaseTest { addTargetAppUseCase(InstalledApp("new", "new")) // 条件 saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, "new")) - toggler.invoke(ToggleIgnoreSummaryUseCase.Args(app)) + toggleIgnoreSummaryUseCase.invoke(ToggleIgnoreSummaryUseCase.Args(app)) // 復元 ImportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher)( From 17f74b003bb6f74556f244cbc1d6a6e9a2695660 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:54:56 +0900 Subject: [PATCH 12/25] =?UTF-8?q?LoadFilterConditionUseCase=E3=81=AE?= =?UTF-8?q?=E7=94=9F=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nya_n/notificationnotifier/UseCaseTest.kt | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 155a1e56..1c105aee 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -19,6 +19,7 @@ import me.nya_n.notificationnotifier.data.repository.source.UserSettingsDataStor import me.nya_n.notificationnotifier.data.repository.util.SharedPreferenceProvider import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase +import me.nya_n.notificationnotifier.domain.usecase.LoadFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.PackageVisibilityGrantedUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.ToggleIgnoreSummaryUseCase @@ -56,6 +57,7 @@ class UseCaseTest { private lateinit var packageVisibilityGrantedUseCase: PackageVisibilityGrantedUseCase private lateinit var saveFilterConditionUseCase: SaveFilterConditionUseCase private lateinit var toggleIgnoreSummaryUseCase: ToggleIgnoreSummaryUseCase + private lateinit var loadFilterConditionUseCase: LoadFilterConditionUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -97,6 +99,7 @@ class UseCaseTest { PackageVisibilityGrantedUseCaseImpl(userSettingsRepository) saveFilterConditionUseCase = SaveFilterConditionUseCaseImpl(appRepository) toggleIgnoreSummaryUseCase = ToggleIgnoreSummaryUseCaseImpl(appRepository) + loadFilterConditionUseCase = LoadFilterConditionUseCaseImpl(appRepository) } @Test @@ -142,19 +145,35 @@ class UseCaseTest { val packageName = "com.sample.www" val app = InstalledApp("sample", packageName) - val loader = LoadFilterConditionUseCaseImpl(appRepository) - // 追加 saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, cond)) - assertThat(loader(app)).isEqualTo(FilterCondition(packageName, false, cond)) + assertThat(loadFilterConditionUseCase(app)).isEqualTo( + FilterCondition( + packageName, + false, + cond + ) + ) // メッセージ条件の更新 saveFilterConditionUseCase(SaveFilterConditionUseCase.Args(app, updatedCond)) - assertThat(loader(app)).isEqualTo(FilterCondition(packageName, false, updatedCond)) + assertThat(loadFilterConditionUseCase(app)).isEqualTo( + FilterCondition( + packageName, + false, + updatedCond + ) + ) // サマリー条件の更新 toggleIgnoreSummaryUseCase.invoke(ToggleIgnoreSummaryUseCase.Args(app)) - assertThat(loader(app)).isEqualTo(FilterCondition(packageName, true, updatedCond)) + assertThat(loadFilterConditionUseCase(app)).isEqualTo( + FilterCondition( + packageName, + true, + updatedCond + ) + ) } } @@ -286,7 +305,7 @@ class UseCaseTest { contains(app) } // 条件 - val restoreCond = LoadFilterConditionUseCaseImpl(appRepository)(app) + val restoreCond = loadFilterConditionUseCase(app) assertThat(restoreCond).isEqualTo(FilterCondition(packageName, true, cond)) // アドレス val restoreAddr = LoadAddressUseCaseImpl(userSettingsRepository)() From 6fafc75072ad7502ebb09af27f5baa8e3dd50819 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:57:12 +0900 Subject: [PATCH 13/25] =?UTF-8?q?SaveAddressUseCase=E3=81=AE=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nya_n/notificationnotifier/UseCaseTest.kt | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 1c105aee..f3789465 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -21,6 +21,7 @@ import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.PackageVisibilityGrantedUseCase +import me.nya_n.notificationnotifier.domain.usecase.SaveAddressUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.ToggleIgnoreSummaryUseCase import me.nya_n.notificationnotifier.domain.usecase.impl.AddTargetAppUseCaseImpl @@ -58,6 +59,7 @@ class UseCaseTest { private lateinit var saveFilterConditionUseCase: SaveFilterConditionUseCase private lateinit var toggleIgnoreSummaryUseCase: ToggleIgnoreSummaryUseCase private lateinit var loadFilterConditionUseCase: LoadFilterConditionUseCase + private lateinit var saveAddressUseCase: SaveAddressUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -100,6 +102,7 @@ class UseCaseTest { saveFilterConditionUseCase = SaveFilterConditionUseCaseImpl(appRepository) toggleIgnoreSummaryUseCase = ToggleIgnoreSummaryUseCaseImpl(appRepository) loadFilterConditionUseCase = LoadFilterConditionUseCaseImpl(appRepository) + saveAddressUseCase = SaveAddressUseCaseImpl(userSettingsRepository) } @Test @@ -179,36 +182,34 @@ class UseCaseTest { @Test fun `IPアドレスの追加、更新_成功、成功`() { - val saver = SaveAddressUseCaseImpl(userSettingsRepository) val loader = LoadAddressUseCaseImpl(userSettingsRepository) val host = "192.168.11.4" val port = 5555 val addr = "$host:$port" - assertThat(saver(addr).getOrNull()).isNotNull() + assertThat(saveAddressUseCase(addr).getOrNull()).isNotNull() assertThat(loader()).isEqualTo(addr) val updatedHost = "192.168.11.2" val updatedPort = 3456 val updatedAddr = "$updatedHost:$updatedPort" - assertThat(saver(updatedAddr).getOrNull()).isNotNull() + assertThat(saveAddressUseCase(updatedAddr).getOrNull()).isNotNull() assertThat(loader()).isEqualTo(updatedAddr) } @Test fun `IPアドレスの追加、更新_成功、失敗`() { - val saver = SaveAddressUseCaseImpl(userSettingsRepository) val loader = LoadAddressUseCaseImpl(userSettingsRepository) val host = "192.168.11.4" val port = 5555 val addr = "$host:$port" - assertThat(saver(addr).getOrNull()).isNotNull() + assertThat(saveAddressUseCase(addr).getOrNull()).isNotNull() assertThat(loader()).isEqualTo(addr) val updatedHost = "192.168.11.2" val updatedAddr = "$updatedHost:" - assertThat(saver(updatedAddr).exceptionOrNull()).isNotNull() + assertThat(saveAddressUseCase(updatedAddr).exceptionOrNull()).isNotNull() assertThat(loader()).isEqualTo(addr) } @@ -216,21 +217,21 @@ class UseCaseTest { fun `IPアドレスの追加_失敗_hostなし`() { val port = 5555 val addr = ":$port" - assertThat(SaveAddressUseCaseImpl(userSettingsRepository)(addr).exceptionOrNull()).isNotNull() + assertThat(saveAddressUseCase(addr).exceptionOrNull()).isNotNull() } @Test fun `IPアドレスの追加_失敗_portなし`() { val host = "192.168.11.4" val addr = "$host:" - assertThat(SaveAddressUseCaseImpl(userSettingsRepository)(addr).exceptionOrNull()).isNotNull() + assertThat(saveAddressUseCase(addr).exceptionOrNull()).isNotNull() } @Test fun `IPアドレスの追加_失敗_portが数値じゃない`() { val host = "192.168.11.4" val addr = "$host:test" - assertThat(SaveAddressUseCaseImpl(userSettingsRepository)(addr).exceptionOrNull()).isNotNull() + assertThat(saveAddressUseCase(addr).exceptionOrNull()).isNotNull() } @Test @@ -252,7 +253,7 @@ class UseCaseTest { val host = "192.168.11.4" val port = 5555 val addr = "$host:$port" - SaveAddressUseCaseImpl(userSettingsRepository)(addr) + saveAddressUseCase(addr) assertThat( NotifyUseCaseImpl(userSettingsRepository, testDispatcher)("通知テスト").getOrNull() ).isNotNull() @@ -263,8 +264,6 @@ class UseCaseTest { fun `バックアップ、復元`() { val uri = Uri.fromFile(File.createTempFile(exportFileName, null, exportFile)) runTest(testDispatcher) { - val addrSaver = SaveAddressUseCaseImpl(userSettingsRepository) - // 初期値の保存 // ターゲット val packageName = "test.export" @@ -276,7 +275,7 @@ class UseCaseTest { toggleIgnoreSummaryUseCase.invoke(ToggleIgnoreSummaryUseCase.Args(app)) // アドレス val addr = "192.168.1.4:5050" - addrSaver(addr) + saveAddressUseCase(addr) // バックアップ ExportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher)( From ddbcb61443739cf29c329f738089eb852e981b15 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:58:23 +0900 Subject: [PATCH 14/25] =?UTF-8?q?LoadAddressUseCase=E3=81=AE=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nya_n/notificationnotifier/UseCaseTest.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index f3789465..785541a2 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -19,6 +19,7 @@ import me.nya_n.notificationnotifier.data.repository.source.UserSettingsDataStor import me.nya_n.notificationnotifier.data.repository.util.SharedPreferenceProvider import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase +import me.nya_n.notificationnotifier.domain.usecase.LoadAddressUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.PackageVisibilityGrantedUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveAddressUseCase @@ -60,6 +61,7 @@ class UseCaseTest { private lateinit var toggleIgnoreSummaryUseCase: ToggleIgnoreSummaryUseCase private lateinit var loadFilterConditionUseCase: LoadFilterConditionUseCase private lateinit var saveAddressUseCase: SaveAddressUseCase + private lateinit var loadAddressUseCase: LoadAddressUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -103,6 +105,7 @@ class UseCaseTest { toggleIgnoreSummaryUseCase = ToggleIgnoreSummaryUseCaseImpl(appRepository) loadFilterConditionUseCase = LoadFilterConditionUseCaseImpl(appRepository) saveAddressUseCase = SaveAddressUseCaseImpl(userSettingsRepository) + loadAddressUseCase = LoadAddressUseCaseImpl(userSettingsRepository) } @Test @@ -182,35 +185,31 @@ class UseCaseTest { @Test fun `IPアドレスの追加、更新_成功、成功`() { - val loader = LoadAddressUseCaseImpl(userSettingsRepository) - val host = "192.168.11.4" val port = 5555 val addr = "$host:$port" assertThat(saveAddressUseCase(addr).getOrNull()).isNotNull() - assertThat(loader()).isEqualTo(addr) + assertThat(loadAddressUseCase()).isEqualTo(addr) val updatedHost = "192.168.11.2" val updatedPort = 3456 val updatedAddr = "$updatedHost:$updatedPort" assertThat(saveAddressUseCase(updatedAddr).getOrNull()).isNotNull() - assertThat(loader()).isEqualTo(updatedAddr) + assertThat(loadAddressUseCase()).isEqualTo(updatedAddr) } @Test fun `IPアドレスの追加、更新_成功、失敗`() { - val loader = LoadAddressUseCaseImpl(userSettingsRepository) - val host = "192.168.11.4" val port = 5555 val addr = "$host:$port" assertThat(saveAddressUseCase(addr).getOrNull()).isNotNull() - assertThat(loader()).isEqualTo(addr) + assertThat(loadAddressUseCase()).isEqualTo(addr) val updatedHost = "192.168.11.2" val updatedAddr = "$updatedHost:" assertThat(saveAddressUseCase(updatedAddr).exceptionOrNull()).isNotNull() - assertThat(loader()).isEqualTo(addr) + assertThat(loadAddressUseCase()).isEqualTo(addr) } @Test @@ -307,7 +306,7 @@ class UseCaseTest { val restoreCond = loadFilterConditionUseCase(app) assertThat(restoreCond).isEqualTo(FilterCondition(packageName, true, cond)) // アドレス - val restoreAddr = LoadAddressUseCaseImpl(userSettingsRepository)() + val restoreAddr = loadAddressUseCase() assertThat(restoreAddr).isEqualTo(addr) } } From ce0c20e8e2bac55a7091fd152b169abac59a265d Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 02:59:54 +0900 Subject: [PATCH 15/25] =?UTF-8?q?NotifyUseCase=E3=81=AE=E7=94=9F=E6=88=90?= =?UTF-8?q?=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/nya_n/notificationnotifier/UseCaseTest.kt | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 785541a2..40cc4c33 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -21,6 +21,7 @@ import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadAddressUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadFilterConditionUseCase +import me.nya_n.notificationnotifier.domain.usecase.NotifyUseCase import me.nya_n.notificationnotifier.domain.usecase.PackageVisibilityGrantedUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveAddressUseCase import me.nya_n.notificationnotifier.domain.usecase.SaveFilterConditionUseCase @@ -62,6 +63,7 @@ class UseCaseTest { private lateinit var loadFilterConditionUseCase: LoadFilterConditionUseCase private lateinit var saveAddressUseCase: SaveAddressUseCase private lateinit var loadAddressUseCase: LoadAddressUseCase + private lateinit var notifyUseCase: NotifyUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -106,6 +108,7 @@ class UseCaseTest { loadFilterConditionUseCase = LoadFilterConditionUseCaseImpl(appRepository) saveAddressUseCase = SaveAddressUseCaseImpl(userSettingsRepository) loadAddressUseCase = LoadAddressUseCaseImpl(userSettingsRepository) + notifyUseCase = NotifyUseCaseImpl(userSettingsRepository, testDispatcher) } @Test @@ -236,12 +239,7 @@ class UseCaseTest { @Test fun `通知送信_失敗`() { runTest(testDispatcher) { - assertThat( - NotifyUseCaseImpl( - userSettingsRepository, - testDispatcher - )("通知テスト").exceptionOrNull() - ).isNotNull() + assertThat(notifyUseCase("通知テスト").exceptionOrNull()).isNotNull() } } @@ -253,9 +251,7 @@ class UseCaseTest { val port = 5555 val addr = "$host:$port" saveAddressUseCase(addr) - assertThat( - NotifyUseCaseImpl(userSettingsRepository, testDispatcher)("通知テスト").getOrNull() - ).isNotNull() + assertThat(notifyUseCase("通知テスト").getOrNull()).isNotNull() } } From a9789bd325dfbcdc3327400523692c2dd0fb939b Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 03:00:52 +0900 Subject: [PATCH 16/25] =?UTF-8?q?ExportDataUseCase=E3=81=AE=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/nya_n/notificationnotifier/UseCaseTest.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 40cc4c33..f07db98b 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -19,6 +19,7 @@ import me.nya_n.notificationnotifier.data.repository.source.UserSettingsDataStor import me.nya_n.notificationnotifier.data.repository.util.SharedPreferenceProvider import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase +import me.nya_n.notificationnotifier.domain.usecase.ExportDataUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadAddressUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.NotifyUseCase @@ -64,6 +65,7 @@ class UseCaseTest { private lateinit var saveAddressUseCase: SaveAddressUseCase private lateinit var loadAddressUseCase: LoadAddressUseCase private lateinit var notifyUseCase: NotifyUseCase + private lateinit var exportDataUseCase: ExportDataUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -109,6 +111,8 @@ class UseCaseTest { saveAddressUseCase = SaveAddressUseCaseImpl(userSettingsRepository) loadAddressUseCase = LoadAddressUseCaseImpl(userSettingsRepository) notifyUseCase = NotifyUseCaseImpl(userSettingsRepository, testDispatcher) + exportDataUseCase = + ExportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher) } @Test @@ -273,10 +277,7 @@ class UseCaseTest { saveAddressUseCase(addr) // バックアップ - ExportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher)( - appContext, - uri - ) + exportDataUseCase(appContext, uri) // バックアップ時とは異なるように適当に変更 // ターゲット From 2ad6fa7c253cc6497dfcab38c0ed165814f189e0 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 03:01:42 +0900 Subject: [PATCH 17/25] =?UTF-8?q?ImportDataUseCase=E3=81=AE=E7=94=9F?= =?UTF-8?q?=E6=88=90=E3=82=92setUp=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/nya_n/notificationnotifier/UseCaseTest.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index f07db98b..51fd3fca 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -20,6 +20,7 @@ import me.nya_n.notificationnotifier.data.repository.util.SharedPreferenceProvid import me.nya_n.notificationnotifier.domain.usecase.AddTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.DeleteTargetAppUseCase import me.nya_n.notificationnotifier.domain.usecase.ExportDataUseCase +import me.nya_n.notificationnotifier.domain.usecase.ImportDataUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadAddressUseCase import me.nya_n.notificationnotifier.domain.usecase.LoadFilterConditionUseCase import me.nya_n.notificationnotifier.domain.usecase.NotifyUseCase @@ -66,6 +67,7 @@ class UseCaseTest { private lateinit var loadAddressUseCase: LoadAddressUseCase private lateinit var notifyUseCase: NotifyUseCase private lateinit var exportDataUseCase: ExportDataUseCase + private lateinit var importDataUseCase: ImportDataUseCase private lateinit var pm: PackageManager private lateinit var exportFile: File private val exportFileName: String = "export.json" @@ -113,6 +115,8 @@ class UseCaseTest { notifyUseCase = NotifyUseCaseImpl(userSettingsRepository, testDispatcher) exportDataUseCase = ExportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher) + importDataUseCase = + ImportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher) } @Test @@ -287,10 +291,7 @@ class UseCaseTest { toggleIgnoreSummaryUseCase.invoke(ToggleIgnoreSummaryUseCase.Args(app)) // 復元 - ImportDataUseCaseImpl(userSettingsRepository, appRepository, testDispatcher)( - appContext, - uri - ) + importDataUseCase(appContext, uri) // 正常に復元できているか確認 // ターゲット一覧 From 811487295397635bbba93889a3466ffa676e3e66 Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 03:03:49 +0900 Subject: [PATCH 18/25] =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=91=E3=83=86?= =?UTF-8?q?=E3=82=A3=E3=81=AB=E3=81=99=E3=82=8B=E5=BF=85=E8=A6=81=E3=81=AE?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=82=82=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/nya_n/notificationnotifier/UseCaseTest.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt index 51fd3fca..81ce05aa 100644 --- a/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt +++ b/AndroidApp/domain/src/androidTest/java/me/nya_n/notificationnotifier/UseCaseTest.kt @@ -10,8 +10,6 @@ import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest -import me.nya_n.notificationnotifier.data.repository.AppRepository -import me.nya_n.notificationnotifier.data.repository.UserSettingsRepository import me.nya_n.notificationnotifier.data.repository.impl.AppRepositoryImpl import me.nya_n.notificationnotifier.data.repository.impl.UserSettingsRepositoryImpl import me.nya_n.notificationnotifier.data.repository.source.DB @@ -54,8 +52,6 @@ class UseCaseTest { @OptIn(ExperimentalCoroutinesApi::class) private val testDispatcher = UnconfinedTestDispatcher() private lateinit var appContext: Context - private lateinit var userSettingsRepository: UserSettingsRepository - private lateinit var appRepository: AppRepository private lateinit var addTargetAppUseCase: AddTargetAppUseCase private lateinit var loadAppUseCase: LoadAppUseCaseImpl private lateinit var deleteTargetAppUseCase: DeleteTargetAppUseCase @@ -82,7 +78,7 @@ class UseCaseTest { } } pm = appContext.packageManager - userSettingsRepository = UserSettingsRepositoryImpl( + val userSettingsRepository = UserSettingsRepositoryImpl( UserSettingsDataStore( SharedPreferenceProvider.create( appContext, @@ -97,7 +93,7 @@ class UseCaseTest { val db = DB.get(appContext, true).apply { clearAllTables() } - appRepository = AppRepositoryImpl( + val appRepository = AppRepositoryImpl( db.filterConditionDao(), db.targetAppDao(), testDispatcher From ff0027d09cde1596430c81d59c07fed844c0a38e Mon Sep 17 00:00:00 2001 From: Takuya Nishizawa Date: Tue, 13 Jan 2026 03:19:36 +0900 Subject: [PATCH 19/25] =?UTF-8?q?=E5=BE=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspectionProfiles/Project_Default.xml | 1 + .../nya_n/notificationnotifier/UseCaseTest.kt | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/AndroidApp/.idea/inspectionProfiles/Project_Default.xml b/AndroidApp/.idea/inspectionProfiles/Project_Default.xml index 7061a0d6..343687f4 100644 --- a/AndroidApp/.idea/inspectionProfiles/Project_Default.xml +++ b/AndroidApp/.idea/inspectionProfiles/Project_Default.xml @@ -17,6 +17,7 @@