packages feed

patrol-1.3.0.0: source/test-suite/Patrol/Type/ItemSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module Patrol.Type.ItemSpec where

import qualified Data.ByteString as ByteString
import qualified Data.ByteString.Builder as Builder
import qualified Data.ByteString.Lazy as LazyByteString
import qualified Patrol.Type.ClientReport as ClientReport
import qualified Patrol.Type.Event as Event
import qualified Patrol.Type.Item as Item
import qualified Test.Hspec as Hspec

spec :: Hspec.Spec
spec = Hspec.describe "Patrol.Type.Item" $ do
  Hspec.describe "serialize" $ do
    Hspec.it "works on Event" $ do
      let actual =
            LazyByteString.toStrict
              . Builder.toLazyByteString
              . Item.serialize
              $ Item.Event Event.empty
      let expected = "{\"type\":\"event\",\"length\":47}\n{\"event_id\":\"00000000000000000000000000000000\"}" :: ByteString.ByteString
      actual `Hspec.shouldBe` expected

    Hspec.it "works on ClientReport" $ do
      let actual =
            LazyByteString.toStrict
              . Builder.toLazyByteString
              . Item.serialize
              $ Item.ClientReport ClientReport.empty
      let expected = "{\"type\":\"client_report\",\"length\":2}\n{}" :: ByteString.ByteString
      actual `Hspec.shouldBe` expected

    Hspec.it "works on Raw" $ do
      let actual =
            LazyByteString.toStrict
              . Builder.toLazyByteString
              . Item.serialize
              $ Item.Raw
      let expected = "" :: ByteString.ByteString
      actual `Hspec.shouldBe` expected