Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.aria.refactortechniques

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.aria.refactortechniques.scenario

data class Coupon(
val title: String = "Title",
val duration: Int = 100
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.aria.refactortechniques.scenario

class CouponPresenter(val couponValidatorUseCase: CouponValidatorUseCase) {

fun setup(coupon: Coupon) {
couponValidatorUseCase.validate(coupon)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.aria.refactortechniques.scenario

const val MAX_TITLE_LENGTH = 100

class CouponValidatorUseCase {

fun validate(coupon: Coupon) = coupon.title.length < MAX_TITLE_LENGTH
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.aria.refactortechniques.solution

import com.aria.refactortechniques.scenario.Coupon

class CouponPresenterSolution(
private val couponValidatorUseCaseSolution: CouponValidatorUseCaseSolution
) {

fun setup(coupon: Coupon) {
couponValidatorUseCaseSolution.validate(coupon)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.aria.refactortechniques.solution

import com.aria.refactortechniques.scenario.Coupon
import com.aria.refactortechniques.scenario.MAX_TITLE_LENGTH

class CouponValidatorUseCaseSolution {

fun validate(coupon: Coupon): Boolean {
return validateCoupon(coupon)
}

companion object {
fun validateCoupon(coupon: Coupon) = coupon.title.length < MAX_TITLE_LENGTH
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.aria.refactortechniques

import com.aria.refactortechniques.scenario.Coupon
import com.aria.refactortechniques.solution.CouponPresenterSolution
import com.aria.refactortechniques.solution.CouponValidatorUseCaseSolution
import com.nhaarman.mockitokotlin2.given
import org.junit.Before
import org.junit.Test

class CouponValidatorUseCaseSolutionTest {

private lateinit var sut: CouponPresenterSolution
private lateinit var couponValidatorUseCaseSolution: CouponValidatorUseCaseSolution

@Before
fun setup() {
sut = CouponPresenterSolution(couponValidatorUseCaseSolution)
}

@Test
fun `given valid coupon should validate it properly`() {
couponValidatorUseCaseSolution.validate(givenAnyCoupon())
}

@Test
fun `given Valid Coupon`() {
given(CouponValidatorUseCaseSolution.validateCoupon(givenAnyCoupon()))
.willReturn(true)
}

fun givenAnyCoupon(): Coupon {
return Coupon("Any", 100)
}
}
17 changes: 0 additions & 17 deletions app/src/test/java/com/aria/refactortechniques/ExampleUnitTest.kt

This file was deleted.