app/models/HeaderTests.scala (43 lines of code) (raw):
package models
import io.circe.generic.extras.Configuration
import io.circe.generic.extras.auto._
import io.circe.generic.extras.semiauto._
import io.circe.{Decoder, Encoder}
import models.Methodology.defaultMethodologies
case class HeaderContent(
heading: String,
subheading: String,
primaryCta: Option[Cta],
secondaryCta: Option[Cta],
)
case class HeaderVariant(
name: String,
content: HeaderContent,
mobileContent: Option[HeaderContent],
)
case class HeaderTest(
name: String,
channel: Option[Channel],
status: Option[Status],
lockStatus: Option[LockStatus],
priority: Option[Int],
nickname: Option[String],
locations: List[Region] = Nil,
regionTargeting: Option[RegionTargeting]=None,
userCohort: Option[UserCohort] = None,
variants: List[HeaderVariant],
controlProportionSettings: Option[ControlProportionSettings] = None,
deviceType: Option[DeviceType] = None,
campaignName: Option[String] = Some("NOT_IN_CAMPAIGN"),
signedInStatus: Option[SignedInStatus] = Some(SignedInStatus.All),
consentStatus: Option[ConsentStatus] = Some(ConsentStatus.All),
methodologies: List[Methodology] = defaultMethodologies
) extends ChannelTest[HeaderTest] {
override def withChannel(channel: Channel): HeaderTest = this.copy(channel = Some(channel))
override def withPriority(priority: Int): HeaderTest = this.copy(priority = Some(priority))
}
object HeaderTest {
implicit val customConfig: Configuration = Configuration.default.withDefaults
implicit val headerTestDecoder: Decoder[HeaderTest] = deriveConfiguredDecoder[HeaderTest]
implicit val headerTestEncoder: Encoder[HeaderTest] = deriveConfiguredEncoder[HeaderTest]
}