Skip to content

Commit

Permalink
Converts string date to object in the all-domains response model
Browse files Browse the repository at this point in the history
  • Loading branch information
Antonis Lilis committed Oct 12, 2023
1 parent 4146ecf commit 5d4f727
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility
import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.COMING_SOON
import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.PUBLIC
import org.wordpress.android.fluxc.test
import org.wordpress.android.util.DateTimeUtils
import kotlin.test.assertNotNull

@RunWith(MockitoJUnitRunner::class)
Expand Down Expand Up @@ -546,6 +547,12 @@ class SiteRestClientTest {
assertThat(domains).hasSize(4)
assertThat(domains[0].domain).isEqualTo("some.test.domain")
assertThat(domains[0].wpcomDomain).isFalse
assertThat(domains[0].registrationDate).isEqualTo(
DateTimeUtils.dateUTCFromIso8601("2009-03-26T21:20:53+00:00")
)
assertThat(domains[0].expiry).isEqualTo(
DateTimeUtils.dateUTCFromIso8601("2024-03-24T00:00:00+00:00")
)
assertThat(domains[0].domainStatus).isNotNull
assertThat(domains[0].domainStatus?.status).isEqualTo("Active")
assertThat(domains[0].domainStatus?.statusType).isEqualTo(SUCCESS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import com.google.gson.JsonElement
import com.google.gson.JsonParseException
import com.google.gson.annotations.JsonAdapter
import com.google.gson.annotations.SerializedName
import org.wordpress.android.util.DateTimeUtils
import java.lang.reflect.Type
import java.util.Date

data class AllDomainsResponse(val domains: List<AllDomainsDomain>)

Expand All @@ -29,9 +31,11 @@ data class AllDomainsDomain(
@JsonAdapter(BooleanTypeAdapter::class)
val hasRegistration: Boolean = false,
@SerializedName("registration_date")
val registrationDate: String? = null,
@JsonAdapter(AllDomainsDateAdapter::class)
val registrationDate: Date? = null,
@SerializedName("expiry")
val expiry: String? = null,
@JsonAdapter(AllDomainsDateAdapter::class)
val expiry: Date? = null,
@SerializedName("wpcom_domain")
@JsonAdapter(BooleanTypeAdapter::class)
val wpcomDomain: Boolean = false,
Expand Down Expand Up @@ -93,3 +97,18 @@ internal class StatusTypeAdapter : JsonDeserializer<StatusType> {
}
}
}

internal class AllDomainsDateAdapter : JsonDeserializer<Date?> {
@Throws(JsonParseException::class)
override fun deserialize(
json: JsonElement,
typeOfT: Type,
context: JsonDeserializationContext
): Date? {
val jsonPrimitive = json.asJsonPrimitive
return when {
jsonPrimitive.isString -> DateTimeUtils.dateUTCFromIso8601(jsonPrimitive.asString)
else -> null
}
}
}

0 comments on commit 5d4f727

Please sign in to comment.