avro-0.3.0.1: test/Avro/DeconflictSpec.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Avro.DeconflictSpec
where
import Data.Avro as A
import qualified Data.Avro.Decode as A (decodeAvro)
import Data.Avro.Deconflict
import Data.Avro.Deriving
import Data.Avro.Schema
import qualified Data.Avro.Types as Ty
import Data.Either
import Data.List.NonEmpty (NonEmpty (..))
import qualified Avro.Deconflict.Reader as R
import qualified Avro.Deconflict.Writer as W
import Test.Hspec
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
writerMessage :: W.Outer
writerMessage = W.Outer "Peone" (W.Inner 3)
spec :: Spec
spec = describe "Avro.DeconflictSpec" $ do
it "should deconflict simple message" $ do
let payload = A.encode $ W.Inner 3
let Right decodedAvro = A.decodeAvro W.schema'Inner payload
let Right deconflicted = deconflict W.schema'Inner R.schema'Inner decodedAvro
fromAvro deconflicted `shouldBe` Success (R.Inner 3 Nothing)
it "should deconflict nested message" $ do
let payload = A.encode writerMessage
let Right decodedAvro = A.decodeAvro W.schema'Outer payload
let Right deconflicted = deconflict W.schema'Outer R.schema'Outer decodedAvro
fromAvro deconflicted `shouldBe` Success (R.Outer "Peone" (R.Inner 3 Nothing))