From cd5d8a8c7c2bd437048a0b8bad2cb237dfead911 Mon Sep 17 00:00:00 2001 From: leighdouglas Date: Thu, 5 May 2022 11:09:22 -0400 Subject: [PATCH] NTV-480: Migrate InternalBuildEnvelope.java to kotlin and deprecate Autoparcel (#1612) * Mograte to kotlin, deprecate autoparcel, tests * Linter Co-authored-by: Isabel Martin Co-authored-by: Hadia --- .../InternalBuildEnvelopeFactory.java | 23 ------ .../factories/InternalBuildEnvelopeFactory.kt | 20 ++++++ .../apiresponses/InternalBuildEnvelope.java | 29 -------- .../apiresponses/InternalBuildEnvelope.kt | 53 ++++++++++++++ .../apiresponses/InternalBuildEnvelopeTest.kt | 70 +++++++++++++++++++ 5 files changed, 143 insertions(+), 52 deletions(-) delete mode 100644 app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.java create mode 100644 app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.kt delete mode 100644 app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.java create mode 100644 app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.kt create mode 100644 app/src/test/java/com/kickstarter/services/apiresponses/InternalBuildEnvelopeTest.kt diff --git a/app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.java b/app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.java deleted file mode 100644 index 110461ff53..0000000000 --- a/app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.kickstarter.mock.factories; - -import com.kickstarter.services.apiresponses.InternalBuildEnvelope; - -import androidx.annotation.NonNull; - -public final class InternalBuildEnvelopeFactory { - private InternalBuildEnvelopeFactory() {} - - public static @NonNull InternalBuildEnvelope internalBuildEnvelope() { - return InternalBuildEnvelope.builder() - .build(123456) - .changelog("Bug fixes") - .newerBuildAvailable(false) - .build(); - } - - public static @NonNull InternalBuildEnvelope newerBuildAvailable() { - return internalBuildEnvelope().toBuilder() - .newerBuildAvailable(true) - .build(); - } -} diff --git a/app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.kt b/app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.kt new file mode 100644 index 0000000000..3d80ca8d75 --- /dev/null +++ b/app/src/main/java/com/kickstarter/mock/factories/InternalBuildEnvelopeFactory.kt @@ -0,0 +1,20 @@ +package com.kickstarter.mock.factories + +import com.kickstarter.services.apiresponses.InternalBuildEnvelope + +object InternalBuildEnvelopeFactory { + fun internalBuildEnvelope(): InternalBuildEnvelope { + return InternalBuildEnvelope.builder() + .build(123456) + .changelog("Bug fixes") + .newerBuildAvailable(false) + .build() + } + + @JvmStatic + fun newerBuildAvailable(): InternalBuildEnvelope { + return internalBuildEnvelope().toBuilder() + .newerBuildAvailable(true) + .build() + } +} diff --git a/app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.java b/app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.java deleted file mode 100644 index 09f003e36b..0000000000 --- a/app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.kickstarter.services.apiresponses; - -import android.os.Parcelable; - -import com.kickstarter.libs.qualifiers.AutoGson; - -import androidx.annotation.Nullable; -import auto.parcel.AutoParcel; - -@AutoGson @AutoParcel -public abstract class InternalBuildEnvelope implements Parcelable { - public abstract @Nullable Integer build(); - public abstract @Nullable String changelog(); - public abstract boolean newerBuildAvailable(); - - @AutoParcel.Builder - public abstract static class Builder { - public abstract Builder build(Integer __); - public abstract Builder changelog(String __); - public abstract Builder newerBuildAvailable(boolean __); - public abstract InternalBuildEnvelope build(); - } - - public static Builder builder() { - return new AutoParcel_InternalBuildEnvelope.Builder(); - } - - public abstract Builder toBuilder(); -} diff --git a/app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.kt b/app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.kt new file mode 100644 index 0000000000..1dd1b57327 --- /dev/null +++ b/app/src/main/java/com/kickstarter/services/apiresponses/InternalBuildEnvelope.kt @@ -0,0 +1,53 @@ +package com.kickstarter.services.apiresponses + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +class InternalBuildEnvelope private constructor( + private val build: Int?, + private val changelog: String?, + private val newerBuildAvailable: Boolean +) : Parcelable { + fun build() = this.build + fun changelog() = this.changelog + fun newerBuildAvailable() = this.newerBuildAvailable + + @Parcelize + data class Builder( + private var build: Int? = null, + private var changelog: String? = null, + private var newerBuildAvailable: Boolean = false + ) : Parcelable { + fun build(build: Int?) = apply { this.build = build ?: 0 } + fun changelog(changelog: String?) = apply { this.changelog = changelog ?: "" } + fun newerBuildAvailable(newerBuildAvailable: Boolean?) = apply { this.newerBuildAvailable = newerBuildAvailable ?: false } + fun build() = InternalBuildEnvelope( + build = build, + changelog = changelog, + newerBuildAvailable = newerBuildAvailable + ) + } + + fun toBuilder() = Builder( + build = build, + changelog = changelog, + newerBuildAvailable = newerBuildAvailable + ) + + override fun equals(other: Any?): Boolean { + var equals = super.equals(other) + if (other is InternalBuildEnvelope) { + equals = build() == other.build() && + changelog() == other.changelog() && + newerBuildAvailable() == other.newerBuildAvailable() + } + return equals + } + + companion object { + fun builder(): Builder { + return Builder() + } + } +} diff --git a/app/src/test/java/com/kickstarter/services/apiresponses/InternalBuildEnvelopeTest.kt b/app/src/test/java/com/kickstarter/services/apiresponses/InternalBuildEnvelopeTest.kt new file mode 100644 index 0000000000..add07488e9 --- /dev/null +++ b/app/src/test/java/com/kickstarter/services/apiresponses/InternalBuildEnvelopeTest.kt @@ -0,0 +1,70 @@ +package com.kickstarter.services.apiresponses + +import junit.framework.TestCase +import org.junit.Test + +class InternalBuildEnvelopeTest : TestCase() { + + @Test + fun testInternalBuildEnvelopeDefaultInit() { + val internalBuildEnvelope = InternalBuildEnvelope.builder().build(343).changelog("changelog").newerBuildAvailable(true).build() + + assertEquals(internalBuildEnvelope.build(), 343) + assertEquals(internalBuildEnvelope.changelog(), "changelog") + assertEquals(internalBuildEnvelope.newerBuildAvailable(), true) + } + + @Test + fun testInternalBuildEnvelopeEquals_whenFieldsDontMatch_returnsFalse() { + val internalBuildEnvelope1 = InternalBuildEnvelope.builder() + .build(343) + .changelog("changelog1") + .newerBuildAvailable(true) + .build() + + val internalBuildEnvelope2 = internalBuildEnvelope1.toBuilder() + .build(876) + .build() + + val internalBuildEnvelope3 = internalBuildEnvelope1.toBuilder() + .changelog("changelog3") + .build() + + val internalBuildEnvelope4 = internalBuildEnvelope1.toBuilder() + .newerBuildAvailable(false) + .build() + + assertFalse(internalBuildEnvelope1 == internalBuildEnvelope2) + assertFalse(internalBuildEnvelope1 == internalBuildEnvelope3) + assertFalse(internalBuildEnvelope1 == internalBuildEnvelope4) + assertFalse(internalBuildEnvelope2 == internalBuildEnvelope3) + assertFalse(internalBuildEnvelope2 == internalBuildEnvelope4) + assertFalse(internalBuildEnvelope3 == internalBuildEnvelope4) + } + + @Test + fun testInternalBuildEnvelopeEquals_whenFieldsMatch_returnsTrue() { + val internalBuildEnvelope1 = InternalBuildEnvelope.builder() + .build(343) + .changelog("changelog1") + .newerBuildAvailable(true) + .build() + + val internalBuildEnvelope2 = internalBuildEnvelope1 + assertTrue(internalBuildEnvelope1 == internalBuildEnvelope2) + } + + @Test + fun testProjectsEnvelopToBuilder() { + val internalBuildEnvelope = InternalBuildEnvelope.builder() + .build(343) + .changelog("changelog1") + .newerBuildAvailable(true) + .build() + .toBuilder() + .changelog("another_changelog") + .build() + + assertEquals(internalBuildEnvelope.changelog(), "another_changelog") + } +}