Skip to content

Instantly share code, notes, and snippets.

View aykuttasil's full-sized avatar
🏍️

Aykut Asil aykuttasil

🏍️
View GitHub Profile
val mockServer = MockWebServer()
mockServer.start()
val mockedResponse = MockResponse()
mockedResponse.setResponseCode(200)
mockedResponse.setBody("{}") // sample JSON
mockServer.enqueue(mockedReponse)
@RunWith(JUnit4::class)
class BlogRepositoryUTest {
lateinit var blogRepository : BlogRepository
lateinit var mockServer : MockWebServer
lateinit var blogService : BlogService
@Before @Throws fun setUp() {
// Initialize mock webserver
mockServer = MockWebServer()
dependencies {
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.4'
testImplementation 'org.mockito:mockito-android:2.22.0'
}
@RunWith(AndroidJUnit4::class)
class MainActivityTest {
@get:Rule
val rule = ActivityTestRule(MainActivity::class.java)
@Test
fun testAssertHelloText() {
onView(withId(R.id.hello)).check(matches(withText("Hello World!")))
}
}
android
{
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
dependency
inline fun <T> dependantLiveData(
vararg dependencies: LiveData<*>,
crossinline mapper: () -> T?
) = MediatorLiveData<T>().also { mediatorLiveData ->
val observer = Observer<Any> { mediatorLiveData.value = mapper() }
dependencies.forEach { dependencyLiveData ->
mediatorLiveData.addSource(dependencyLiveData, observer)
}
}
open class RxAwareViewModel : ViewModel() {
var disposables = CompositeDisposable()
override fun onCleared() {
super.onCleared()
if (!disposables.isDisposed) {
disposables.dispose()
}
}
fun <T : ViewDataBinding> Activity.bind(layoutId: Int): T {
return DataBindingUtil.setContentView(this, layoutId)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
loginViewModel = ViewModelProviders.of(this@LoginActivity, viewModelFactory)
.get(LoginViewModel::class.java)
val binding = bind<ActivityLoginLayoutBinding>(R.layout.activity_login_layout)
binding.lifecycleOwner = this
binding.viewmodel = loginViewModel
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.text.TextUtils" />
<variable
name="viewmodel"