patrol-0.1.0.1: source/test-suite/Patrol/Type/AppContextSpec.hs
{-# LANGUAGE QuasiQuotes #-}
module Patrol.Type.AppContextSpec where
import qualified Data.Aeson as Aeson
import qualified Data.Aeson.QQ.Simple as Aeson
import qualified Data.Text as Text
import qualified Data.Time as Time
import qualified Patrol.Type.AppContext as AppContext
import qualified Test.Hspec as Hspec
spec :: Hspec.Spec
spec = Hspec.describe "Patrol.Type.AppContext" $ do
Hspec.describe "ToJSON" $ do
Hspec.it "works" $ do
let appContext = AppContext.empty
json = [Aeson.aesonQQ| {} |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with an app build" $ do
let appContext = AppContext.empty {AppContext.appBuild = Text.pack "example-app-build"}
json = [Aeson.aesonQQ| { "app_build": "example-app-build" } |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with an app identifier" $ do
let appContext = AppContext.empty {AppContext.appIdentifier = Text.pack "example-app-identifier"}
json = [Aeson.aesonQQ| { "app_identifier": "example-app-identifier" } |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with an app memory" $ do
let appContext = AppContext.empty {AppContext.appMemory = Just 0}
json = [Aeson.aesonQQ| { "app_memory": 0 } |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with an app name" $ do
let appContext = AppContext.empty {AppContext.appName = Text.pack "example-app-name"}
json = [Aeson.aesonQQ| { "app_name": "example-app-name" } |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with an app start time" $ do
let appContext = AppContext.empty {AppContext.appStartTime = Just $ Time.UTCTime (Time.fromGregorian 1970 1 1) 0}
json = [Aeson.aesonQQ| { "app_start_time": "1970-01-01T00:00:00Z" } |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with an app version" $ do
let appContext = AppContext.empty {AppContext.appVersion = Text.pack "example-app-version"}
json = [Aeson.aesonQQ| { "app_version": "example-app-version" } |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with a build type" $ do
let appContext = AppContext.empty {AppContext.buildType = Text.pack "example-build-type"}
json = [Aeson.aesonQQ| { "build_type": "example-build-type" } |]
Aeson.toJSON appContext `Hspec.shouldBe` json
Hspec.it "works with a device app hash" $ do
let appContext = AppContext.empty {AppContext.deviceAppHash = Text.pack "example-device-app-hash"}
json = [Aeson.aesonQQ| { "device_app_hash": "example-device-app-hash" } |]
Aeson.toJSON appContext `Hspec.shouldBe` json