wireform-derive-0.2.0.0: test/Test/Derive/Fixtures.hs
{-# LANGUAGE OverloadedStrings #-}
module Test.Derive.Fixtures (tests) where
import Test.Derive.Fixtures.Reified qualified as R
import Test.Syd
tests :: Spec
tests =
describe "ANN round-trip" $
sequence_
[ describe "wire keys (literal renames)" $
sequence_
[ it
"personName JSON -> \"name\""
(R.personNameKeyJSON `shouldBe` "name")
, it
"personName CBOR -> \"name\""
(R.personNameKeyCBOR `shouldBe` "name")
]
, describe "wire keys (renameStyle)" $
sequence_
[ it
"personAge JSON -> \"person_age\" (literal from SnakeCase)"
(R.personAgeKeyJSON `shouldBe` "person_age")
, it
"personAge Proto -> \"person_age\" (same; backend rename only on JSON-style)"
(R.personAgeKeyProto `shouldBe` "person_age")
]
, describe "wire keys (renameWith — runtime call)" $
sequence_
[ it
"personSSN JSON -> \"_personssn\" (lowercase + underscore prefix)"
(R.personSSNKeyJSON `shouldBe` "_personssn")
, it
"personSSN CBOR -> \"_personssn\""
(R.personSSNKeyCBOR `shouldBe` "_personssn")
]
, describe "per-backend overrides" $
sequence_
[ it
"personSSN skipped in JSON (via disableFor)"
(R.personSSNSkipJSON `shouldBe` True)
, it
"personSSN NOT skipped in CBOR"
(R.personSSNSkipCBOR `shouldBe` False)
, it
"personAge tag visible only under proto"
(R.personAgeTagProto `shouldBe` Just 7)
, it
"personAge has no tag under JSON"
(R.personAgeTagJSON `shouldBe` Nothing)
]
]