mirror of
https://github.com/afollestad/nock-nock.git
synced 2025-09-05 17:16:05 +00:00
Koin setup tweaks
This commit is contained in:
parent
8470b65df1
commit
9a849ab8ac
13 changed files with 100 additions and 165 deletions
|
@ -13,6 +13,8 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
@file:Suppress("unused")
|
||||||
|
|
||||||
package com.afollestad.nocknock
|
package com.afollestad.nocknock
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
|
@ -21,7 +23,7 @@ import com.afollestad.nocknock.koin.mainModule
|
||||||
import com.afollestad.nocknock.koin.viewModelModule
|
import com.afollestad.nocknock.koin.viewModelModule
|
||||||
import com.afollestad.nocknock.notifications.NockNotificationManager
|
import com.afollestad.nocknock.notifications.NockNotificationManager
|
||||||
import com.afollestad.nocknock.notifications.notificationsModule
|
import com.afollestad.nocknock.notifications.notificationsModule
|
||||||
import com.afollestad.nocknock.utilities.utilitiesModule
|
import com.afollestad.nocknock.utilities.commonModule
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
import org.koin.android.ext.android.startKoin
|
import org.koin.android.ext.android.startKoin
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
@ -42,7 +44,7 @@ class NockNockApp : Application() {
|
||||||
val modules = listOf(
|
val modules = listOf(
|
||||||
mainModule,
|
mainModule,
|
||||||
engineModule,
|
engineModule,
|
||||||
utilitiesModule,
|
commonModule,
|
||||||
notificationsModule,
|
notificationsModule,
|
||||||
viewModelModule
|
viewModelModule
|
||||||
)
|
)
|
||||||
|
|
|
@ -21,23 +21,19 @@ import android.app.job.JobScheduler
|
||||||
import android.content.Context.JOB_SCHEDULER_SERVICE
|
import android.content.Context.JOB_SCHEDULER_SERVICE
|
||||||
import android.content.Context.NOTIFICATION_SERVICE
|
import android.content.Context.NOTIFICATION_SERVICE
|
||||||
import androidx.room.Room.databaseBuilder
|
import androidx.room.Room.databaseBuilder
|
||||||
import com.afollestad.nocknock.R
|
|
||||||
import com.afollestad.nocknock.data.AppDatabase
|
import com.afollestad.nocknock.data.AppDatabase
|
||||||
import com.afollestad.nocknock.notifications.Qualifiers.APP_ICON_RES
|
import com.afollestad.nocknock.notifications.Qualifiers.MAIN_ACTIVITY_CLASS
|
||||||
import com.afollestad.nocknock.ui.main.MainActivity
|
import com.afollestad.nocknock.ui.main.MainActivity
|
||||||
import com.afollestad.nocknock.utilities.Qualifiers.MAIN_ACTIVITY_CLASS
|
|
||||||
import com.afollestad.nocknock.utilities.ext.systemService
|
import com.afollestad.nocknock.utilities.ext.systemService
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import org.koin.dsl.module.module
|
import org.koin.dsl.module.module
|
||||||
|
|
||||||
const val MAIN_MODULE = "main"
|
val mainActivityCls = MainActivity::class.java
|
||||||
|
|
||||||
/** @author Aidan Follestad (@afollestad) */
|
/** @author Aidan Follestad (@afollestad) */
|
||||||
val mainModule = module(MAIN_MODULE) {
|
val mainModule = module {
|
||||||
|
|
||||||
single(name = APP_ICON_RES) { R.mipmap.ic_launcher }
|
single(name = MAIN_ACTIVITY_CLASS) { mainActivityCls }
|
||||||
|
|
||||||
single(name = MAIN_ACTIVITY_CLASS) { MainActivity::class.java }
|
|
||||||
|
|
||||||
single { databaseBuilder(get(), AppDatabase::class.java, "NockNock.db").build() }
|
single { databaseBuilder(get(), AppDatabase::class.java, "NockNock.db").build() }
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,8 @@ import com.afollestad.nocknock.utilities.Qualifiers.MAIN_DISPATCHER
|
||||||
import org.koin.androidx.viewmodel.ext.koin.viewModel
|
import org.koin.androidx.viewmodel.ext.koin.viewModel
|
||||||
import org.koin.dsl.module.module
|
import org.koin.dsl.module.module
|
||||||
|
|
||||||
const val VIEW_MODEL_MODULE = "view_models"
|
|
||||||
|
|
||||||
/** @author Aidan Follestad (@afollestad) */
|
/** @author Aidan Follestad (@afollestad) */
|
||||||
val viewModelModule = module(VIEW_MODEL_MODULE) {
|
val viewModelModule = module {
|
||||||
|
|
||||||
viewModel {
|
viewModel {
|
||||||
MainViewModel(
|
MainViewModel(
|
||||||
|
|
|
@ -50,10 +50,11 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
private lateinit var adapter: ServerAdapter
|
private lateinit var adapter: ServerAdapter
|
||||||
|
|
||||||
private val statusUpdateReceiver =
|
private val statusUpdateReceiver by lazy {
|
||||||
StatusUpdateIntentReceiver(application, intentProvider) {
|
StatusUpdateIntentReceiver(application, intentProvider) {
|
||||||
viewModel.postSiteUpdate(it)
|
viewModel.postSiteUpdate(it)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
|
@ -58,10 +58,11 @@ class ViewSiteActivity : AppCompatActivity() {
|
||||||
internal val viewModel by viewModel<ViewSiteViewModel>()
|
internal val viewModel by viewModel<ViewSiteViewModel>()
|
||||||
|
|
||||||
private val intentProvider by inject<IntentProvider>()
|
private val intentProvider by inject<IntentProvider>()
|
||||||
private val statusUpdateReceiver =
|
private val statusUpdateReceiver by lazy {
|
||||||
StatusUpdateIntentReceiver(application, intentProvider) {
|
StatusUpdateIntentReceiver(application, intentProvider) {
|
||||||
viewModel.setModel(it)
|
viewModel.setModel(it)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
/**
|
||||||
|
* Designed and developed by Aidan Follestad (@afollestad)
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package com.afollestad.nocknock.utilities
|
||||||
|
|
||||||
|
import com.afollestad.nocknock.utilities.Qualifiers.IO_DISPATCHER
|
||||||
|
import com.afollestad.nocknock.utilities.Qualifiers.MAIN_DISPATCHER
|
||||||
|
import com.afollestad.nocknock.utilities.providers.RealStringProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.StringProvider
|
||||||
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import org.koin.dsl.module.module
|
||||||
|
|
||||||
|
object Qualifiers {
|
||||||
|
const val MAIN_DISPATCHER = "main_dispatcher"
|
||||||
|
const val IO_DISPATCHER = "io_dispatcher"
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @author Aidan Follestad (@afollestad) */
|
||||||
|
val commonModule = module {
|
||||||
|
|
||||||
|
factory<CoroutineDispatcher>(name = MAIN_DISPATCHER) { Dispatchers.Main }
|
||||||
|
|
||||||
|
factory(name = IO_DISPATCHER) { Dispatchers.IO }
|
||||||
|
|
||||||
|
factory { RealStringProvider(get()) } bind StringProvider::class
|
||||||
|
}
|
|
@ -1,74 +0,0 @@
|
||||||
/**
|
|
||||||
* Designed and developed by Aidan Follestad (@afollestad)
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.afollestad.nocknock.utilities
|
|
||||||
|
|
||||||
import com.afollestad.nocknock.utilities.Qualifiers.IO_DISPATCHER
|
|
||||||
import com.afollestad.nocknock.utilities.Qualifiers.MAIN_ACTIVITY_CLASS
|
|
||||||
import com.afollestad.nocknock.utilities.Qualifiers.MAIN_DISPATCHER
|
|
||||||
import com.afollestad.nocknock.utilities.providers.BitmapProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.BundleProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.IntentProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.JobInfoProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.NotificationChannelProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.NotificationProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealBitmapProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealBundleProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealIntentProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealJobInfoProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealNotificationChannelProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealNotificationProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealSdkProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.RealStringProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.SdkProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.StringProvider
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import org.koin.dsl.module.module
|
|
||||||
|
|
||||||
const val UTILITIES_MODULE = "utilities"
|
|
||||||
|
|
||||||
object Qualifiers {
|
|
||||||
const val MAIN_ACTIVITY_CLASS = "main.main_activity_class"
|
|
||||||
const val MAIN_DISPATCHER = "main.main_dispatcher"
|
|
||||||
const val IO_DISPATCHER = "main.io_dispatcher"
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @author Aidan Follestad (@afollestad) */
|
|
||||||
val utilitiesModule = module(UTILITIES_MODULE) {
|
|
||||||
|
|
||||||
factory(name = MAIN_DISPATCHER) { Dispatchers.Main }
|
|
||||||
|
|
||||||
factory(name = IO_DISPATCHER) { Dispatchers.IO }
|
|
||||||
|
|
||||||
factory { RealSdkProvider() } bind SdkProvider::class
|
|
||||||
|
|
||||||
factory { RealBitmapProvider(get()) } bind BitmapProvider::class
|
|
||||||
|
|
||||||
factory { RealStringProvider(get()) } bind StringProvider::class
|
|
||||||
|
|
||||||
factory {
|
|
||||||
RealIntentProvider(get(), get(name = MAIN_ACTIVITY_CLASS))
|
|
||||||
} bind IntentProvider::class
|
|
||||||
|
|
||||||
factory {
|
|
||||||
RealNotificationChannelProvider(get())
|
|
||||||
} bind NotificationChannelProvider::class
|
|
||||||
|
|
||||||
factory { RealNotificationProvider(get()) } bind NotificationProvider::class
|
|
||||||
|
|
||||||
factory { RealBundleProvider() } bind BundleProvider::class
|
|
||||||
|
|
||||||
factory { RealJobInfoProvider(get()) } bind JobInfoProvider::class
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
/**
|
|
||||||
* Designed and developed by Aidan Follestad (@afollestad)
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.afollestad.nocknock.utilities.providers
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.Bitmap
|
|
||||||
import android.graphics.BitmapFactory.decodeResource
|
|
||||||
import androidx.annotation.DrawableRes
|
|
||||||
|
|
||||||
/** @author Aidan Follestad (@afollestad) */
|
|
||||||
interface BitmapProvider {
|
|
||||||
|
|
||||||
fun get(@DrawableRes res: Int): Bitmap
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @author Aidan Follestad (@afollestad) */
|
|
||||||
class RealBitmapProvider(
|
|
||||||
private val context: Context
|
|
||||||
) : BitmapProvider {
|
|
||||||
|
|
||||||
override fun get(res: Int): Bitmap {
|
|
||||||
return decodeResource(context.resources, res)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -31,7 +31,7 @@ interface NotificationProvider {
|
||||||
content: String,
|
content: String,
|
||||||
intent: PendingIntent,
|
intent: PendingIntent,
|
||||||
smallIcon: Int,
|
smallIcon: Int,
|
||||||
largeIcon: Bitmap
|
largeIcon: Bitmap? = null
|
||||||
): Notification
|
): Notification
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ class RealNotificationProvider(
|
||||||
content: String,
|
content: String,
|
||||||
intent: PendingIntent,
|
intent: PendingIntent,
|
||||||
smallIcon: Int,
|
smallIcon: Int,
|
||||||
largeIcon: Bitmap
|
largeIcon: Bitmap?
|
||||||
): Notification {
|
): Notification {
|
||||||
return NotificationCompat.Builder(context, channelId)
|
return NotificationCompat.Builder(context, channelId)
|
||||||
.setContentTitle(title)
|
.setContentTitle(title)
|
||||||
|
|
|
@ -19,10 +19,8 @@ import com.afollestad.nocknock.engine.validation.RealValidationManager
|
||||||
import com.afollestad.nocknock.engine.validation.ValidationManager
|
import com.afollestad.nocknock.engine.validation.ValidationManager
|
||||||
import org.koin.dsl.module.module
|
import org.koin.dsl.module.module
|
||||||
|
|
||||||
const val ENGINE_MODULE = "engine"
|
|
||||||
|
|
||||||
/** @author Aidan Follestad (@afollestad) */
|
/** @author Aidan Follestad (@afollestad) */
|
||||||
val engineModule = module(ENGINE_MODULE) {
|
val engineModule = module {
|
||||||
|
|
||||||
single {
|
single {
|
||||||
RealValidationManager(get(), get(), get(), get(), get(), get())
|
RealValidationManager(get(), get(), get(), get(), get(), get())
|
||||||
|
|
|
@ -19,7 +19,6 @@ import android.annotation.TargetApi
|
||||||
import android.app.NotificationManager
|
import android.app.NotificationManager
|
||||||
import android.os.Build.VERSION_CODES
|
import android.os.Build.VERSION_CODES
|
||||||
import com.afollestad.nocknock.notifications.Channel.CheckFailures
|
import com.afollestad.nocknock.notifications.Channel.CheckFailures
|
||||||
import com.afollestad.nocknock.utilities.providers.BitmapProvider
|
|
||||||
import com.afollestad.nocknock.utilities.providers.CanNotifyModel
|
import com.afollestad.nocknock.utilities.providers.CanNotifyModel
|
||||||
import com.afollestad.nocknock.utilities.providers.IntentProvider
|
import com.afollestad.nocknock.utilities.providers.IntentProvider
|
||||||
import com.afollestad.nocknock.utilities.providers.NotificationChannelProvider
|
import com.afollestad.nocknock.utilities.providers.NotificationChannelProvider
|
||||||
|
@ -44,9 +43,7 @@ interface NockNotificationManager {
|
||||||
|
|
||||||
/** @author Aidan Follestad (@afollestad) */
|
/** @author Aidan Follestad (@afollestad) */
|
||||||
class RealNockNotificationManager(
|
class RealNockNotificationManager(
|
||||||
private val appIconRes: Int,
|
|
||||||
private val stockManager: NotificationManager,
|
private val stockManager: NotificationManager,
|
||||||
private val bitmapProvider: BitmapProvider,
|
|
||||||
private val stringProvider: StringProvider,
|
private val stringProvider: StringProvider,
|
||||||
private val intentProvider: IntentProvider,
|
private val intentProvider: IntentProvider,
|
||||||
private val channelProvider: NotificationChannelProvider,
|
private val channelProvider: NotificationChannelProvider,
|
||||||
|
@ -78,8 +75,7 @@ class RealNockNotificationManager(
|
||||||
title = model.notifyName(),
|
title = model.notifyName(),
|
||||||
content = stringProvider.get(R.string.something_wrong),
|
content = stringProvider.get(R.string.something_wrong),
|
||||||
intent = intent,
|
intent = intent,
|
||||||
smallIcon = R.drawable.ic_notification,
|
smallIcon = R.drawable.ic_notification
|
||||||
largeIcon = bitmapProvider.get(appIconRes)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
stockManager.notify(model.notifyTag(), model.notificationId(), newNotification)
|
stockManager.notify(model.notifyTag(), model.notificationId(), newNotification)
|
||||||
|
|
|
@ -15,21 +15,45 @@
|
||||||
*/
|
*/
|
||||||
package com.afollestad.nocknock.notifications
|
package com.afollestad.nocknock.notifications
|
||||||
|
|
||||||
import com.afollestad.nocknock.notifications.Qualifiers.APP_ICON_RES
|
import com.afollestad.nocknock.notifications.Qualifiers.MAIN_ACTIVITY_CLASS
|
||||||
|
import com.afollestad.nocknock.utilities.providers.BundleProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.IntentProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.JobInfoProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.NotificationChannelProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.NotificationProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.RealBundleProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.RealIntentProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.RealJobInfoProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.RealNotificationChannelProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.RealNotificationProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.RealSdkProvider
|
||||||
|
import com.afollestad.nocknock.utilities.providers.SdkProvider
|
||||||
import org.koin.dsl.module.module
|
import org.koin.dsl.module.module
|
||||||
|
|
||||||
const val NOTIFICATIONS_MODULE = "notifications"
|
|
||||||
|
|
||||||
object Qualifiers {
|
object Qualifiers {
|
||||||
const val APP_ICON_RES = "main.app_icon_res"
|
const val MAIN_ACTIVITY_CLASS = "main_activity_class"
|
||||||
}
|
}
|
||||||
|
|
||||||
val notificationsModule = module(NOTIFICATIONS_MODULE) {
|
val notificationsModule = module {
|
||||||
|
|
||||||
|
factory {
|
||||||
|
RealIntentProvider(get(), get(name = MAIN_ACTIVITY_CLASS))
|
||||||
|
} bind IntentProvider::class
|
||||||
|
|
||||||
|
factory { RealSdkProvider() } bind SdkProvider::class
|
||||||
|
|
||||||
|
factory {
|
||||||
|
RealNotificationChannelProvider(get())
|
||||||
|
} bind NotificationChannelProvider::class
|
||||||
|
|
||||||
|
factory { RealNotificationProvider(get()) } bind NotificationProvider::class
|
||||||
|
|
||||||
|
factory { RealBundleProvider() } bind BundleProvider::class
|
||||||
|
|
||||||
|
factory { RealJobInfoProvider(get()) } bind JobInfoProvider::class
|
||||||
|
|
||||||
single {
|
single {
|
||||||
RealNockNotificationManager(
|
RealNockNotificationManager(
|
||||||
get(name = APP_ICON_RES),
|
|
||||||
get(),
|
|
||||||
get(),
|
get(),
|
||||||
get(),
|
get(),
|
||||||
get(),
|
get(),
|
||||||
|
|
|
@ -19,11 +19,8 @@ import android.app.Notification
|
||||||
import android.app.NotificationChannel
|
import android.app.NotificationChannel
|
||||||
import android.app.NotificationManager
|
import android.app.NotificationManager
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
import android.graphics.Bitmap
|
|
||||||
import com.afollestad.nocknock.data.legacy.ServerModel
|
|
||||||
import com.afollestad.nocknock.data.model.ValidationMode.STATUS_CODE
|
|
||||||
import com.afollestad.nocknock.notifications.Channel.CheckFailures
|
import com.afollestad.nocknock.notifications.Channel.CheckFailures
|
||||||
import com.afollestad.nocknock.utilities.providers.BitmapProvider
|
import com.afollestad.nocknock.utilities.providers.CanNotifyModel
|
||||||
import com.afollestad.nocknock.utilities.providers.IntentProvider
|
import com.afollestad.nocknock.utilities.providers.IntentProvider
|
||||||
import com.afollestad.nocknock.utilities.providers.NotificationChannelProvider
|
import com.afollestad.nocknock.utilities.providers.NotificationChannelProvider
|
||||||
import com.afollestad.nocknock.utilities.providers.NotificationProvider
|
import com.afollestad.nocknock.utilities.providers.NotificationProvider
|
||||||
|
@ -48,10 +45,6 @@ class NockNotificationManagerTest {
|
||||||
private val somethingWentWrong = "something went wrong"
|
private val somethingWentWrong = "something went wrong"
|
||||||
|
|
||||||
private val stockManager = mock<NotificationManager>()
|
private val stockManager = mock<NotificationManager>()
|
||||||
private val appIcon = mock<Bitmap>()
|
|
||||||
private val bitmapProvider = mock<BitmapProvider> {
|
|
||||||
on { get(appIconRes) } doReturn appIcon
|
|
||||||
}
|
|
||||||
private val stringProvider = mock<StringProvider> {
|
private val stringProvider = mock<StringProvider> {
|
||||||
on { get(R.string.something_wrong) } doReturn somethingWentWrong
|
on { get(R.string.something_wrong) } doReturn somethingWentWrong
|
||||||
}
|
}
|
||||||
|
@ -60,9 +53,7 @@ class NockNotificationManagerTest {
|
||||||
private val notificationProvider = mock<NotificationProvider>()
|
private val notificationProvider = mock<NotificationProvider>()
|
||||||
|
|
||||||
private val manager = RealNockNotificationManager(
|
private val manager = RealNockNotificationManager(
|
||||||
appIconRes,
|
|
||||||
stockManager,
|
stockManager,
|
||||||
bitmapProvider,
|
|
||||||
stringProvider,
|
stringProvider,
|
||||||
intentProvider,
|
intentProvider,
|
||||||
channelProvider,
|
channelProvider,
|
||||||
|
@ -121,19 +112,18 @@ class NockNotificationManagerTest {
|
||||||
whenever(
|
whenever(
|
||||||
notificationProvider.create(
|
notificationProvider.create(
|
||||||
CheckFailures.id,
|
CheckFailures.id,
|
||||||
model.name,
|
"Testing",
|
||||||
somethingWentWrong,
|
somethingWentWrong,
|
||||||
pendingIntent,
|
pendingIntent,
|
||||||
R.drawable.ic_notification,
|
R.drawable.ic_notification
|
||||||
appIcon
|
|
||||||
)
|
)
|
||||||
).doReturn(notification)
|
).doReturn(notification)
|
||||||
|
|
||||||
manager.postStatusNotification(model)
|
manager.postStatusNotification(model)
|
||||||
|
|
||||||
verify(stockManager).notify(
|
verify(stockManager).notify(
|
||||||
model.url,
|
"https://hello.com",
|
||||||
BASE_NOTIFICATION_REQUEST_CODE + model.id,
|
BASE_NOTIFICATION_REQUEST_CODE + 1,
|
||||||
notification
|
notification
|
||||||
)
|
)
|
||||||
verifyNoMoreInteractions(stockManager)
|
verifyNoMoreInteractions(stockManager)
|
||||||
|
@ -142,7 +132,7 @@ class NockNotificationManagerTest {
|
||||||
@Test fun cancelStatusNotification() {
|
@Test fun cancelStatusNotification() {
|
||||||
val model = fakeModel()
|
val model = fakeModel()
|
||||||
manager.cancelStatusNotification(model)
|
manager.cancelStatusNotification(model)
|
||||||
verify(stockManager).cancel(BASE_NOTIFICATION_REQUEST_CODE + model.id)
|
verify(stockManager).cancel(BASE_NOTIFICATION_REQUEST_CODE + 1)
|
||||||
verifyNoMoreInteractions(stockManager)
|
verifyNoMoreInteractions(stockManager)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,10 +142,11 @@ class NockNotificationManagerTest {
|
||||||
verifyNoMoreInteractions(stockManager)
|
verifyNoMoreInteractions(stockManager)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fakeModel() = ServerModel(
|
private fun fakeModel() = object : CanNotifyModel {
|
||||||
id = 1,
|
override fun notifyId() = 1
|
||||||
url = "https://hello.com",
|
|
||||||
name = "Testing",
|
override fun notifyName() = "Testing"
|
||||||
validationMode = STATUS_CODE
|
|
||||||
)
|
override fun notifyTag() = "https://hello.com"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue