packages feed

patrol-0.1.0.1: source/test-suite/Patrol/Type/DebugImageSpec.hs

{-# LANGUAGE QuasiQuotes #-}

module Patrol.Type.DebugImageSpec where

import qualified Data.Aeson as Aeson
import qualified Data.Aeson.QQ.Simple as Aeson
import qualified Data.Map as Map
import qualified Data.Text as Text
import qualified Patrol.Type.AppleDebugImage as AppleDebugImage
import qualified Patrol.Type.DebugImage as DebugImage
import qualified Patrol.Type.NativeDebugImage as NativeDebugImage
import qualified Patrol.Type.ProguardDebugImage as ProguardDebugImage
import qualified Test.Hspec as Hspec

spec :: Hspec.Spec
spec = Hspec.describe "Patrol.Type.DebugImage" $ do
  Hspec.describe "ToJSON" $ do
    Hspec.it "works with apple" $ do
      let appleDebugImage = AppleDebugImage.empty {AppleDebugImage.arch = Text.pack "example-arch"}
          debugImage = DebugImage.Apple appleDebugImage
          json = [Aeson.aesonQQ| { "arch": "example-arch" } |]
      Aeson.toJSON debugImage `Hspec.shouldBe` json

    Hspec.it "works with native" $ do
      let nativeDebugImage = NativeDebugImage.empty {NativeDebugImage.arch = Text.pack "example-arch"}
          debugImage = DebugImage.Native nativeDebugImage
          json = [Aeson.aesonQQ| { "arch": "example-arch" } |]
      Aeson.toJSON debugImage `Hspec.shouldBe` json

    Hspec.it "works with proguard" $ do
      let proguardDebugImage = ProguardDebugImage.empty {ProguardDebugImage.uuid = Text.pack "example-uuid"}
          debugImage = DebugImage.Proguard proguardDebugImage
          json = [Aeson.aesonQQ| { "uuid": "example-uuid" } |]
      Aeson.toJSON debugImage `Hspec.shouldBe` json

    Hspec.it "works with other" $ do
      let debugImage = DebugImage.Other . Map.singleton (Text.pack "example-key") $ Aeson.Bool True
          json = [Aeson.aesonQQ| { "example-key": true } |]
      Aeson.toJSON debugImage `Hspec.shouldBe` json