git.delta.rocks / unique-network / refs/commits / 930910430200

difftreelog

chore add `collectionCreationFee` method to CollectionHelpers

Grigoriy Simonov2022-09-27parent: #413ee13.patch.diff
in: master

6 files changed

modifiedpallets/unique/src/eth/stubs/CollectionHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/unique/src/eth/stubs/CollectionHelpers.soldiffbeforeafterboth
--- a/pallets/unique/src/eth/stubs/CollectionHelpers.sol
+++ b/pallets/unique/src/eth/stubs/CollectionHelpers.sol
@@ -23,7 +23,7 @@
 }
 
 /// @title Contract, which allows users to operate with collections
-/// @dev the ERC-165 identifier for this interface is 0x88ee8ef1
+/// @dev the ERC-165 identifier for this interface is 0x5ad4f440
 contract CollectionHelpers is Dummy, ERC165, CollectionHelpersEvents {
 	/// Create an NFT collection
 	/// @param name Name of the collection
@@ -105,4 +105,12 @@
 		dummy;
 		return false;
 	}
+
+	/// @dev EVM selector for this function is: 0xd23a7ab1,
+	///  or in textual repr: collectionCreationFee()
+	function collectionCreationFee() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
 }
modifiedtests/src/eth/api/CollectionHelpers.soldiffbeforeafterboth
--- a/tests/src/eth/api/CollectionHelpers.sol
+++ b/tests/src/eth/api/CollectionHelpers.sol
@@ -18,7 +18,7 @@
 }
 
 /// @title Contract, which allows users to operate with collections
-/// @dev the ERC-165 identifier for this interface is 0x88ee8ef1
+/// @dev the ERC-165 identifier for this interface is 0x5ad4f440
 interface CollectionHelpers is Dummy, ERC165, CollectionHelpersEvents {
 	/// Create an NFT collection
 	/// @param name Name of the collection
@@ -65,4 +65,8 @@
 	/// @dev EVM selector for this function is: 0xc3de1494,
 	///  or in textual repr: isCollectionExist(address)
 	function isCollectionExist(address collectionAddress) external view returns (bool);
+
+	/// @dev EVM selector for this function is: 0xd23a7ab1,
+	///  or in textual repr: collectionCreationFee()
+	function collectionCreationFee() external view returns (uint256);
 }
modifiedtests/src/eth/collectionHelpersAbi.jsondiffbeforeafterboth
before · tests/src/eth/collectionHelpersAbi.json
1[2  {3    "anonymous": false,4    "inputs": [5      {6        "indexed": true,7        "internalType": "address",8        "name": "owner",9        "type": "address"10      },11      {12        "indexed": true,13        "internalType": "address",14        "name": "collectionId",15        "type": "address"16      }17    ],18    "name": "CollectionCreated",19    "type": "event"20  },21  {22    "inputs": [23      { "internalType": "string", "name": "name", "type": "string" },24      { "internalType": "string", "name": "description", "type": "string" },25      { "internalType": "string", "name": "tokenPrefix", "type": "string" },26      { "internalType": "string", "name": "baseUri", "type": "string" }27    ],28    "name": "createERC721MetadataCompatibleCollection",29    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],30    "stateMutability": "payable",31    "type": "function"32  },33  {34    "inputs": [35      { "internalType": "string", "name": "name", "type": "string" },36      { "internalType": "string", "name": "description", "type": "string" },37      { "internalType": "string", "name": "tokenPrefix", "type": "string" },38      { "internalType": "string", "name": "baseUri", "type": "string" }39    ],40    "name": "createERC721MetadataCompatibleRFTCollection",41    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],42    "stateMutability": "payable",43    "type": "function"44  },45  {46    "inputs": [47      { "internalType": "string", "name": "name", "type": "string" },48      { "internalType": "string", "name": "description", "type": "string" },49      { "internalType": "string", "name": "tokenPrefix", "type": "string" }50    ],51    "name": "createNonfungibleCollection",52    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],53    "stateMutability": "payable",54    "type": "function"55  },56  {57    "inputs": [58      { "internalType": "string", "name": "name", "type": "string" },59      { "internalType": "string", "name": "description", "type": "string" },60      { "internalType": "string", "name": "tokenPrefix", "type": "string" }61    ],62    "name": "createRFTCollection",63    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],64    "stateMutability": "payable",65    "type": "function"66  },67  {68    "inputs": [69      {70        "internalType": "address",71        "name": "collectionAddress",72        "type": "address"73      }74    ],75    "name": "isCollectionExist",76    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],77    "stateMutability": "view",78    "type": "function"79  },80  {81    "inputs": [82      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }83    ],84    "name": "supportsInterface",85    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],86    "stateMutability": "view",87    "type": "function"88  }89]
modifiedtests/src/eth/payable.test.tsdiffbeforeafterboth
--- a/tests/src/eth/payable.test.ts
+++ b/tests/src/eth/payable.test.ts
@@ -171,6 +171,11 @@
     expect(finalContractBalance == initialContractBalance).to.be.true;
   });
 
+  itEth('Get collection creation fee', async({helper}) => {
+    const deployer = await helper.eth.createAccountWithBalance(donor);
+    expect(await helper.eth.getCollectionCreationFee(deployer)).to.be.equal(String(2n * helper.balance.getOneTokenNominal()));
+  });
+
   async function deployProxyContract(helper: EthUniqueHelper, deployer: string) {
     return await helper.ethContract.deployByCode(
       deployer,
modifiedtests/src/eth/util/playgrounds/unique.dev.tsdiffbeforeafterboth
--- a/tests/src/eth/util/playgrounds/unique.dev.ts
+++ b/tests/src/eth/util/playgrounds/unique.dev.ts
@@ -152,6 +152,11 @@
   async transferBalanceFromSubstrate(donor: IKeyringPair, recepient: string, amount=1000n, inTokens=true) {
     return await this.helper.balance.transferToSubstrate(donor, evmToAddress(recepient), amount * (inTokens ? this.helper.balance.getOneTokenNominal() : 1n));
   }
+  
+  async getCollectionCreationFee(signer: string) {
+    const collectionHelper = this.helper.ethNativeContract.collectionHelpers(signer);
+    return await collectionHelper.methods.collectionCreationFee().call();
+  }
 
   async sendEVM(signer: IKeyringPair, contractAddress: string, abi: string, value: string, gasLimit?: number) {
     if(!gasLimit) gasLimit = this.DEFAULT_GAS;