Skip to content

Instantly share code, notes, and snippets.

View rozkminiacz's full-sized avatar

Jarosław Michalik rozkminiacz

View GitHub Profile
@rozkminiacz
rozkminiacz / memoized.kt
Created May 21, 2019 13:01
Memoized based on Spek implementation
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
interface Memoized {
fun <T> memoized(factory: () -> T): Memoizable<T>
}
class DefaultMemoized : Memoized {
override fun <T> memoized(factory: () -> T): Memoizable<T> {
return MemoizableAdapter(factory)
public interface ImageManager {
void loadImage(String imageUrl, ImageView target, Context context);
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.rozkmin.flavorshowcase.MainActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
picassoDebugCompile 'com.squareup.picasso:picasso:2.5.2'
picassoReleaseCompile 'com.squareup.picasso:picasso:2.5.2'
picassoCompile 'com.squareup.picasso:picasso:2.5.2'
glideCompile 'com.github.bumptech.glide:glide:4.1.1'
compile 'com.google.dagger:dagger:2.2'
annotationProcessor 'com.google.dagger:dagger-compiler:2.2'
android {
/**/
flavorDimensions "default"
productFlavors {
glide {
versionName defaultConfig.versionName + ".glide." + defaultConfig.versionCode
applicationId "com.rozkmin.flavorshowcaseglide"
dimension "default"
class PromotionListViewRobot(presenter: PromotionListContract.Presenter) {
private val initSubject = BehaviorSubject.create<Any>()
private val renderedViewStates: MutableList<PromotionListContract.ViewState> = mutableListOf()
private val view: PromotionListContract.View = object : PromotionListContract.View {
override fun listInit(): Observable<Any> = initSubject
override fun render(viewState: PromotionListContract.ViewState) {
class PromotionListPresenterTest : Spek({
describe("promotion presenter") {
//mock interactor methods
on("view attach") {
//attach presenter
it("should display promotion list") {
//assertion
}
}
on("load more click") {
interface PromotionListContract {
interface View : MvpView {
fun listInit(): Observable<Any>
fun render(viewState: ViewState)
}
abstract class Presenter : MviBasePresenter<View, ViewState>()
data class ViewState(
val promotionList: List<PromotionViewModel> = emptyList(),