Skip to content

Instantly share code, notes, and snippets.

View olegosipenko's full-sized avatar
🎳
Lebowski

Oleg Osipenko olegosipenko

🎳
Lebowski
  • Wildberries
  • Yekaterinburg, Russia
View GitHub Profile
@olegosipenko
olegosipenko / EmailLoginFragment.kt
Last active September 8, 2019 13:34
For blog post about testing fragments
private val fragmentViewModel: EmailLoginFragmentViewModel by viewModel()
@olegosipenko
olegosipenko / KoinTestApp.kt
Last active September 8, 2019 13:48
For blog post about testing fragments
class KoinTestApp: Application() {
override fun onCreate() {
super.onCreate()
startKoin {
androidLogger()
androidContext(this@KoinTestApp)
modules(emptyList())
}
}
@olegosipenko
olegosipenko / KoinTestRunner.kt
Last active September 8, 2019 13:49
For blog post about testing fragments
class KoinTestRunner: AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, className: String?, context: Context?): Application {
return super.newApplication(
cl, KoinTestApp::class.java.name, context
)
}
}
@olegosipenko
olegosipenko / build.gradle
Last active September 8, 2019 13:49
For blog post about testing fragments
android {
defaultConfig {
testInstrumentationRunner "path.to.your.package.KoinTestRunner"
}
}
@olegosipenko
olegosipenko / build.gradle
Last active September 8, 2019 13:49
For blog post about testing fragments
android {
testOptions {
animationsDisabled = true
}
}
@olegosipenko
olegosipenko / FragmentTestRule.kt
Last active September 8, 2019 13:49
For blog post about testing fragments
abstract class FragmentTestRule<F: Fragment>: ActivityTestRule<FragmentActivity>(FragmentActivity::class.java, true) {
override fun afterActivityLaunched() {
super.afterActivityLaunched()
activity.runOnUiThread {
val fm = activity.supportFragmentManager
val transaction = fm.beginTransaction()
transaction.replace(
android.R.id.content,
createFragment()
).commit()
@olegosipenko
olegosipenko / AndroidManifest.xml
Last active September 8, 2019 13:49
For blog post about testing fragments
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.olegosipenko.kointestsample">
<application>
<activity
android:theme="@style/AppTheme"
android:name="androidx.fragment.app.FragmentActivity"/>
</application>
</manifest>
@olegosipenko
olegosipenko / EmailLoginFragmentTest.kt
Last active September 8, 2019 13:50
For blog post about testing fragments
@RunWith(AndroidJUnit4ClassRunner::class)
class EmailLoginFragmentTest {
private val fragmentViewModel: EmailLoginFragmentViewModel = mockk(relaxed = true)
private val fragment = EmailLoginFragment()
@get:Rule
val fragmentRule = createRule(fragment, module {
single(override = true) {
fragmentViewModel
@olegosipenko
olegosipenko / SealedClassExample.kt
Last active September 19, 2019 10:15
For blog post about sealed classes, when expressions and custom detekt rule
sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()
fun eval(expr: Expr): Double = when(expr) {
is Const -> expr.number
@olegosipenko
olegosipenko / EmailLoginViewState.kt
Created September 19, 2019 10:17
For blog post about sealed classes, when expressions and custom detekt rule
sealed class EmailLoginViewState {
object INITIAL: EmailLoginViewState()
object LOADING: EmailLoginViewState()
object SUCCESS: EmailLoginViewState()
...
}