From 76a5a4645429c8949ae358f5c009ddcf3342d93f Mon Sep 17 00:00:00 2001 From: Aidan Follestad Date: Fri, 7 Dec 2018 00:17:46 -0800 Subject: [PATCH] Add site view model should have default values --- .../nocknock/ui/addsite/AddSiteViewModel.kt | 15 ++++++++++++--- .../nocknock/ui/addsite/AddSiteViewModelTest.kt | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModel.kt b/app/src/main/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModel.kt index 9b388b1..47c6c4f 100644 --- a/app/src/main/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModel.kt +++ b/app/src/main/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModel.kt @@ -18,9 +18,11 @@ package com.afollestad.nocknock.ui.addsite import androidx.annotation.CheckResult import androidx.annotation.VisibleForTesting import androidx.annotation.VisibleForTesting.PRIVATE +import androidx.lifecycle.Lifecycle.Event.ON_START import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.OnLifecycleEvent import com.afollestad.nocknock.R import com.afollestad.nocknock.data.AppDatabase import com.afollestad.nocknock.data.model.Site @@ -32,6 +34,7 @@ import com.afollestad.nocknock.data.model.ValidationMode.TERM_SEARCH import com.afollestad.nocknock.data.putSite import com.afollestad.nocknock.engine.validation.ValidationManager import com.afollestad.nocknock.ui.ScopedViewModel +import com.afollestad.nocknock.utilities.ext.MINUTE import com.afollestad.nocknock.utilities.livedata.map import com.afollestad.nocknock.viewcomponents.ext.isNullOrLessThan import kotlinx.coroutines.CoroutineDispatcher @@ -50,15 +53,21 @@ class AddSiteViewModel( // Public properties val name = MutableLiveData() val url = MutableLiveData() - val timeout = MutableLiveData().apply { - this.value = 10000 - } + val timeout = MutableLiveData() val validationMode = MutableLiveData() val validationSearchTerm = MutableLiveData() val validationScript = MutableLiveData() val checkIntervalValue = MutableLiveData() val checkIntervalUnit = MutableLiveData() + @OnLifecycleEvent(ON_START) + fun setDefaults() { + timeout.value = 10000 + validationMode.value = STATUS_CODE + checkIntervalValue.value = 0 + checkIntervalUnit.value = MINUTE + } + // Private properties private val isLoading = MutableLiveData() private val nameError = MutableLiveData() diff --git a/app/src/test/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModelTest.kt b/app/src/test/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModelTest.kt index 607f5fc..9acd165 100644 --- a/app/src/test/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModelTest.kt +++ b/app/src/test/kotlin/com/afollestad/nocknock/ui/addsite/AddSiteViewModelTest.kt @@ -24,6 +24,7 @@ import com.afollestad.nocknock.data.model.ValidationMode.STATUS_CODE import com.afollestad.nocknock.data.model.ValidationMode.TERM_SEARCH import com.afollestad.nocknock.engine.validation.ValidationManager import com.afollestad.nocknock.mockDatabase +import com.afollestad.nocknock.utilities.ext.MINUTE import com.afollestad.nocknock.utilities.livedata.test import com.google.common.truth.Truth.assertThat import com.nhaarman.mockitokotlin2.any @@ -56,6 +57,19 @@ class AddSiteViewModelTest { @After fun tearDown() = viewModel.destroy() + @Test fun setDefaults() { + viewModel.setDefaults() + + assertThat(viewModel.name.value).isNull() + assertThat(viewModel.url.value).isNull() + assertThat(viewModel.timeout.value).isEqualTo(10000) + assertThat(viewModel.validationMode.value).isEqualTo(STATUS_CODE) + assertThat(viewModel.validationSearchTerm.value).isNull() + assertThat(viewModel.validationScript.value).isNull() + assertThat(viewModel.checkIntervalValue.value).isEqualTo(0) + assertThat(viewModel.checkIntervalUnit.value).isEqualTo(MINUTE) + } + @Test fun onUrlWarningVisibility() { val urlWarningVisibility = viewModel.onUrlWarningVisibility() .test()