packages feed

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

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

-- | Module testing voting power instructions and their support from
-- cleveland.
module TestSuite.Cleveland.VotingPower
  ( test_VotingPowers
  ) where

import Test.Tasty (TestTree)

import Lorentz.Value
import Morley.Tezos.Crypto
import Test.Cleveland

test_VotingPowers :: [TestTree]
test_VotingPowers =
  [ testScenario "Can pick voting power of some address" $ scenario do
      contract
        <- originate "vp contract" 0
        =<< importContract @KeyHash @Natural @() ("../../contracts/voting_power.tz")

      let keyHash = unsafe $ parseHash "tz1Yq4Hj9u2f9473wAKiFEm36Sp2GfB5aTGa"
      transfer contract $ calling def keyHash
      getStorage contract @@== 0

  , testScenarioOnEmulator "Can set voting powers in test scenario" $ scenarioEmulated do
      contract
        <- originate "vp contract" (0, 0)
        =<< importContract @KeyHash @(Natural, Natural) @() ("../../contracts/voting_powers.tz")

      comment "Setting custom voting powers to access them later"
      let keyHash = unsafe $ parseHash "tz1Yq4Hj9u2f9473wAKiFEm36Sp2GfB5aTGa"
      let keyHash2 = unsafe $ parseHash "tz1hvYBbHRJhT3dQ8bEjc34xm3rjJJmTcuqs"
      setVotingPowers (mkVotingPowers [(keyHash, 123), (keyHash2, 57)])

      transfer contract $ calling def keyHash
      getStorage contract @@== (123, 180)
  ]