Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

Commit

Permalink
Fix gh issue #4000
Browse files Browse the repository at this point in the history
  • Loading branch information
mtwalli committed Sep 26, 2021
1 parent 8eeb2f7 commit 858dd8f
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,12 @@ private fun Collection<CwaCovidCertificate>.rule3FindRecentLastShot(
.filter {
Days.daysBetween(it.rawCertificate.vaccination.vaccinatedOn, nowUtc.toLocalDateUtc()).days > 14
}
.maxByOrNull { it.rawCertificate.vaccination.vaccinatedOn }
.maxWithOrNull(
compareBy(
{ it.rawCertificate.vaccination.vaccinatedOn },
{ it.headerIssuedAt }
)
)

/**
* 4
Expand Down Expand Up @@ -119,7 +124,12 @@ private fun Collection<CwaCovidCertificate>.rule5findTooRecentFinalShot(
.filter {
Days.daysBetween(it.rawCertificate.vaccination.vaccinatedOn, nowUtc.toLocalDateUtc()).days <= 14
}
.maxByOrNull { it.rawCertificate.vaccination.vaccinatedOn }
.maxWithOrNull(
compareBy(
{ it.rawCertificate.vaccination.vaccinatedOn },
{ it.headerIssuedAt }
)
)

/**
* 6
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class PersonCertificatesExtensionsTest : BaseTest() {
wrongOrder2 shouldNotBe expectedOrder
}

@Suppress("LongMethod", "ComplexMethod")
@Test
fun `find Highest Priority Certificate`() {
val first = mockk<TestCertificate>().apply {
Expand Down Expand Up @@ -75,6 +76,17 @@ class PersonCertificatesExtensionsTest : BaseTest() {
}

val third = mockk<VaccinationCertificate>().apply {
every { headerIssuedAt } returns Instant.parse("2021-06-24T14:00:00.000Z")
every { rawCertificate.vaccination.doseNumber } returns 2
every { rawCertificate.vaccination.totalSeriesOfDoses } returns 2
every {
rawCertificate.vaccination.vaccinatedOn
} returns time.minus(Duration.standardDays(15)).toLocalDateUtc()
every { getState() } returns mockk<State.Valid>()
}

val thirdIssuedAtAnotherDate = mockk<VaccinationCertificate>().apply {
every { headerIssuedAt } returns Instant.parse("2021-07-20T10:00:00.000Z")
every { rawCertificate.vaccination.doseNumber } returns 2
every { rawCertificate.vaccination.totalSeriesOfDoses } returns 2
every {
Expand All @@ -89,6 +101,15 @@ class PersonCertificatesExtensionsTest : BaseTest() {
}

val fifth = mockk<VaccinationCertificate>().apply {
every { headerIssuedAt } returns Instant.parse("2021-06-24T14:00:00.000Z")
every { rawCertificate.vaccination.doseNumber } returns 2
every { rawCertificate.vaccination.totalSeriesOfDoses } returns 2
every { rawCertificate.vaccination.vaccinatedOn } returns time.toLocalDateUtc()
every { getState() } returns mockk<State.Valid>()
}

val fifthIssuedAtAnotherDate = mockk<VaccinationCertificate>().apply {
every { headerIssuedAt } returns Instant.parse("2021-07-24T10:00:00.000Z")
every { rawCertificate.vaccination.doseNumber } returns 2
every { rawCertificate.vaccination.totalSeriesOfDoses } returns 2
every { rawCertificate.vaccination.vaccinatedOn } returns time.toLocalDateUtc()
Expand Down Expand Up @@ -134,8 +155,10 @@ class PersonCertificatesExtensionsTest : BaseTest() {
seventh,
sixth,
fifth,
fifthIssuedAtAnotherDate,
fourth,
third,
thirdIssuedAtAnotherDate,
second,
first,
)
Expand All @@ -145,10 +168,14 @@ class PersonCertificatesExtensionsTest : BaseTest() {
certificates.remove(first)
certificates.findHighestPriorityCertificate(time) shouldBe second
certificates.remove(second)
certificates.findHighestPriorityCertificate(time) shouldBe thirdIssuedAtAnotherDate
certificates.remove(thirdIssuedAtAnotherDate)
certificates.findHighestPriorityCertificate(time) shouldBe third
certificates.remove(third)
certificates.findHighestPriorityCertificate(time) shouldBe fourth
certificates.remove(fourth)
certificates.findHighestPriorityCertificate(time) shouldBe fifthIssuedAtAnotherDate
certificates.remove(fifthIssuedAtAnotherDate)
certificates.findHighestPriorityCertificate(time) shouldBe fifth
certificates.remove(fifth)
certificates.findHighestPriorityCertificate(time) shouldBe sixth
Expand Down Expand Up @@ -198,13 +225,15 @@ class PersonCertificatesExtensionsTest : BaseTest() {
@Test
fun `fallback behavior when there are no valid certificates`() {
val first = mockk<VaccinationCertificate>().apply {
every { headerIssuedAt } returns Instant.parse("2021-01-20T14:00:00.000Z")
every { rawCertificate.vaccination.doseNumber } returns 2
every { rawCertificate.vaccination.totalSeriesOfDoses } returns 2
every { rawCertificate.vaccination.vaccinatedOn } returns LocalDate.parse("2021-01-01")
every { getState() } returns mockk<State.Expired>()
}

val second = mockk<VaccinationCertificate>().apply {
every { headerIssuedAt } returns Instant.parse("2021-02-20T14:00:00.000Z")
every { rawCertificate.vaccination.doseNumber } returns 2
every { rawCertificate.vaccination.totalSeriesOfDoses } returns 2
every { rawCertificate.vaccination.vaccinatedOn } returns LocalDate.parse("2021-01-02")
Expand Down

0 comments on commit 858dd8f

Please sign in to comment.