blockfrost-api-0.2.0.0: test/Cardano/Scripts.hs
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
module Cardano.Scripts
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_scripts :: Spec
spec_scripts = do
it "parses script list sample" $ do
eitherDecode scriptListSample
`shouldBe`
Right scriptListExpected
it "parses script info sample" $ do
eitherDecode scriptSample
`shouldBe`
Right scriptSampleExpected
it "parses script redeemer sample" $ do
eitherDecode scriptRedeemerSample
`shouldBe`
Right scriptRedeemerExpected
it "parses script datum sample" $ do
eitherDecode scriptDatumSample
`shouldBe`
Right scriptDatumExpected
it "parses script JSON sample" $ do
eitherDecode scriptJSONSample
`shouldBe`
Right scriptJSONExpected
it "parses script CBOR sample" $ do
eitherDecode scriptCBORSample
`shouldBe`
Right scriptCBORExpected
scriptListSample = [r|
[
{
"script_hash": "67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656"
},
{
"script_hash": "e1457a0c47dfb7a2f6b8fbb059bdceab163c05d34f195b87b9f2b30e"
},
{
"script_hash": "a6e63c0ff05c96943d1cc30bf53112ffff0f34b45986021ca058ec54"
}
]
|]
scriptListExpected :: [ScriptHash]
scriptListExpected =
[ "67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656"
, "e1457a0c47dfb7a2f6b8fbb059bdceab163c05d34f195b87b9f2b30e"
, "a6e63c0ff05c96943d1cc30bf53112ffff0f34b45986021ca058ec54"
]
scriptSample = [r|
{
"script_hash": "67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656",
"type": "plutus",
"serialised_size": 3119
}
|]
scriptSampleExpected =
Script
{ _scriptScriptHash = "67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656"
, _scriptType = Plutus
, _scriptSerialisedSize = Just 3119
}
scriptRedeemerSample = [r|
{
"tx_hash": "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0",
"tx_index": 0,
"purpose": "spend",
"datum_hash": "923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec",
"unit_mem": "1700",
"unit_steps": "476468",
"fee": "172033"
}
|]
scriptRedeemerExpected =
ScriptRedeemer
{ _scriptRedeemerTxHash = "1a0570af966fb355a7160e4f82d5a80b8681b7955f5d44bec0dce628516157f0"
, _scriptRedeemerTxIndex = 0
, _scriptRedeemerPurpose = Spend
, _scriptRedeemerDatumHash = "923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec"
, _scriptRedeemerUnitMem = 1700
, _scriptRedeemerUnitSteps = 476468
, _scriptRedeemerFee = 172033
}
scriptDatumSample = [r|
{
"json_value": {
"int": 42
}
}
|]
scriptDatumExpected = ScriptDatum $ object ["int" .= (42 :: Int)]
scriptJSONSample = [r|
{
"json": {
"type": "sig",
"keyHash": "8ed9e675aaf99868736c372d5eac9f5b3deae4568f0cde6a7d9e1422"
}
}
|]
scriptJSONExpected = ScriptJSON $ Just $
object ["type" .= ("sig" :: String), "keyHash" .= ("8ed9e675aaf99868736c372d5eac9f5b3deae4568f0cde6a7d9e1422" :: String)]
scriptCBORSample = [r|
{
"cbor": "4e4d01000033222220051200120011"
}
|]
scriptCBORExpected = ScriptCBOR $ Just "4e4d01000033222220051200120011"