override def reads()

in app/com/gu/memsub/promo/Formatters.scala [190:198]


        override def reads(json: JsValue): JsResult[PromotionType[PromoContext]] = (json \ "name").validate[String] match {
          case JsSuccess(PromotionType.percentDiscount, _) => Json.reads[PercentDiscount].reads(json)
          case JsSuccess(PromotionType.double, _) => doubleReads.reads(json)
          case JsSuccess(PromotionType.incentive, _) => Json.reads[Incentive].reads(json)
          case JsSuccess(PromotionType.freeTrial, _) => Json.reads[FreeTrial].reads(json)
          case JsSuccess(PromotionType.tracking, _) => JsSuccess(Tracking)
          case JsSuccess(PromotionType.retention, _) => JsSuccess(Retention)
          case _ => JsError(s"Failed to deserialise $json as a promo type")
        }