From 9b40f91f07cdcf56c090e41db54dfac6d49cc029 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Mon, 11 Apr 2022 12:31:23 +0200 Subject: [PATCH 1/7] remove unused variables --- test/unit/pools/dispenser/Dispenser.test.ts | 45 +++++++++------------ 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/test/unit/pools/dispenser/Dispenser.test.ts b/test/unit/pools/dispenser/Dispenser.test.ts index 637d3b35..b3761e07 100644 --- a/test/unit/pools/dispenser/Dispenser.test.ts +++ b/test/unit/pools/dispenser/Dispenser.test.ts @@ -15,25 +15,19 @@ import { Erc20CreateParams } from '../../../../src/@types' describe('Dispenser flow', () => { let factoryOwner: string - let nftOwner: string let user1: string let user2: string - let user3: string let contracts: Addresses - let DispenserAddress: string let DispenserClass: Dispenser let nftFactory: NftFactory let datatoken: Datatoken - let nftAddress: string let dtAddress: string before(async () => { const accounts = await web3.eth.getAccounts() factoryOwner = accounts[0] - nftOwner = accounts[1] - user1 = accounts[2] - user2 = accounts[3] - user3 = accounts[4] + user1 = accounts[3] + user2 = accounts[4] }) it('should deploy contracts', async () => { @@ -64,8 +58,8 @@ describe('Dispenser flow', () => { const ercParams: Erc20CreateParams = { templateIndex: 1, minter: factoryOwner, - paymentCollector: user3, - mpFeeAddress: user2, + paymentCollector: user2, + mpFeeAddress: user1, feeToken: '0x0000000000000000000000000000000000000000', cap: '10000', feeAmount: '0', @@ -82,14 +76,13 @@ describe('Dispenser flow', () => { expect(txReceipt.events.NFTCreated.event === 'NFTCreated') expect(txReceipt.events.TokenCreated.event === 'TokenCreated') - nftAddress = txReceipt.events.NFTCreated.returnValues.newTokenAddress dtAddress = txReceipt.events.TokenCreated.returnValues.newTokenAddress }) - it('Make user2 minter', async () => { + it('Make user1 minter', async () => { datatoken = new Datatoken(web3, ERC20Template.abi as AbiItem[]) - await datatoken.addMinter(dtAddress, factoryOwner, user2) - assert((await datatoken.getDTPermissions(dtAddress, user2)).minter === true) + await datatoken.addMinter(dtAddress, factoryOwner, user1) + assert((await datatoken.getDTPermissions(dtAddress, user1)).minter === true) }) it('Create dispenser', async () => { @@ -112,38 +105,38 @@ describe('Dispenser flow', () => { assert(tx, 'Cannot activate dispenser') }) - it('user2 gets the dispenser status', async () => { + it('user1 gets the dispenser status', async () => { const status = await DispenserClass.status(dtAddress) assert(status.active === true, 'Dispenser not active') assert(status.owner === factoryOwner, 'Dispenser owner is not alice') assert(status.isMinter === true, 'Dispenser is not a minter') }) - it('user2 deactivates the dispenser', async () => { + it('user1 deactivates the dispenser', async () => { const tx = await DispenserClass.deactivate(dtAddress, factoryOwner) assert(tx, 'Cannot deactivate dispenser') const status = await DispenserClass.status(dtAddress) assert(status.active === false, 'Dispenser is still active') }) - it('user2 sets user3 as an AllowedSwapper for the dispenser', async () => { - const tx = await DispenserClass.setAllowedSwapper(dtAddress, factoryOwner, user3) + it('user1 sets user2 as an AllowedSwapper for the dispenser', async () => { + const tx = await DispenserClass.setAllowedSwapper(dtAddress, factoryOwner, user2) assert(tx, 'Cannot set Allowed Swapper') const status = await DispenserClass.status(dtAddress) - assert(status.allowedSwapper === user3, 'user3 is Allowed Swapper') + assert(status.allowedSwapper === user2, 'user2 is Allowed Swapper') }) - it('User3 requests datatokens', async () => { - const activate = await DispenserClass.activate(dtAddress, '10', '10', factoryOwner) - const check = await DispenserClass.isDispensable(dtAddress, datatoken, user3, '1') + it('user2 requests datatokens', async () => { + await DispenserClass.activate(dtAddress, '10', '10', factoryOwner) + const check = await DispenserClass.isDispensable(dtAddress, datatoken, user2, '1') assert(check === true, 'isDispensable should return true') - const tx = await DispenserClass.dispense(dtAddress, user3, '1', user3) - assert(tx, 'user3 failed to get 1DT') + const tx = await DispenserClass.dispense(dtAddress, user2, '1', user2) + assert(tx, 'user2 failed to get 1DT') }) - it('user2 withdraws all datatokens', async () => { + it('user1 withdraws all datatokens', async () => { const tx = await DispenserClass.ownerWithdraw(dtAddress, factoryOwner) - assert(tx, 'user2 failed to withdraw all her tokens') + assert(tx, 'user1 failed to withdraw all her tokens') const status = await DispenserClass.status(dtAddress) assert(status.balance === '0', 'Balance > 0') }) From 065d3998f836a221a31eb4990d53c93cc9f00ba3 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Mon, 11 Apr 2022 12:32:33 +0200 Subject: [PATCH 2/7] remove abi imports --- test/unit/pools/dispenser/Dispenser.test.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/test/unit/pools/dispenser/Dispenser.test.ts b/test/unit/pools/dispenser/Dispenser.test.ts index b3761e07..cf6a3012 100644 --- a/test/unit/pools/dispenser/Dispenser.test.ts +++ b/test/unit/pools/dispenser/Dispenser.test.ts @@ -1,7 +1,4 @@ -import { AbiItem } from 'web3-utils' import { assert, expect } from 'chai' -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json' -import DispenserTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' import { deployContracts, Addresses } from '../../../TestContractHandler' import { web3 } from '../../../config' import { @@ -35,11 +32,7 @@ describe('Dispenser flow', () => { }) it('should initialize Dispenser class', async () => { - DispenserClass = new Dispenser( - web3, - contracts.dispenserAddress, - DispenserTemplate.abi as AbiItem[] - ) + DispenserClass = new Dispenser(web3, contracts.dispenserAddress) assert(DispenserClass !== null) }) @@ -80,7 +73,7 @@ describe('Dispenser flow', () => { }) it('Make user1 minter', async () => { - datatoken = new Datatoken(web3, ERC20Template.abi as AbiItem[]) + datatoken = new Datatoken(web3) await datatoken.addMinter(dtAddress, factoryOwner, user1) assert((await datatoken.getDTPermissions(dtAddress, user1)).minter === true) }) From 99c550afa624c1f10e1b76c5719f2388d2da7357 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Mon, 11 Apr 2022 12:57:04 +0200 Subject: [PATCH 3/7] refactor constants --- test/unit/pools/dispenser/Dispenser.test.ts | 62 +++++++++++++-------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/test/unit/pools/dispenser/Dispenser.test.ts b/test/unit/pools/dispenser/Dispenser.test.ts index cf6a3012..75c86f8f 100644 --- a/test/unit/pools/dispenser/Dispenser.test.ts +++ b/test/unit/pools/dispenser/Dispenser.test.ts @@ -6,7 +6,8 @@ import { NftCreateData, Datatoken, DispenserParams, - Dispenser + Dispenser, + ZERO_ADDRESS } from '../../../../src/' import { Erc20CreateParams } from '../../../../src/@types' @@ -20,11 +21,45 @@ describe('Dispenser flow', () => { let datatoken: Datatoken let dtAddress: string + const CAP_AMOUNT = '1000000' + const NFT_NAME = '72120Bundle' + const NFT_SYMBOL = '72Bundle' + const NFT_TOKEN_URI = 'https://oceanprotocol.com/nft/' + const ERC20_NAME = 'ERC20B1' + const ERC20_SYMBOL = 'ERC20DT1Symbol' + const FEE_ZERO = '0' + + const NFT_DATA: NftCreateData = { + name: NFT_NAME, + symbol: NFT_SYMBOL, + templateIndex: 1, + tokenURI: NFT_TOKEN_URI, + transferable: true, + owner: factoryOwner + } + + const ERC_PARAMS: Erc20CreateParams = { + templateIndex: 1, + minter: factoryOwner, + paymentCollector: user2, + mpFeeAddress: user1, + feeToken: ZERO_ADDRESS, + cap: CAP_AMOUNT, + feeAmount: FEE_ZERO, + name: ERC20_NAME, + symbol: ERC20_SYMBOL + } + before(async () => { const accounts = await web3.eth.getAccounts() factoryOwner = accounts[0] user1 = accounts[3] user2 = accounts[4] + + NFT_DATA.owner = factoryOwner + ERC_PARAMS.minter = factoryOwner + ERC_PARAMS.paymentCollector = user2 + ERC_PARAMS.mpFeeAddress = user1 }) it('should deploy contracts', async () => { @@ -39,31 +74,10 @@ describe('Dispenser flow', () => { it('#createNftwithErc - should create an NFT and a Datatoken ', async () => { nftFactory = new NftFactory(contracts.erc721FactoryAddress, web3) - const nftData: NftCreateData = { - name: '72120Bundle', - symbol: '72Bundle', - templateIndex: 1, - tokenURI: 'https://oceanprotocol.com/nft/', - transferable: true, - owner: factoryOwner - } - - const ercParams: Erc20CreateParams = { - templateIndex: 1, - minter: factoryOwner, - paymentCollector: user2, - mpFeeAddress: user1, - feeToken: '0x0000000000000000000000000000000000000000', - cap: '10000', - feeAmount: '0', - name: 'ERC20B1', - symbol: 'ERC20DT1Symbol' - } - const txReceipt = await nftFactory.createNftWithErc20( factoryOwner, - nftData, - ercParams + NFT_DATA, + ERC_PARAMS ) expect(txReceipt.events.NFTCreated.event === 'NFTCreated') From 8172abec234a2a097babe96dbbceffc7f830117c Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Tue, 12 Apr 2022 11:33:14 +0200 Subject: [PATCH 4/7] update router import --- test/unit/pools/Router.test.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/unit/pools/Router.test.ts b/test/unit/pools/Router.test.ts index b4f1db47..8a297a05 100644 --- a/test/unit/pools/Router.test.ts +++ b/test/unit/pools/Router.test.ts @@ -3,8 +3,14 @@ import { AbiItem } from 'web3-utils/types' import { deployContracts, Addresses } from '../../TestContractHandler' import MockERC20 from '@oceanprotocol/contracts/artifacts/contracts/utils/mock/MockERC20Decimals.sol/MockERC20Decimals.json' import { web3 } from '../../config' -import { NftFactory, NftCreateData, balance, approve, ZERO_ADDRESS } from '../../../src' -import { Router } from '../../../src/pools/Router' +import { + NftFactory, + NftCreateData, + Router, + balance, + approve, + ZERO_ADDRESS +} from '../../../src' import { Erc20CreateParams, PoolCreationParams, Operation } from '../../../src/@types' const { keccak256 } = require('@ethersproject/keccak256') From 4b508241622261a006cfa9b001fe646b97cc013c Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Tue, 12 Apr 2022 11:33:27 +0200 Subject: [PATCH 5/7] update SideStaking import --- test/unit/pools/ssContracts/SideStaking.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/pools/ssContracts/SideStaking.test.ts b/test/unit/pools/ssContracts/SideStaking.test.ts index da626a4d..fd528513 100644 --- a/test/unit/pools/ssContracts/SideStaking.test.ts +++ b/test/unit/pools/ssContracts/SideStaking.test.ts @@ -14,9 +14,9 @@ import { NftFactory, NftCreateData, Pool, + SideStaking, unitsToAmount } from '../../../../src' -import { SideStaking } from '../../../../src/pools/ssContracts/SideStaking' import { Erc20CreateParams, PoolCreationParams, From edf2c81eae5cbe4591cc92b8d5498c3b8d7f102e Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Thu, 28 Apr 2022 18:01:25 +0200 Subject: [PATCH 6/7] simplify constants --- test/unit/pools/dispenser/Dispenser.test.ts | 38 ++++++++------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/test/unit/pools/dispenser/Dispenser.test.ts b/test/unit/pools/dispenser/Dispenser.test.ts index 75c86f8f..e3f208e7 100644 --- a/test/unit/pools/dispenser/Dispenser.test.ts +++ b/test/unit/pools/dispenser/Dispenser.test.ts @@ -21,33 +21,25 @@ describe('Dispenser flow', () => { let datatoken: Datatoken let dtAddress: string - const CAP_AMOUNT = '1000000' - const NFT_NAME = '72120Bundle' - const NFT_SYMBOL = '72Bundle' - const NFT_TOKEN_URI = 'https://oceanprotocol.com/nft/' - const ERC20_NAME = 'ERC20B1' - const ERC20_SYMBOL = 'ERC20DT1Symbol' - const FEE_ZERO = '0' - - const NFT_DATA: NftCreateData = { - name: NFT_NAME, - symbol: NFT_SYMBOL, + const nftData: NftCreateData = { + name: '72120Bundle', + symbol: '72Bundle', templateIndex: 1, - tokenURI: NFT_TOKEN_URI, + tokenURI: 'https://oceanprotocol.com/nft/', transferable: true, owner: factoryOwner } - const ERC_PARAMS: Erc20CreateParams = { + const ercParams: Erc20CreateParams = { templateIndex: 1, minter: factoryOwner, paymentCollector: user2, mpFeeAddress: user1, feeToken: ZERO_ADDRESS, - cap: CAP_AMOUNT, - feeAmount: FEE_ZERO, - name: ERC20_NAME, - symbol: ERC20_SYMBOL + cap: '1000000', + feeAmount: '0', + name: 'ERC20B1', + symbol: 'ERC20DT1Symbol' } before(async () => { @@ -56,10 +48,10 @@ describe('Dispenser flow', () => { user1 = accounts[3] user2 = accounts[4] - NFT_DATA.owner = factoryOwner - ERC_PARAMS.minter = factoryOwner - ERC_PARAMS.paymentCollector = user2 - ERC_PARAMS.mpFeeAddress = user1 + nftData.owner = factoryOwner + ercParams.minter = factoryOwner + ercParams.paymentCollector = user2 + ercParams.mpFeeAddress = user1 }) it('should deploy contracts', async () => { @@ -76,8 +68,8 @@ describe('Dispenser flow', () => { const txReceipt = await nftFactory.createNftWithErc20( factoryOwner, - NFT_DATA, - ERC_PARAMS + nftData, + ercParams ) expect(txReceipt.events.NFTCreated.event === 'NFTCreated') From 21d6d43ab3070a06832075f7db90b7fd63b0f1a5 Mon Sep 17 00:00:00 2001 From: "Miquel A. Cabot" Date: Mon, 23 May 2022 15:55:38 +0200 Subject: [PATCH 7/7] initialize accounts with null --- test/unit/pools/dispenser/Dispenser.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/unit/pools/dispenser/Dispenser.test.ts b/test/unit/pools/dispenser/Dispenser.test.ts index d7ce8736..9c8323a1 100644 --- a/test/unit/pools/dispenser/Dispenser.test.ts +++ b/test/unit/pools/dispenser/Dispenser.test.ts @@ -27,14 +27,14 @@ describe('Dispenser flow', () => { templateIndex: 1, tokenURI: 'https://oceanprotocol.com/nft/', transferable: true, - owner: factoryOwner + owner: null } const ercParams: Erc20CreateParams = { templateIndex: 1, - minter: factoryOwner, - paymentCollector: user2, - mpFeeAddress: user1, + minter: null, + paymentCollector: null, + mpFeeAddress: null, feeToken: ZERO_ADDRESS, cap: '1000000', feeAmount: '0',