{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CodeBuild.Types.Report
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CodeBuild.Types.Report where

import Amazonka.CodeBuild.Types.CodeCoverageReportSummary
import Amazonka.CodeBuild.Types.ReportExportConfig
import Amazonka.CodeBuild.Types.ReportStatusType
import Amazonka.CodeBuild.Types.ReportType
import Amazonka.CodeBuild.Types.TestReportSummary
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Information about the results from running a series of test cases during
-- the run of a build project. The test cases are specified in the
-- buildspec for the build project using one or more paths to the test case
-- files. You can specify any type of tests you want, such as unit tests,
-- integration tests, and functional tests.
--
-- /See:/ 'newReport' smart constructor.
data Report = Report'
  { -- | The ARN of the report group associated with this report.
    Report -> Maybe Text
reportGroupArn :: Prelude.Maybe Prelude.Text,
    -- | The status of this report.
    Report -> Maybe ReportStatusType
status :: Prelude.Maybe ReportStatusType,
    -- | The date and time a report expires. A report expires 30 days after it is
    -- created. An expired report is not available to view in CodeBuild.
    Report -> Maybe POSIX
expired :: Prelude.Maybe Core.POSIX,
    -- | The ARN of the build run that generated this report.
    Report -> Maybe Text
executionId :: Prelude.Maybe Prelude.Text,
    -- | A boolean that specifies if this report run is truncated. The list of
    -- test cases is truncated after the maximum number of test cases is
    -- reached.
    Report -> Maybe Bool
truncated :: Prelude.Maybe Prelude.Bool,
    -- | The ARN of the report run.
    Report -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The date and time this report run occurred.
    Report -> Maybe POSIX
created :: Prelude.Maybe Core.POSIX,
    -- | The name of the report that was run.
    Report -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | A @CodeCoverageReportSummary@ object that contains a code coverage
    -- summary for this report.
    Report -> Maybe CodeCoverageReportSummary
codeCoverageSummary :: Prelude.Maybe CodeCoverageReportSummary,
    -- | A @TestReportSummary@ object that contains information about this test
    -- report.
    Report -> Maybe TestReportSummary
testSummary :: Prelude.Maybe TestReportSummary,
    -- | The type of the report that was run.
    --
    -- [CODE_COVERAGE]
    --     A code coverage report.
    --
    -- [TEST]
    --     A test report.
    Report -> Maybe ReportType
type' :: Prelude.Maybe ReportType,
    -- | Information about where the raw data used to generate this report was
    -- exported.
    Report -> Maybe ReportExportConfig
exportConfig :: Prelude.Maybe ReportExportConfig
  }
  deriving (Report -> Report -> Bool
(Report -> Report -> Bool)
-> (Report -> Report -> Bool) -> Eq Report
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Report -> Report -> Bool
$c/= :: Report -> Report -> Bool
== :: Report -> Report -> Bool
$c== :: Report -> Report -> Bool
Prelude.Eq, ReadPrec [Report]
ReadPrec Report
Int -> ReadS Report
ReadS [Report]
(Int -> ReadS Report)
-> ReadS [Report]
-> ReadPrec Report
-> ReadPrec [Report]
-> Read Report
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Report]
$creadListPrec :: ReadPrec [Report]
readPrec :: ReadPrec Report
$creadPrec :: ReadPrec Report
readList :: ReadS [Report]
$creadList :: ReadS [Report]
readsPrec :: Int -> ReadS Report
$creadsPrec :: Int -> ReadS Report
Prelude.Read, Int -> Report -> ShowS
[Report] -> ShowS
Report -> String
(Int -> Report -> ShowS)
-> (Report -> String) -> ([Report] -> ShowS) -> Show Report
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Report] -> ShowS
$cshowList :: [Report] -> ShowS
show :: Report -> String
$cshow :: Report -> String
showsPrec :: Int -> Report -> ShowS
$cshowsPrec :: Int -> Report -> ShowS
Prelude.Show, (forall x. Report -> Rep Report x)
-> (forall x. Rep Report x -> Report) -> Generic Report
forall x. Rep Report x -> Report
forall x. Report -> Rep Report x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Report x -> Report
$cfrom :: forall x. Report -> Rep Report x
Prelude.Generic)

-- |
-- Create a value of 'Report' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'reportGroupArn', 'report_reportGroupArn' - The ARN of the report group associated with this report.
--
-- 'status', 'report_status' - The status of this report.
--
-- 'expired', 'report_expired' - The date and time a report expires. A report expires 30 days after it is
-- created. An expired report is not available to view in CodeBuild.
--
-- 'executionId', 'report_executionId' - The ARN of the build run that generated this report.
--
-- 'truncated', 'report_truncated' - A boolean that specifies if this report run is truncated. The list of
-- test cases is truncated after the maximum number of test cases is
-- reached.
--
-- 'arn', 'report_arn' - The ARN of the report run.
--
-- 'created', 'report_created' - The date and time this report run occurred.
--
-- 'name', 'report_name' - The name of the report that was run.
--
-- 'codeCoverageSummary', 'report_codeCoverageSummary' - A @CodeCoverageReportSummary@ object that contains a code coverage
-- summary for this report.
--
-- 'testSummary', 'report_testSummary' - A @TestReportSummary@ object that contains information about this test
-- report.
--
-- 'type'', 'report_type' - The type of the report that was run.
--
-- [CODE_COVERAGE]
--     A code coverage report.
--
-- [TEST]
--     A test report.
--
-- 'exportConfig', 'report_exportConfig' - Information about where the raw data used to generate this report was
-- exported.
newReport ::
  Report
newReport :: Report
newReport =
  Report' :: Maybe Text
-> Maybe ReportStatusType
-> Maybe POSIX
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe CodeCoverageReportSummary
-> Maybe TestReportSummary
-> Maybe ReportType
-> Maybe ReportExportConfig
-> Report
Report'
    { $sel:reportGroupArn:Report' :: Maybe Text
reportGroupArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:status:Report' :: Maybe ReportStatusType
status = Maybe ReportStatusType
forall a. Maybe a
Prelude.Nothing,
      $sel:expired:Report' :: Maybe POSIX
expired = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:executionId:Report' :: Maybe Text
executionId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:truncated:Report' :: Maybe Bool
truncated = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Report' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:created:Report' :: Maybe POSIX
created = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:name:Report' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:codeCoverageSummary:Report' :: Maybe CodeCoverageReportSummary
codeCoverageSummary = Maybe CodeCoverageReportSummary
forall a. Maybe a
Prelude.Nothing,
      $sel:testSummary:Report' :: Maybe TestReportSummary
testSummary = Maybe TestReportSummary
forall a. Maybe a
Prelude.Nothing,
      $sel:type':Report' :: Maybe ReportType
type' = Maybe ReportType
forall a. Maybe a
Prelude.Nothing,
      $sel:exportConfig:Report' :: Maybe ReportExportConfig
exportConfig = Maybe ReportExportConfig
forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN of the report group associated with this report.
report_reportGroupArn :: Lens.Lens' Report (Prelude.Maybe Prelude.Text)
report_reportGroupArn :: (Maybe Text -> f (Maybe Text)) -> Report -> f Report
report_reportGroupArn = (Report -> Maybe Text)
-> (Report -> Maybe Text -> Report)
-> Lens Report Report (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe Text
reportGroupArn :: Maybe Text
$sel:reportGroupArn:Report' :: Report -> Maybe Text
reportGroupArn} -> Maybe Text
reportGroupArn) (\s :: Report
s@Report' {} Maybe Text
a -> Report
s {$sel:reportGroupArn:Report' :: Maybe Text
reportGroupArn = Maybe Text
a} :: Report)

-- | The status of this report.
report_status :: Lens.Lens' Report (Prelude.Maybe ReportStatusType)
report_status :: (Maybe ReportStatusType -> f (Maybe ReportStatusType))
-> Report -> f Report
report_status = (Report -> Maybe ReportStatusType)
-> (Report -> Maybe ReportStatusType -> Report)
-> Lens
     Report Report (Maybe ReportStatusType) (Maybe ReportStatusType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe ReportStatusType
status :: Maybe ReportStatusType
$sel:status:Report' :: Report -> Maybe ReportStatusType
status} -> Maybe ReportStatusType
status) (\s :: Report
s@Report' {} Maybe ReportStatusType
a -> Report
s {$sel:status:Report' :: Maybe ReportStatusType
status = Maybe ReportStatusType
a} :: Report)

-- | The date and time a report expires. A report expires 30 days after it is
-- created. An expired report is not available to view in CodeBuild.
report_expired :: Lens.Lens' Report (Prelude.Maybe Prelude.UTCTime)
report_expired :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Report -> f Report
report_expired = (Report -> Maybe POSIX)
-> (Report -> Maybe POSIX -> Report)
-> Lens Report Report (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe POSIX
expired :: Maybe POSIX
$sel:expired:Report' :: Report -> Maybe POSIX
expired} -> Maybe POSIX
expired) (\s :: Report
s@Report' {} Maybe POSIX
a -> Report
s {$sel:expired:Report' :: Maybe POSIX
expired = Maybe POSIX
a} :: Report) ((Maybe POSIX -> f (Maybe POSIX)) -> Report -> f Report)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Report
-> f Report
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The ARN of the build run that generated this report.
report_executionId :: Lens.Lens' Report (Prelude.Maybe Prelude.Text)
report_executionId :: (Maybe Text -> f (Maybe Text)) -> Report -> f Report
report_executionId = (Report -> Maybe Text)
-> (Report -> Maybe Text -> Report)
-> Lens Report Report (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe Text
executionId :: Maybe Text
$sel:executionId:Report' :: Report -> Maybe Text
executionId} -> Maybe Text
executionId) (\s :: Report
s@Report' {} Maybe Text
a -> Report
s {$sel:executionId:Report' :: Maybe Text
executionId = Maybe Text
a} :: Report)

-- | A boolean that specifies if this report run is truncated. The list of
-- test cases is truncated after the maximum number of test cases is
-- reached.
report_truncated :: Lens.Lens' Report (Prelude.Maybe Prelude.Bool)
report_truncated :: (Maybe Bool -> f (Maybe Bool)) -> Report -> f Report
report_truncated = (Report -> Maybe Bool)
-> (Report -> Maybe Bool -> Report)
-> Lens Report Report (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe Bool
truncated :: Maybe Bool
$sel:truncated:Report' :: Report -> Maybe Bool
truncated} -> Maybe Bool
truncated) (\s :: Report
s@Report' {} Maybe Bool
a -> Report
s {$sel:truncated:Report' :: Maybe Bool
truncated = Maybe Bool
a} :: Report)

-- | The ARN of the report run.
report_arn :: Lens.Lens' Report (Prelude.Maybe Prelude.Text)
report_arn :: (Maybe Text -> f (Maybe Text)) -> Report -> f Report
report_arn = (Report -> Maybe Text)
-> (Report -> Maybe Text -> Report)
-> Lens Report Report (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe Text
arn :: Maybe Text
$sel:arn:Report' :: Report -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Report
s@Report' {} Maybe Text
a -> Report
s {$sel:arn:Report' :: Maybe Text
arn = Maybe Text
a} :: Report)

-- | The date and time this report run occurred.
report_created :: Lens.Lens' Report (Prelude.Maybe Prelude.UTCTime)
report_created :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Report -> f Report
report_created = (Report -> Maybe POSIX)
-> (Report -> Maybe POSIX -> Report)
-> Lens Report Report (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe POSIX
created :: Maybe POSIX
$sel:created:Report' :: Report -> Maybe POSIX
created} -> Maybe POSIX
created) (\s :: Report
s@Report' {} Maybe POSIX
a -> Report
s {$sel:created:Report' :: Maybe POSIX
created = Maybe POSIX
a} :: Report) ((Maybe POSIX -> f (Maybe POSIX)) -> Report -> f Report)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Report
-> f Report
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The name of the report that was run.
report_name :: Lens.Lens' Report (Prelude.Maybe Prelude.Text)
report_name :: (Maybe Text -> f (Maybe Text)) -> Report -> f Report
report_name = (Report -> Maybe Text)
-> (Report -> Maybe Text -> Report)
-> Lens Report Report (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe Text
name :: Maybe Text
$sel:name:Report' :: Report -> Maybe Text
name} -> Maybe Text
name) (\s :: Report
s@Report' {} Maybe Text
a -> Report
s {$sel:name:Report' :: Maybe Text
name = Maybe Text
a} :: Report)

-- | A @CodeCoverageReportSummary@ object that contains a code coverage
-- summary for this report.
report_codeCoverageSummary :: Lens.Lens' Report (Prelude.Maybe CodeCoverageReportSummary)
report_codeCoverageSummary :: (Maybe CodeCoverageReportSummary
 -> f (Maybe CodeCoverageReportSummary))
-> Report -> f Report
report_codeCoverageSummary = (Report -> Maybe CodeCoverageReportSummary)
-> (Report -> Maybe CodeCoverageReportSummary -> Report)
-> Lens
     Report
     Report
     (Maybe CodeCoverageReportSummary)
     (Maybe CodeCoverageReportSummary)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe CodeCoverageReportSummary
codeCoverageSummary :: Maybe CodeCoverageReportSummary
$sel:codeCoverageSummary:Report' :: Report -> Maybe CodeCoverageReportSummary
codeCoverageSummary} -> Maybe CodeCoverageReportSummary
codeCoverageSummary) (\s :: Report
s@Report' {} Maybe CodeCoverageReportSummary
a -> Report
s {$sel:codeCoverageSummary:Report' :: Maybe CodeCoverageReportSummary
codeCoverageSummary = Maybe CodeCoverageReportSummary
a} :: Report)

-- | A @TestReportSummary@ object that contains information about this test
-- report.
report_testSummary :: Lens.Lens' Report (Prelude.Maybe TestReportSummary)
report_testSummary :: (Maybe TestReportSummary -> f (Maybe TestReportSummary))
-> Report -> f Report
report_testSummary = (Report -> Maybe TestReportSummary)
-> (Report -> Maybe TestReportSummary -> Report)
-> Lens
     Report Report (Maybe TestReportSummary) (Maybe TestReportSummary)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe TestReportSummary
testSummary :: Maybe TestReportSummary
$sel:testSummary:Report' :: Report -> Maybe TestReportSummary
testSummary} -> Maybe TestReportSummary
testSummary) (\s :: Report
s@Report' {} Maybe TestReportSummary
a -> Report
s {$sel:testSummary:Report' :: Maybe TestReportSummary
testSummary = Maybe TestReportSummary
a} :: Report)

-- | The type of the report that was run.
--
-- [CODE_COVERAGE]
--     A code coverage report.
--
-- [TEST]
--     A test report.
report_type :: Lens.Lens' Report (Prelude.Maybe ReportType)
report_type :: (Maybe ReportType -> f (Maybe ReportType)) -> Report -> f Report
report_type = (Report -> Maybe ReportType)
-> (Report -> Maybe ReportType -> Report)
-> Lens Report Report (Maybe ReportType) (Maybe ReportType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe ReportType
type' :: Maybe ReportType
$sel:type':Report' :: Report -> Maybe ReportType
type'} -> Maybe ReportType
type') (\s :: Report
s@Report' {} Maybe ReportType
a -> Report
s {$sel:type':Report' :: Maybe ReportType
type' = Maybe ReportType
a} :: Report)

-- | Information about where the raw data used to generate this report was
-- exported.
report_exportConfig :: Lens.Lens' Report (Prelude.Maybe ReportExportConfig)
report_exportConfig :: (Maybe ReportExportConfig -> f (Maybe ReportExportConfig))
-> Report -> f Report
report_exportConfig = (Report -> Maybe ReportExportConfig)
-> (Report -> Maybe ReportExportConfig -> Report)
-> Lens
     Report Report (Maybe ReportExportConfig) (Maybe ReportExportConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Report' {Maybe ReportExportConfig
exportConfig :: Maybe ReportExportConfig
$sel:exportConfig:Report' :: Report -> Maybe ReportExportConfig
exportConfig} -> Maybe ReportExportConfig
exportConfig) (\s :: Report
s@Report' {} Maybe ReportExportConfig
a -> Report
s {$sel:exportConfig:Report' :: Maybe ReportExportConfig
exportConfig = Maybe ReportExportConfig
a} :: Report)

instance Core.FromJSON Report where
  parseJSON :: Value -> Parser Report
parseJSON =
    String -> (Object -> Parser Report) -> Value -> Parser Report
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Report"
      ( \Object
x ->
          Maybe Text
-> Maybe ReportStatusType
-> Maybe POSIX
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe CodeCoverageReportSummary
-> Maybe TestReportSummary
-> Maybe ReportType
-> Maybe ReportExportConfig
-> Report
Report'
            (Maybe Text
 -> Maybe ReportStatusType
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe CodeCoverageReportSummary
 -> Maybe TestReportSummary
 -> Maybe ReportType
 -> Maybe ReportExportConfig
 -> Report)
-> Parser (Maybe Text)
-> Parser
     (Maybe ReportStatusType
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"reportGroupArn")
            Parser
  (Maybe ReportStatusType
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe ReportStatusType)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ReportStatusType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"status")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"expired")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"executionId")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"truncated")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"arn")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"created")
            Parser
  (Maybe Text
   -> Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe Text)
-> Parser
     (Maybe CodeCoverageReportSummary
      -> Maybe TestReportSummary
      -> Maybe ReportType
      -> Maybe ReportExportConfig
      -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"name")
            Parser
  (Maybe CodeCoverageReportSummary
   -> Maybe TestReportSummary
   -> Maybe ReportType
   -> Maybe ReportExportConfig
   -> Report)
-> Parser (Maybe CodeCoverageReportSummary)
-> Parser
     (Maybe TestReportSummary
      -> Maybe ReportType -> Maybe ReportExportConfig -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CodeCoverageReportSummary)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"codeCoverageSummary")
            Parser
  (Maybe TestReportSummary
   -> Maybe ReportType -> Maybe ReportExportConfig -> Report)
-> Parser (Maybe TestReportSummary)
-> Parser (Maybe ReportType -> Maybe ReportExportConfig -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TestReportSummary)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"testSummary")
            Parser (Maybe ReportType -> Maybe ReportExportConfig -> Report)
-> Parser (Maybe ReportType)
-> Parser (Maybe ReportExportConfig -> Report)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ReportType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"type")
            Parser (Maybe ReportExportConfig -> Report)
-> Parser (Maybe ReportExportConfig) -> Parser Report
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ReportExportConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"exportConfig")
      )

instance Prelude.Hashable Report

instance Prelude.NFData Report