From f1be502ad785f2fc9c42ed4ec9eee10b2ab8b153 Mon Sep 17 00:00:00 2001 From: hadia Date: Mon, 28 Mar 2022 20:52:30 +0200 Subject: [PATCH 1/4] NTV-438 Deprecate Autoparcel for Checkout.kt --- .../mock/factories/CheckoutBackingFactory.kt | 15 ++- .../java/com/kickstarter/models/Checkout.kt | 96 +++++++++++++------ .../com/kickstarter/models/CheckoutTest.kt | 54 +++++++++++ 3 files changed, 128 insertions(+), 37 deletions(-) create mode 100644 app/src/test/java/com/kickstarter/models/CheckoutTest.kt diff --git a/app/src/main/java/com/kickstarter/mock/factories/CheckoutBackingFactory.kt b/app/src/main/java/com/kickstarter/mock/factories/CheckoutBackingFactory.kt index b4745307cf..aca624ae37 100644 --- a/app/src/main/java/com/kickstarter/mock/factories/CheckoutBackingFactory.kt +++ b/app/src/main/java/com/kickstarter/mock/factories/CheckoutBackingFactory.kt @@ -2,13 +2,12 @@ package com.kickstarter.mock.factories import com.kickstarter.models.Checkout -class CheckoutBackingFactory private constructor() { - companion object { - fun requiresAction(requiresAction: Boolean): Checkout.Backing { - return Checkout.Backing.builder() - .clientSecret(if (requiresAction) "boop" else null) - .requiresAction(requiresAction) - .build() - } +object CheckoutBackingFactory { + @JvmStatic + fun requiresAction(requiresAction: Boolean): Checkout.Backing { + return Checkout.Backing.builder() + .clientSecret(if (requiresAction) "boop" else null) + .requiresAction(requiresAction) + .build() } } diff --git a/app/src/main/java/com/kickstarter/models/Checkout.kt b/app/src/main/java/com/kickstarter/models/Checkout.kt index 176fb120a3..d7931a8705 100644 --- a/app/src/main/java/com/kickstarter/models/Checkout.kt +++ b/app/src/main/java/com/kickstarter/models/Checkout.kt @@ -1,49 +1,87 @@ package com.kickstarter.models import android.os.Parcelable -import auto.parcel.AutoParcel - -@AutoParcel -abstract class Checkout : Parcelable { - abstract fun id(): Long? - abstract fun backing(): Backing - - @AutoParcel.Builder - abstract class Builder { - abstract fun id(id: Long?): Builder - abstract fun backing(backing: Backing): Builder - abstract fun build(): Checkout +import kotlinx.parcelize.Parcelize + +@Parcelize +class Checkout private constructor( + private val id: Long?, + private val backing: Backing, +) : Parcelable { + fun id() = this.id + fun backing() = this.backing + + @Parcelize + data class Builder( + private var id: Long? = null, + private var backing: Backing = Backing.builder().build() + ) : Parcelable { + fun id(id: Long?) = apply { this.id = id } + fun backing(backing: Backing) = apply { this.backing = backing } + fun build() = Checkout( + id = id, + backing = backing + ) } - abstract fun toBuilder(): Builder + fun toBuilder() = Builder( + id = id, + backing = backing + ) companion object { + @JvmStatic + fun builder() = Builder() + } - fun builder(): Builder { - return AutoParcel_Checkout.Builder() + override fun equals(obj: Any?): Boolean { + var equals = super.equals(obj) + if (obj is Checkout) { + equals = id() == obj.id() && + backing() == obj.backing() } + return equals } - @AutoParcel - abstract class Backing : Parcelable { + @Parcelize + data class Backing private constructor( + private val clientSecret: String?, + private val requiresAction: Boolean, + ) : Parcelable { - abstract fun clientSecret(): String? - abstract fun requiresAction(): Boolean + fun clientSecret() = this.clientSecret + fun requiresAction() = this.requiresAction - @AutoParcel.Builder - abstract class Builder { - abstract fun clientSecret(secret: String?): Builder - abstract fun requiresAction(requiresAction: Boolean): Builder - abstract fun build(): Backing + @Parcelize + data class Builder( + private var clientSecret: String? = null, + private var requiresAction: Boolean = false, + ) : Parcelable { + fun clientSecret(clientSecret: String?) = apply { this.clientSecret = clientSecret } + fun requiresAction(requiresAction: Boolean) = apply { this.requiresAction = requiresAction } + fun build() = Backing( + clientSecret = clientSecret, + requiresAction = requiresAction + ) } - abstract fun toBuilder(): Builder + override fun equals(obj: Any?): Boolean { + var equals = super.equals(obj) + if (obj is Backing) { + equals = clientSecret() == obj.clientSecret() && + requiresAction() == obj.requiresAction() + } + return equals + } + fun toBuilder() = Builder( + clientSecret = clientSecret, + requiresAction = requiresAction + + ) companion object { - - fun builder(): Builder { - return AutoParcel_Checkout_Backing.Builder() - } + @JvmStatic + fun builder() = Builder() } } } diff --git a/app/src/test/java/com/kickstarter/models/CheckoutTest.kt b/app/src/test/java/com/kickstarter/models/CheckoutTest.kt new file mode 100644 index 0000000000..e57c35b511 --- /dev/null +++ b/app/src/test/java/com/kickstarter/models/CheckoutTest.kt @@ -0,0 +1,54 @@ +package com.kickstarter.models + +import com.kickstarter.KSRobolectricTestCase +import com.kickstarter.mock.factories.CheckoutBackingFactory +import org.junit.Test + +class CheckoutTest : KSRobolectricTestCase() { + + @Test + fun testDefaultInit() { + val backing = Checkout.Backing.builder() + .requiresAction(true) + .build() + + val checkout = Checkout.builder() + .id(1234L) + .backing(backing) + .build() + + assertEquals(checkout.id(), 1234L) + assertEquals(checkout.backing(), backing) + assertEquals(backing.requiresAction(), true) + assertEquals(backing.clientSecret(), null) + } + + @Test + fun testDefaultWebInit() { + + val backing = Checkout.Backing.builder().build().toBuilder().requiresAction(false).build() + assertFalse(backing.requiresAction()) + + val checkout = Checkout.builder().build().toBuilder().backing(backing).build() + assertEquals(checkout.backing(), backing) + } + + @Test + fun testSurvey_equalFalse() { + val checkout = Checkout.builder().build() + val checkout2 = Checkout.builder().backing(CheckoutBackingFactory.requiresAction(true)).build() + val checkout3 = Checkout.builder().id(5678L).build() + + assertFalse(checkout == checkout2) + assertFalse(checkout == checkout3) + assertFalse(checkout3 == checkout2) + } + + @Test + fun testSurvey_equalTrue() { + val checkout1 = Checkout.builder().build() + val checkout2 = Checkout.builder().build() + + assertEquals(checkout1, checkout2) + } +} From 57d8911b2e8684d61471b8506e5f0ba6e2cf399b Mon Sep 17 00:00:00 2001 From: hadia Date: Mon, 28 Mar 2022 20:55:19 +0200 Subject: [PATCH 2/4] update test --- app/src/test/java/com/kickstarter/models/CheckoutTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/test/java/com/kickstarter/models/CheckoutTest.kt b/app/src/test/java/com/kickstarter/models/CheckoutTest.kt index e57c35b511..c53b07ad72 100644 --- a/app/src/test/java/com/kickstarter/models/CheckoutTest.kt +++ b/app/src/test/java/com/kickstarter/models/CheckoutTest.kt @@ -34,7 +34,7 @@ class CheckoutTest : KSRobolectricTestCase() { } @Test - fun testSurvey_equalFalse() { + fun testCheckout_equalFalse() { val checkout = Checkout.builder().build() val checkout2 = Checkout.builder().backing(CheckoutBackingFactory.requiresAction(true)).build() val checkout3 = Checkout.builder().id(5678L).build() @@ -45,7 +45,7 @@ class CheckoutTest : KSRobolectricTestCase() { } @Test - fun testSurvey_equalTrue() { + fun testCheckout_equalTrue() { val checkout1 = Checkout.builder().build() val checkout2 = Checkout.builder().build() From 2ae2e40460e5d18d0de5b25d683ee50dd02138bd Mon Sep 17 00:00:00 2001 From: hadia Date: Mon, 28 Mar 2022 20:56:55 +0200 Subject: [PATCH 3/4] update SurveyResponse --- app/src/main/java/com/kickstarter/models/SurveyResponse.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/kickstarter/models/SurveyResponse.kt b/app/src/main/java/com/kickstarter/models/SurveyResponse.kt index 2d0b4f5da9..6eb554c7a3 100644 --- a/app/src/main/java/com/kickstarter/models/SurveyResponse.kt +++ b/app/src/main/java/com/kickstarter/models/SurveyResponse.kt @@ -19,7 +19,7 @@ class SurveyResponse private constructor( @Parcelize data class Builder( - private var answeredAt: DateTime? = DateTime.now(), + private var answeredAt: DateTime? = null, private var id: Long = 0L, private var project: Project? = null, private var urls: Urls? = null From 2e482fc30c974bf6087ceab458c5685e665c1949 Mon Sep 17 00:00:00 2001 From: hadia Date: Mon, 28 Mar 2022 21:09:32 +0200 Subject: [PATCH 4/4] update Ktlint --- .../kickstarter/mock/factories/CheckoutFactory.kt | 15 +++++++-------- .../main/java/com/kickstarter/models/Checkout.kt | 2 +- .../java/com/kickstarter/models/CheckoutTest.kt | 5 +++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/kickstarter/mock/factories/CheckoutFactory.kt b/app/src/main/java/com/kickstarter/mock/factories/CheckoutFactory.kt index 31e634aa40..ff8320f83d 100644 --- a/app/src/main/java/com/kickstarter/mock/factories/CheckoutFactory.kt +++ b/app/src/main/java/com/kickstarter/mock/factories/CheckoutFactory.kt @@ -2,13 +2,12 @@ package com.kickstarter.mock.factories import com.kickstarter.models.Checkout -class CheckoutFactory private constructor() { - companion object { - fun requiresAction(requiresAction: Boolean): Checkout { - return Checkout.builder() - .id(IdFactory.id().toLong()) - .backing(CheckoutBackingFactory.requiresAction(requiresAction)) - .build() - } +object CheckoutFactory { + @JvmStatic + fun requiresAction(requiresAction: Boolean): Checkout { + return Checkout.builder() + .id(IdFactory.id().toLong()) + .backing(CheckoutBackingFactory.requiresAction(requiresAction)) + .build() } } diff --git a/app/src/main/java/com/kickstarter/models/Checkout.kt b/app/src/main/java/com/kickstarter/models/Checkout.kt index d7931a8705..4c09e78f73 100644 --- a/app/src/main/java/com/kickstarter/models/Checkout.kt +++ b/app/src/main/java/com/kickstarter/models/Checkout.kt @@ -76,7 +76,7 @@ class Checkout private constructor( fun toBuilder() = Builder( clientSecret = clientSecret, requiresAction = requiresAction - + ) companion object { diff --git a/app/src/test/java/com/kickstarter/models/CheckoutTest.kt b/app/src/test/java/com/kickstarter/models/CheckoutTest.kt index c53b07ad72..55995413b2 100644 --- a/app/src/test/java/com/kickstarter/models/CheckoutTest.kt +++ b/app/src/test/java/com/kickstarter/models/CheckoutTest.kt @@ -2,6 +2,7 @@ package com.kickstarter.models import com.kickstarter.KSRobolectricTestCase import com.kickstarter.mock.factories.CheckoutBackingFactory +import com.kickstarter.mock.factories.CheckoutFactory import org.junit.Test class CheckoutTest : KSRobolectricTestCase() { @@ -35,10 +36,10 @@ class CheckoutTest : KSRobolectricTestCase() { @Test fun testCheckout_equalFalse() { - val checkout = Checkout.builder().build() + val checkout = CheckoutFactory.requiresAction(false) val checkout2 = Checkout.builder().backing(CheckoutBackingFactory.requiresAction(true)).build() val checkout3 = Checkout.builder().id(5678L).build() - + assertFalse(checkout == checkout2) assertFalse(checkout == checkout3) assertFalse(checkout3 == checkout2)