From 15cc2313dd613d2e23056b5203e619a1853068a7 Mon Sep 17 00:00:00 2001 From: Franco Testagrossa Date: Mon, 15 May 2023 11:19:54 +0200 Subject: [PATCH] Add draft test for building drafted commit tx --- hydra-node/test/Hydra/Chain/Direct/TxSpec.hs | 44 ++++++++++++-------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs index c19d22b2777..35e170d7323 100644 --- a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs @@ -12,6 +12,7 @@ import Hydra.Chain.Direct.Tx import Hydra.Prelude hiding (label) import Test.Hydra.Prelude +import Cardano.Api.UTxO (toMap) import qualified Cardano.Api.UTxO as UTxO import Cardano.Ledger.Babbage.PParams (BabbagePParams) import qualified Data.Map as Map @@ -28,32 +29,21 @@ import Hydra.Chain.Direct.Fixture ( testPolicyId, testSeedInput, ) +import qualified Hydra.Chain.Direct.Fixture as Fixture import Hydra.Chain.Direct.ScriptRegistry (genScriptRegistry, registryUTxO) +import Hydra.Chain.Direct.State (ChainState) import Hydra.Chain.Direct.Wallet (ErrCoverFee (..), coverFee_) +import Hydra.Chain.Direct.WalletSpec (isBalanced) import Hydra.ContestationPeriod (ContestationPeriod (UnsafeContestationPeriod)) import qualified Hydra.Contract.Commit as Commit import Hydra.Contract.HeadTokens (mkHeadTokenScript) import qualified Hydra.Contract.Initial as Initial -import Hydra.Ledger.Cardano ( - adaOnly, - genOneUTxOFor, - genVerificationKey, - ) +import Hydra.Ledger.Cardano (adaOnly, genOneUTxOFor, genTxOut, genVerificationKey) import Hydra.Ledger.Cardano.Evaluate (EvaluationReport, maxTxExecutionUnits) import Hydra.Party (Party) +import qualified Hydra.Prelude as Prelude import Test.Cardano.Ledger.Alonzo.Serialisation.Generators () -import Test.QuickCheck ( - Property, - choose, - counterexample, - elements, - forAll, - getPositive, - label, - property, - vectorOf, - withMaxSuccess, - ) +import Test.QuickCheck (Property, choose, counterexample, elements, forAll, getPositive, label, property, vectorOf, withMaxSuccess) import Test.QuickCheck.Instances.Semigroup () spec :: Spec @@ -150,6 +140,26 @@ spec = & counterexample (renderTx tx) & counterexample (show e) + describe "draftCommitTx" $ do + prop "can build valid draft commit tx" $ \chainState initialPubKeyHash intialTxIn committedUTxO party -> do + let + initialTxOut = genTxOut `generateWith` 45 + scriptRegistry = genScriptRegistry `generateWith` 42 + tx = + commitTx + Fixture.testNetworkId + scriptRegistry + (mkHeadId Fixture.testPolicyId) + party + (Just committedUTxO) + (intialTxIn, toUTxOContext initialTxOut, initialPubKeyHash) + balancedTx = draftCommitTx chainState tx + (txIn, txOut) = bimap toLedgerTxIn toLedgerTxOut committedUTxO + isBalanced (Map.singleton txIn txOut) (toLedgerTx tx) (toLedgerTx balancedTx) + where + draftCommitTx :: ChainState -> Tx -> Tx + draftCommitTx chainState commitTx = Prelude.error "not implemented yet" + ledgerPParams :: BabbagePParams LedgerEra ledgerPParams = toLedgerPParams (shelleyBasedEra @Era) pparams