Skip to content

Commit

Permalink
deploying lobster in trace
Browse files Browse the repository at this point in the history
  • Loading branch information
brunjlar committed Sep 22, 2021
1 parent 2ddce3a commit 796723d
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 12 deletions.
1 change: 1 addition & 0 deletions plutus/src/Cardano/PlutusLobster/LobsterPolicies.hs
Expand Up @@ -19,6 +19,7 @@ module Cardano.PlutusLobster.LobsterPolicies
, nftTokenName
, counterTokenName
, votesTokenName
, otherPolicy
) where

import Cardano.Api.Shelley (PlutusScript (..), PlutusScriptV1)
Expand Down
1 change: 1 addition & 0 deletions plutus/src/Cardano/PlutusLobster/LobsterV2Script.hs
Expand Up @@ -18,6 +18,7 @@ module Cardano.PlutusLobster.LobsterV2Script
( apiLobsterScript
, apiRequestScript
, LobsterParams (..)
, typedLobsterValidator
) where

import Cardano.Api.Shelley (PlutusScript (..), PlutusScriptV1)
Expand Down
1 change: 1 addition & 0 deletions test/plutus-lobster-test.cabal
Expand Up @@ -11,6 +11,7 @@ License-files: LICENSE
library
hs-source-dirs: src
exposed-modules: Cardano.PlutusLobster.LobsterV2Script
, Cardano.PlutusLobster.Test.LobsterPolicies
, Cardano.PlutusLobster.Test.LobsterV2
build-depends: aeson
, base ^>=4.14.1.0
Expand Down
1 change: 1 addition & 0 deletions test/src/Cardano/PlutusLobster/LobsterPolicies.hs
76 changes: 64 additions & 12 deletions test/src/Cardano/PlutusLobster/Test/LobsterV2.hs
Expand Up @@ -14,21 +14,73 @@

module Cardano.PlutusLobster.Test.LobsterV2 where

import Control.Monad hiding (fmap)
import Control.Monad.Freer.Extras as Extras
import Data.Default (Default (..))
import qualified Data.Map as Map
import Data.Monoid (Last (..))
import Data.Text (Text)
import Control.Monad hiding (fmap)
import Control.Monad.Freer.Extras as Extras
import Data.Default (Default (..))
import qualified Data.Map as Map
import Data.Monoid (Last (..))
import Data.Text (Text)
import Ledger
import Ledger.Value as Value
import Ledger.Ada as Ada
import Plutus.Contract as Contract
import Plutus.Trace.Emulator as Emulator
import PlutusTx.Prelude hiding (Semigroup(..), unless)
import Prelude (IO, Semigroup(..), Show (..))
import Ledger.Ada as Ada
import Ledger.Constraints as Constraints
import Ledger.Scripts as Scripts
import Ledger.Value as Value
import Plutus.Contract as Contract
import Plutus.Contract.Trace (InitialDistribution)
import Plutus.Trace.Emulator as Emulator
import PlutusTx.Prelude hiding (Semigroup(..), unless)
import Prelude (IO, Semigroup(..), Show (..), String, undefined)
import Wallet.Emulator.Wallet

import Cardano.PlutusLobster.LobsterPolicies
import Cardano.PlutusLobster.LobsterV2Script

deployLobster :: LobsterParams -> Contract () EmptySchema Text ()
deployLobster lp = do
let nft = assetClassValue (lpNFT lp) 1
c = Constraints.mustPayToTheScript 0 nft
ledgerTx <- submitTxConstraints (typedLobsterValidator lp) c
awaitTxConfirmed $ txId ledgerTx
Contract.logInfo @String "deployed lobster"

test :: IO ()
test = runEmulatorTraceIO' def emCfg myTrace
where
emCfg :: EmulatorConfig
emCfg = EmulatorConfig
{ _initialChainState = Left initDist
, _slotConfig = def
, _feeConfig = def
}

initDist :: InitialDistribution
initDist = Map.fromList
[ (knownWallet 1, Ada.lovelaceValueOf 100_000_000 <> assetClassValue nftAC 1)
, (knownWallet 2, Ada.lovelaceValueOf 100_000_000)
, (knownWallet 3, Ada.lovelaceValueOf 100_000_000)
, (knownWallet 4, Ada.lovelaceValueOf 100_000_000)
]

myTrace :: EmulatorTrace ()
myTrace = do
let lp = LobsterParams
{ lpSeed = 42
, lpNameCount = 100
, lpVoteCount = 10
, lpFee = 1_000_000
, lpNFT = nftAC
, lpCounter = AssetClass (otherSymbol, counterTokenName)
, lpVotes = AssetClass (otherSymbol, votesTokenName)
}
_ <- activateContractWallet (knownWallet 1) $ deployLobster lp
void $ Emulator.waitNSlots 1

nftAC :: AssetClass
nftAC = AssetClass ("ff", nftTokenName)

otherSymbol :: CurrencySymbol
otherSymbol = mpsSymbol $ Scripts.mintingPolicyHash otherPolicy

{-
import Week06.Oracle.Core
import Week06.Oracle.Funds
Expand Down

0 comments on commit 796723d

Please sign in to comment.