Skip to content

Commit

Permalink
Merge branch 'master' into hadia/NTV-491
Browse files Browse the repository at this point in the history
  • Loading branch information
hadia authored Apr 13, 2022
2 parents 318c46f + 4741550 commit a95620a
Show file tree
Hide file tree
Showing 3 changed files with 146 additions and 50 deletions.
50 changes: 0 additions & 50 deletions app/src/main/java/com/kickstarter/ui/data/ActivityResult.java

This file was deleted.

72 changes: 72 additions & 0 deletions app/src/main/java/com/kickstarter/ui/data/ActivityResult.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.kickstarter.ui.data

import android.app.Activity
import android.content.Intent
import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
class ActivityResult(
val requestCode: Int,
val resultCode: Int,
val intent: Intent?
) : Parcelable {
fun requestCode() = this.requestCode
fun resultCode() = this.resultCode
fun intent() = this.intent

@Parcelize
data class Builder(
private var requestCode: Int = 0,
private var resultCode: Int = 0,
private var intent: Intent? = null
) : Parcelable {
fun requestCode(requestCode: Int) = apply { this.requestCode = requestCode }
fun resultCode(resultCode: Int) = apply { this.resultCode = resultCode }
fun intent(intent: Intent?) = apply { this.intent = intent }
fun build() = ActivityResult(
requestCode = requestCode,
resultCode = resultCode,
intent = intent
)
}

fun toBuilder() = Builder(
requestCode = requestCode,
resultCode = resultCode,
intent = intent
)

override fun equals(obj: Any?): Boolean {
var equals = super.equals(obj)
if (obj is ActivityResult) {
equals = requestCode() == obj.requestCode() &&
resultCode() == obj.resultCode() &&
intent() == obj.intent()
}
return equals
}

val isCanceled: Boolean
get() = resultCode() == Activity.RESULT_CANCELED
val isOk: Boolean
get() = resultCode() == Activity.RESULT_OK

fun isRequestCode(v: Int): Boolean {
return requestCode() == v
}

companion object {
@JvmStatic
fun create(requestCode: Int, resultCode: Int, intent: Intent?): ActivityResult {
return builder()
.requestCode(requestCode)
.resultCode(resultCode)
.intent(intent)
.build()
}

@JvmStatic
fun builder() = Builder()
}
}
74 changes: 74 additions & 0 deletions app/src/test/java/com/kickstarter/models/ActivityResultTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.kickstarter.models

import android.app.Activity
import android.content.Intent
import com.kickstarter.ui.data.ActivityResult
import junit.framework.TestCase
import org.junit.Test

class ActivityResultTest : TestCase() {

@Test
fun testDefaultInit() {
val intent = Intent()

val activityResult = ActivityResult.builder()
.resultCode(Activity.RESULT_OK)
.requestCode(2)
.intent(intent)
.build()

assertEquals(activityResult.requestCode(), 2)
assertEquals(activityResult.resultCode(), Activity.RESULT_OK)
assertEquals(activityResult.intent(), intent)
}

@Test
fun testActivityResult_equalFalse() {
val intent = Intent()

val activityResult = ActivityResult.builder().build()
val activityResult2 = ActivityResult.builder().resultCode(1)
.requestCode(2).build()
val activityResult3 = ActivityResult.create(1, 2, intent)
assertFalse(activityResult == activityResult2)
assertFalse(activityResult == activityResult3)

assertFalse(activityResult3 == activityResult2)
}

@Test
fun testActivityResult_equalTrue() {
val activityResult1 = ActivityResult.builder().build()
val activityResult2 = ActivityResult.builder().build()

assertEquals(activityResult1, activityResult2)
}

@Test
fun testActivityResultToBuilder() {
val intent = Intent()
val activityResult = ActivityResult.builder().build().toBuilder()
.intent(intent).build()

assertEquals(activityResult.intent(), intent)
}

@Test
fun testActivityResultIsOk() {
val activityResult = ActivityResult.builder().build().toBuilder()
.resultCode(Activity.RESULT_OK).build()

assertFalse(activityResult.isCanceled)
assertTrue(activityResult.isOk)
}

@Test
fun testActivityResultIsCancelled() {
val activityResult = ActivityResult.builder().build().toBuilder()
.resultCode(Activity.RESULT_CANCELED).build()

assertTrue(activityResult.isCanceled)
assertFalse(activityResult.isOk)
}
}

0 comments on commit a95620a

Please sign in to comment.