packages feed

cleveland-0.2.1: test/TestSuite/Cleveland/Import.hs

-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

-- | Tests on importing functionality.
module TestSuite.Cleveland.Import
  ( test_Import
  , test_Embed
  , test_ImportInt
  , test_EmbedInt
  , test_ImportAddress
  , test_EmbedAddress
  , test_ImportMutez
  , test_EmbedMutez
  ) where

import Test.Tasty (TestTree)

import Lorentz.Value (Address)
import Morley.Tezos.Address (ta)
import Test.Cleveland
import Test.Cleveland.Lorentz (embedContract, embedValue, importValue)

test_Import :: [TestTree]
test_Import =
  [ testScenario "Can embed a contract" $ scenario do
      contract <- originate "basic1" []
        $$(embedContract @() @[Integer] @() "../../contracts/basic1.tz")

      transfer contract
  ]

test_Embed :: [TestTree]
test_Embed =
  [ testScenario "Can embed a contract" $ scenario do
      contractCode <- importContract @() @[Integer] @() "../../contracts/basic1.tz"
      contract <- originate "basic1" [] contractCode

      transfer contract
  ]

test_ImportInt :: [TestTree]
test_ImportInt =
  [ testScenarioOnEmulator "Can import an int value" $ scenario do
      value <- runIO $ importValue @Integer "./test/fixtures/intValue.txt"

      value @== 42
  ]

test_EmbedInt :: [TestTree]
test_EmbedInt =
  [ testScenarioOnEmulator "Can embed an int value" $ scenario do
      let value = $$(embedValue @Integer "./test/fixtures/intValue.txt")

      value @== 42
  ]

test_ImportAddress :: [TestTree]
test_ImportAddress =
  [ testScenarioOnEmulator "Can import an address value" $ scenario do
      value <- runIO $ importValue @Address "./test/fixtures/addrValue.txt"

      value @== toAddress [ta|tz1Se5MhFNJdPrur2iNwC3nCLvYzr1y9TsZp|]
  ]

test_EmbedAddress :: [TestTree]
test_EmbedAddress =
  [ testScenarioOnEmulator "Can embed an address value" $ scenario do
      let value = $$(embedValue @Address "./test/fixtures/addrValue.txt")

      value @== toAddress [ta|tz1Se5MhFNJdPrur2iNwC3nCLvYzr1y9TsZp|]
  ]

test_ImportMutez :: [TestTree]
test_ImportMutez =
  [ testScenarioOnEmulator "Can import a mutez value" $ scenario do
      value <- runIO $ importValue @Mutez "./test/fixtures/intValue.txt"

      value @== 42
  ]

test_EmbedMutez :: [TestTree]
test_EmbedMutez =
  [ testScenarioOnEmulator "Can embed a mutez value" $ scenario do
      let value = $$(embedValue @Mutez "./test/fixtures/intValue.txt")

      value @== 42
  ]