Skip to content

Commit

Permalink
Add Arb and Eq for ObservationValidation
Browse files Browse the repository at this point in the history
  • Loading branch information
toddburnside committed Jun 13, 2024
1 parent 8263625 commit 66ec694
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@

package lucuma.core.model

import cats.Eq
import cats.data.NonEmptyChain
import cats.derived.*
import io.circe.Codec
import lucuma.core.enums.ObservationValidationCode

case class ObservationValidation(
code: ObservationValidationCode,
messages: NonEmptyChain[String]
) derives Codec
) derives Codec, Eq

object ObservationValidation:
def fromMsgs(code: ObservationValidationCode, msg: String, moreMsgs: String*): ObservationValidation =
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright (c) 2016-2023 Association of Universities for Research in Astronomy, Inc. (AURA)
// For license information see LICENSE or https://opensource.org/licenses/BSD-3-Clause

package lucuma.core.model
package arb

import cats.data.NonEmptyChain
import lucuma.core.enums.ObservationValidationCode
import lucuma.core.util.arb.ArbEnumerated
import org.scalacheck.Arbitrary
import org.scalacheck.Arbitrary.*
import org.scalacheck.Cogen

trait ArbObservationValidation {
import ArbEnumerated.given

given Arbitrary[NonEmptyChain[String]] =
Arbitrary(
for {
s <- arbitrary[String]
ss <- arbitrary[List[String]]
} yield NonEmptyChain.of(s, ss*)
)

given Cogen[NonEmptyChain[String]] =
Cogen[(String, List[String])].contramap { a =>
(a.head, a.tail.toList)
}

given Arbitrary[ObservationValidation] =
Arbitrary {
for {
c <- arbitrary[ObservationValidationCode]
m <- arbitrary[NonEmptyChain[String]]
} yield ObservationValidation(c, m)
}

given Cogen[ObservationValidation] =
Cogen[(ObservationValidationCode, NonEmptyChain[String])].contramap { ov =>
(ov.code, ov.messages)
}
}

object ArbObservationValidation extends ArbObservationValidation

0 comments on commit 66ec694

Please sign in to comment.