diff --git a/applications/app/services/NewspaperQuery.scala b/applications/app/services/NewspaperQuery.scala index ca18510dd47c..f0a76fc7dcc8 100644 --- a/applications/app/services/NewspaperQuery.scala +++ b/applications/app/services/NewspaperQuery.scala @@ -201,6 +201,7 @@ class NewspaperQuery(contentApiClient: ContentApiClient) extends Dates with GuLo kicker = None, brandingByEdition = Map.empty, mediaAtom = None, + tests = None, ) LinkSnap.make(fapiSnap) } diff --git a/common/app/model/PressedProperties.scala b/common/app/model/PressedProperties.scala index 72f107b79d88..dd4112db92e2 100644 --- a/common/app/model/PressedProperties.scala +++ b/common/app/model/PressedProperties.scala @@ -2,6 +2,7 @@ package model.pressed import com.gu.facia.api.utils.FaciaContentUtils import com.gu.facia.api.{models => fapi, utils => fapiutils} +import com.gu.facia.client.models.Test import common.Edition import common.commercial.EditionBranding import services.NewsletterData @@ -34,6 +35,7 @@ final case class PressedProperties( editionBrandings: Option[Seq[EditionBranding]], atomId: Option[String], newsletterData: Option[NewsletterData] = None, + tests: Option[List[Test]] = None, ) { lazy val isPaidFor: Boolean = editionBrandings.exists( _.exists(branding => branding.branding.exists(_.isPaid) && branding.edition == Edition.defaultEdition), @@ -74,6 +76,7 @@ object PressedProperties { Edition.byId(editionId) map (EditionBranding(_, branding)) }.toSeq), atomId = FaciaContentUtils.atomId(content), + tests = content.tests, ) } diff --git a/common/app/services/FaciaContentConvert.scala b/common/app/services/FaciaContentConvert.scala index 88b9676e7c83..494a52c29f9c 100644 --- a/common/app/services/FaciaContentConvert.scala +++ b/common/app/services/FaciaContentConvert.scala @@ -41,6 +41,7 @@ object FaciaContentConvert { .toMap, atomId = None, mediaAtom = None, + tests = None, ) PressedContent.make(curated, false) diff --git a/common/test/layout/FrontTest.scala b/common/test/layout/FrontTest.scala index 8e42c247d71b..43ac1cb22c63 100644 --- a/common/test/layout/FrontTest.scala +++ b/common/test/layout/FrontTest.scala @@ -64,6 +64,7 @@ class FrontTest extends AnyFlatSpec with Matchers with GuiceOneAppPerSuite { brandingByEdition = Map.empty, atomId = None, mediaAtom = None, + tests = None, ) LatestSnap.make(fapiLatestSnap) diff --git a/facia/app/controllers/front/FapiFrontJsonMinimal.scala b/facia/app/controllers/front/FapiFrontJsonMinimal.scala index 5bf481df1898..9d70542bef30 100644 --- a/facia/app/controllers/front/FapiFrontJsonMinimal.scala +++ b/facia/app/controllers/front/FapiFrontJsonMinimal.scala @@ -1,5 +1,6 @@ package controllers.front +import com.gu.facia.client.models.{Test, VariantMeta} import model.PressedPage import model.facia.PressedCollection import model.pressed._ @@ -44,12 +45,42 @@ trait FapiFrontJsonMinimal { "group" -> faciaContent.card.group, "frontPublicationDate" -> faciaContent.properties.maybeFrontPublicationDate, "supporting" -> getSupporting(faciaContent), + "tests" -> getMinimalTests(faciaContent.properties.tests), ) .fields .filterNot { case (_, v) => v == JsNull }, ) } + private case class MinimalTest( + testUuid: String, + variantMeta: List[VariantMeta], + startDate: Option[Long], + expiryDate: Option[Long], + hasManuallyEndedOnThisTrail: Boolean, + ) + + implicit private val minimalTestWrites: Writes[MinimalTest] = Json.writes[MinimalTest] + + private def getMinimalTests(tests: Option[List[Test]]): JsValue = + tests.filter(_.nonEmpty) match { + case Some(tests) => + JsArray( + tests.map(test => + Json.toJson( + MinimalTest( + testUuid = test.testUuid, + variantMeta = test.variantMeta, + startDate = test.startDate, + expiryDate = test.expiryDate, + hasManuallyEndedOnThisTrail = test.hasManuallyEndedOnThisTrail, + ), + ), + ), + ) + case None => JsNull + } + private def getSupporting(faciaContent: PressedContent): JsValue = faciaContent match { case curatedContent: CuratedContent if curatedContent.supportingContent.nonEmpty => diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 6e156fdf5763..9cfe8266b2f1 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -6,7 +6,7 @@ object Dependencies { val identityLibVersion = "4.31" val awsVersion = "2.46.18" val capiVersion = "47.0.0" - val faciaVersion = "34.0.0" + val faciaVersion = "37.0.0" val dispatchVersion = "0.13.1" val romeVersion = "1.0" val jerseyVersion = "1.19.4"