module Test.Hspec.JUnit.Schema
  ( Suites(..)
  , Suite(..)
  , TestCase(..)
  , Location(..)
  , Result(..)
  ) where

import Prelude

import Data.Text (Text)
import Data.Time (UTCTime)
import Numeric.Natural

data Suites = Suites
  { suitesName :: Text
  , suitesSuites :: [Suite]
  }
  deriving stock Show

data Suite = Suite
  { suiteName :: Text
  , suiteTimestamp :: UTCTime
  , suiteCases :: [TestCase]
  }
  deriving stock Show

data TestCase = TestCase
  { testCaseLocation :: Maybe Location
  , testCaseClassName :: Text
  , testCaseName :: Text
  , testCaseDuration :: Double
  , testCaseResult :: Maybe Result
  }
  deriving stock Show

data Location = Location
  { locationFile :: FilePath
  , locationLine :: Natural
  }
  deriving stock Show

data Result = Failure Text Text | Skipped Text
  deriving stock Show

module Test.Hspec.JUnit.Schema
  ( Suites(..)
  , Suite(..)
  , TestCase(..)
  , Location(..)
  , Result(..)
  ) where

import Prelude

import Data.Text (Text)
import Data.Time (UTCTime)
import Numeric.Natural

data Suites = Suites
  { suitesName :: Text
  , suitesSuites :: [Suite]
  }
  deriving stock Show

data Suite = Suite
  { suiteName :: Text
  , suiteTimestamp :: UTCTime
  , suiteCases :: [TestCase]
  }
  deriving stock Show

data TestCase = TestCase
  { testCaseLocation :: Maybe Location
  , testCaseClassName :: Text
  , testCaseName :: Text
  , testCaseDuration :: Double
  , testCaseResult :: Maybe Result
  }
  deriving stock Show

data Location = Location
  { locationFile :: FilePath
  , locationLine :: Natural
  }
  deriving stock Show

data Result = Failure Text Text | Skipped Text
  deriving stock Show
