{-# LANGUAGE NumericUnderscores #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} module IPFS where import Data.Aeson (eitherDecode) import Data.Text (Text) import Test.Hspec import Test.Tasty.Hspec import Text.RawString.QQ import Blockfrost.Types spec_ipfs :: Spec spec_ipfs = do it "parses add sample" $ do eitherDecode pinAddSample `shouldBe` Right pinAddExpected it "parses change sample" $ do eitherDecode pinChangeSample `shouldBe` Right pinChangeExpected it "parses pin sample" $ do eitherDecode pinSample `shouldBe` Right pinExpected pinAddSample = [r| { "name": "README.md", "ipfs_hash": "QmZbHqiCxKEVX7QfijzJTkZiSi3WEVTcvANgNAWzDYgZDr", "size": "125297" } |] pinAddExpected = IPFSAdd "README.md" "QmZbHqiCxKEVX7QfijzJTkZiSi3WEVTcvANgNAWzDYgZDr" 125297 pinChangeSample = [r| { "ipfs_hash": "QmPojRfAXYAXV92Dof7gtSgaVuxEk64xx9CKvprqu9VwA8", "state": "queued" } |] pinChangeExpected = IPFSPinChange "QmPojRfAXYAXV92Dof7gtSgaVuxEk64xx9CKvprqu9VwA8" Queued pinSample = [r| { "time_created": 1615551024, "time_pinned": 1615551024, "ipfs_hash": "QmdVMnULrY95mth2XkwjxDtMHvzuzmvUPTotKE1tgqKbCx", "size": "1615551024", "state": "pinned" } |] pinExpected = IPFSPin { _ipfsPinTimeCreated = 1615551024 , _ipfsPinTimePinned = 1615551024 , _ipfsPinIpfsHash = "QmdVMnULrY95mth2XkwjxDtMHvzuzmvUPTotKE1tgqKbCx" , _ipfsPinSize = 1615551024 , _ipfsPinState = Pinned }