blockfrost-api-0.1.0.0: test/Cardano/Metadata.hs
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
module Cardano.Metadata
where
import Data.Aeson (decode, eitherDecode, encode, object, (.=))
import Data.Text (Text)
import qualified Money
import Test.Hspec
import Test.Tasty.Hspec
import Text.RawString.QQ
import Blockfrost.Types
spec_metadata :: Spec
spec_metadata = do
it "parses tx meta sample" $ do
eitherDecode txMetaSample
`shouldBe`
Right txMetaExpected
it "parses tx meta JSON sample" $ do
eitherDecode txMetaJSONSample
`shouldBe`
Right txMetaJSONExpected
it "parses tx meta CBOR sample" $ do
eitherDecode txMetaCBORSample
`shouldBe`
Right txMetaCBORExpected
txMetaSample = [r|
[
{
"label": "1990",
"cip10": null,
"count": "1"
},
{
"label": "1967",
"cip10": "nut.link metadata oracles registry",
"count": "3"
},
{
"label": "1968",
"cip10": "nut.link metadata oracles data points",
"count": "16321"
}
]
|]
txMetaExpected =
[ TxMeta "1990" Nothing 1
, TxMeta "1967" (Just "nut.link metadata oracles registry") 3
, TxMeta "1968" (Just "nut.link metadata oracles data points") 16321
]
txMetaJSONSample = [r|
[
{
"tx_hash": "257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8",
"json_metadata": {
"ADAUSD": [
{
"value": "0.10409800535729975",
"source": "ergoOracles"
}
]
}
},
{
"tx_hash": "e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c",
"json_metadata": {
"ADAUSD": [
{
"value": "0.15409850555139935",
"source": "ergoOracles"
}
]
}
},
{
"tx_hash": "4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be",
"json_metadata": null
}
]
|]
txMetaJSONExpected =
let oracleMeta val =
object [
"ADAUSD" .=
[ object [
"value" .= (val :: Text)
, "source" .= ("ergoOracles" :: Text)
]
]
]
in
[ TxMetaJSON
"257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8"
(Just $ oracleMeta "0.10409800535729975")
, TxMetaJSON
"e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c"
(Just $ oracleMeta "0.15409850555139935")
, TxMetaJSON
"4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be"
Nothing
]
txMetaCBORSample = [r|
[
{
"tx_hash": "257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8",
"cbor_metadata": null
},
{
"tx_hash": "e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c",
"cbor_metadata": null
},
{
"tx_hash": "4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be",
"cbor_metadata": "\\xa100a16b436f6d62696e6174696f6e8601010101010c"
}
]
|]
txMetaCBORExpected =
[ TxMetaCBOR
"257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8"
Nothing
, TxMetaCBOR
"e865f2cc01ca7381cf98dcdc4de07a5e8674b8ea16e6a18e3ed60c186fde2b9c"
Nothing
, TxMetaCBOR
"4237501da3cfdd53ade91e8911e764bd0699d88fd43b12f44a1f459b89bc91be"
(Just "\\xa100a16b436f6d62696e6174696f6e8601010101010c")
]