packages feed

waargonaut-0.8.0.0: test/Generics.hs

{-# LANGUAGE OverloadedStrings #-}
module Generics
  ( genericsTests
  ) where

import           Test.Tasty         (TestTree, testGroup)
import           Test.Tasty.HUnit   (Assertion, testCase, (@?=))

import           Waargonaut.Encode  (Encoder)
import qualified Waargonaut.Encode  as E

import qualified Types.Common       as C

import qualified Waargonaut.Generic as G

testGenericFieldNameFunctionUsedOnce :: Assertion
testGenericFieldNameFunctionUsedOnce = do
  let
    encFudge :: Applicative f => Encoder f C.Fudge
    encFudge = G.untag . G.gEncoder $ C.fudgeJsonOpts
      { G._optionsFieldName = tail
      }

    expected = "{\"udge\":\"Chocolate\"}"

  E.simplePureEncodeTextNoSpaces encFudge C.testFudge @?= expected

genericsTests :: TestTree
genericsTests = testGroup "Generics"
  [ testCase "Options fieldName function is used only once" testGenericFieldNameFunctionUsedOnce
  ]