app/models/GutterTests.scala (46 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, Json} import models.Methodology.defaultMethodologies case class GutterContent( image: Option[Image], bodyCopy: Option[List[String]], cta: Option[Cta], ) case class GutterVariant( name: String, content: Option[GutterContent], ) case class GutterTest( name: String, channel: Option[Channel], status: Option[Status], lockStatus: Option[LockStatus], priority: Option[Int], nickname: Option[String], userCohort: UserCohort, locations: List[Region] = Nil, regionTargeting: Option[RegionTargeting]=None, contextTargeting: PageContextTargeting = PageContextTargeting(Nil,Nil,Nil,Nil), variants: List[GutterVariant], 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[GutterTest] { override def withChannel(channel: Channel): GutterTest = this.copy(channel = Some(channel)) override def withPriority(priority: Int): GutterTest = this.copy(priority = Some(priority)) } object GutterTest { implicit val customConfig: Configuration = Configuration.default.withDefaults implicit val gutterTestDecoder: Decoder[GutterTest] = deriveConfiguredDecoder[GutterTest] implicit val gutterTestEncoder: Encoder[GutterTest] = deriveConfiguredEncoder[GutterTest] }