-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Relax ISO8601DateTime skalar ved å støtte flere formater
Endringer oppsummert: * ISO8601DateTime skalar i produsent api støtter nå input både med og uten offset * uten offset antas oslo lokal tid * Input typen til kalenderavtale startTidspunkt og sluttTidspunkt i mutations endres til å bruke ISO8601DateTime i stedet for ISO8601LocalDateTime * Bakgrunn for dette er å gjøre det lettere å bruke nySak og nyKalenderavtale sammen. Slippe å forholde seg til to formater på tidspunkt. Detaljer: Under panseret brukte denne skalaren ISO_OFFSET_DATE_TIME som parser. Som medførte at input som hadde denne skalaren som type alltid måtte ha med offset. Her endres skalaren til å bruke ISO_DATE_TIME som parser samt at den parsede verdien konverteres til en OffsetDateTime i UTC tid. Dersom input kommer uten offset så antas input å representere oslo lokal tid. Dette er reflektert i API dokumentasjonen. Typen til kalenderavtale starttidspunkt og slutttidspunkt endres fra ISO8601LocalDateTime til ISO8601DateTime. Hovedmotivasjonen her er at det er dårlig DX å tvinges til å forholde seg til to formater på tidspunkt i mutations man må gjøre sammen. E.g. nySak & nyKalenderavtale. Denne endringen endrer kun skalarens oppførsel på en bakoverkompatibel måte. Det er derimot en breaking change for brukere av kalenderavtale mutations, men dette er ikke tatt i bruk i prod enda. Vurderer det som verdt å endre kontrakten nå, før det er i bruk i prod. Utrulling av endring blir koordinert med teamet som holder på å ta dette i bruk i dev.
- Loading branch information
Showing
8 changed files
with
74 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
app/src/test/kotlin/no/nav/arbeidsgiver/notifikasjon/infrastruktur/graphql/ScalarsTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package no.nav.arbeidsgiver.notifikasjon.infrastruktur.graphql | ||
|
||
import io.kotest.core.spec.style.DescribeSpec | ||
import io.kotest.datatest.withData | ||
import io.kotest.matchers.equals.shouldBeEqual | ||
import io.kotest.matchers.shouldBe | ||
import io.kotest.matchers.types.instanceOf | ||
import no.nav.arbeidsgiver.notifikasjon.infrastruktur.kafka.kafkaObjectMapper | ||
import java.time.OffsetDateTime | ||
|
||
class ScalarsTest : DescribeSpec({ | ||
describe("ISO8601DateTime") { | ||
withData( | ||
"2020-01-01T00:01Z", // 00:01 UTC == 01:01 Oslo | ||
"2020-01-01T01:01+01:00", // 01:01 +1 == 01:01 Oslo | ||
"2020-01-01T01:01+01:00[Europe/Oslo]", // == 01:01 Oslo | ||
"2020-01-01T01:01", // 01:01 Oslo | ||
"2020-01-01T01:01:00.00", // 01:01 Oslo | ||
) { ts -> | ||
Scalars.ISO8601DateTime.coercing.parseValue(ts).let { | ||
it shouldBe instanceOf<OffsetDateTime>() | ||
it!! shouldBeEqual OffsetDateTime.parse("2020-01-01T00:01Z") | ||
|
||
kafkaObjectMapper.writeValueAsString(it) shouldBe "\"2020-01-01T00:01:00Z\"" | ||
} | ||
} | ||
} | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters