dreem Audio Carousel Architecture MVVM with Use Case pattern ViewModel LiveData Coroutines Tests Unit testing with JUnit and Mockito Instrumented testing with Espresso and Kakao