Skip to content

Instantly share code, notes, and snippets.

@R4md4c
Created April 23, 2020 12:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save R4md4c/01e9a4360ce82ca9b2db6898fb6606de to your computer and use it in GitHub Desktop.
Save R4md4c/01e9a4360ce82ca9b2db6898fb6606de to your computer and use it in GitHub Desktop.
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelStore
import androidx.lifecycle.ViewModelStoreOwner
import org.amshove.kluent.shouldBe
import org.junit.Test
class MyViewModel : ViewModel() {
var isCleared = false
override fun onCleared() {
isCleared = true
}
}
class ViewModelHolder(val subjectViewModel: ViewModel) : ViewModelStoreOwner {
private val viewModelStore = ViewModelStore()
init {
val provider = ViewModelProvider(this, object: ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T = subjectViewModel as T
})
// Put the subjectViewModel into the store.
provider.get(ViewModel::class.java)
}
override fun getViewModelStore(): ViewModelStore = viewModelStore
fun performClear() {
viewModelStore.clear()
}
}
class OnClearedViewModelTest {
@Test
fun onCleared() {
val myViewModelProvider = MyViewModel()
myViewModelProvider.isCleared shouldBe false
ViewModelHolder(myViewModelProvider).performClear()
myViewModelProvider.isCleared shouldBe true
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment