-- | Amount (de)serialization
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
module AmountSpec
where
import Blockfrost.Types.Shared.Amount
import Data.Aeson (decode, encode)
import Data.Default
import qualified Money
import Test.Hspec
import Test.Tasty.Hspec
import Text.RawString.QQ
spec_sample :: Spec
spec_sample = do
it "my samples decodes to expected value" $ do
decode mySamples `shouldBe` Just mySamplesExpected
it "doc samples decodes to expected value" $ do
decode docSamples `shouldBe` Just docSamplesExpected
mySamples = [r|
[
{ "unit":"lovelace"
, "quantity":"42000000"
}
, { "unit":"b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e"
, "quantity":"12"
}
, { "unit":"6804edf9712d2b619edb6ac86861fe93a730693183a262b165fcc1ba1bc99cad"
, "quantity":"18605647"
}
]
|]
mySamplesExpected =
[ AdaAmount 42000000
, AssetAmount
$ Money.toSomeDiscrete
(12 :: Money.Discrete'
"b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e"
'(1,1))
, AssetAmount
$ Money.toSomeDiscrete
(18605647 :: Money.Discrete'
"6804edf9712d2b619edb6ac86861fe93a730693183a262b165fcc1ba1bc99cad"
'(1,1))
]
docSamples = [r|
[
{
"unit": "lovelace",
"quantity": "42000000"
},
{
"unit": "b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e",
"quantity": "12"
}
]
|]
docSamplesExpected =
[ AdaAmount 42000000
, AssetAmount
$ Money.toSomeDiscrete
(12 :: Money.Discrete'
"b0d07d45fe9514f80213f4020e5a61241458be626841cde717cb38a76e7574636f696e"
'(1,1))
]