packages feed

avro-0.3.0.5: test/Avro/THLogicalTypeSpec.hs

{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell     #-}
module Avro.THLogicalTypeSpec
where

import           Control.Lens
import           Control.Monad

import qualified Data.Aeson         as J
import           Data.Aeson.Lens
import qualified Data.ByteString    as B
import qualified Data.Char          as Char
import           Data.Monoid        ((<>))
import           Data.Text          (Text)
import qualified Data.Text          as T

import           Test.Hspec

import           Data.Avro
import           Data.Avro.Deriving
import           Data.Avro.Schema

deriveAvro "test/data/logical.avsc"

spec :: Spec
spec = describe "Avro.THSpec: Logical Type Schema" $ do
  let msgs =
        [ Logical 12345
        , Logical 67890
        ]

  it "should do roundtrip" $
    forM_ msgs $ \msg ->
      fromAvro (toAvro msg) `shouldBe` pure msg

  it "should do full round trip" $
    forM_ msgs $ \msg -> do
      let encoded = encode msg
      let decoded = decode encoded

      decoded `shouldBe` pure msg