From 9cbf6d0b6cd58397ab530f41998bdc5b04a7745e Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Wed, 13 Apr 2022 13:18:38 +0200 Subject: [PATCH] [contracts] ContractInteractions wraps purchasing, sales and proving --- dagger/contracts.nim | 2 ++ dagger/contracts/interactions.nim | 35 ++++++++++++++++++++++++++++ tests/contracts/testInteractions.nim | 23 ++++++++++++++++++ tests/testContracts.nim | 1 + 4 files changed, 61 insertions(+) create mode 100644 dagger/contracts/interactions.nim create mode 100644 tests/contracts/testInteractions.nim diff --git a/dagger/contracts.nim b/dagger/contracts.nim index fbab0760..18051f4a 100644 --- a/dagger/contracts.nim +++ b/dagger/contracts.nim @@ -4,6 +4,7 @@ import contracts/storage import contracts/deployment import contracts/market import contracts/proofs +import contracts/interactions export requests export offers @@ -11,3 +12,4 @@ export storage export deployment export market export proofs +export interactions diff --git a/dagger/contracts/interactions.nim b/dagger/contracts/interactions.nim new file mode 100644 index 00000000..6f5d7f84 --- /dev/null +++ b/dagger/contracts/interactions.nim @@ -0,0 +1,35 @@ +import pkg/ethers +import ../purchasing +import ../sales +import ../proving +import ./deployment +import ./storage +import ./market +import ./proofs + +export purchasing +export sales +export proving + +type + ContractInteractions* = ref object + purchasing*: Purchasing + sales*: Sales + proving*: Proving + +proc new*(_: type ContractInteractions, + signer: Signer, + deployment: Deployment): ContractInteractions = + let contract = Storage.new(!deployment.address(Storage), signer) + let market = OnChainMarket.new(contract) + let proofs = OnChainProofs.new(contract) + ContractInteractions( + purchasing: Purchasing.new(market), + sales: Sales.new(market), + proving: Proving.new(proofs) + ) + +proc new*(_: type ContractInteractions): ContractInteractions = + let provider = JsonRpcProvider.new("ws://localhost:8545") + let signer = provider.getSigner() + ContractInteractions.new(signer, deployment()) diff --git a/tests/contracts/testInteractions.nim b/tests/contracts/testInteractions.nim new file mode 100644 index 00000000..37895db6 --- /dev/null +++ b/tests/contracts/testInteractions.nim @@ -0,0 +1,23 @@ +import ./ethertest +import dagger/contracts + +ethersuite "Storage Contract Interactions": + + var contracts: ContractInteractions + + setup: + contracts = ContractInteractions.new() + + test "can be instantiated with a signer and deployment info": + let signer = provider.getSigner() + let deployment = deployment() + check ContractInteractions.new(signer, deployment) != nil + + test "provides purchasing": + check contracts.purchasing != nil + + test "provides sales": + check contracts.sales != nil + + test "provides proving": + check contracts.proving != nil diff --git a/tests/testContracts.nim b/tests/testContracts.nim index 1ef8ca5d..6d99657b 100644 --- a/tests/testContracts.nim +++ b/tests/testContracts.nim @@ -2,5 +2,6 @@ import ./contracts/testCollateral import ./contracts/testContracts import ./contracts/testMarket import ./contracts/testProofs +import ./contracts/testInteractions {.warning[UnusedImport]:off.}