difftreelog
Style update
in: master
6 files changed
pallets/nft/src/mock.rsdiffbeforeafterboth--- a/pallets/nft/src/mock.rs
+++ b/pallets/nft/src/mock.rs
@@ -98,12 +98,6 @@
type WeightInfo = ();
}
-<<<<<<< HEAD
-type Timestamp = pallet_timestamp::Pallet<Test>;
-type Randomness = pallet_randomness_collective_flip::Pallet<Test>;
-
-=======
->>>>>>> origin/develop
parameter_types! {
pub const CollectionCreationPrice: u32 = 0;
pub TreasuryAccountId: u64 = 1234;
pallets/nft/src/tests.rsdiffbeforeafterboth--- a/pallets/nft/src/tests.rs
+++ b/pallets/nft/src/tests.rs
@@ -2080,206 +2080,210 @@
Error::<Test>::NoPermission
);
-#[test]
-fn collection_transfer_flag_works() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
+ #[test]
+ fn collection_transfer_flag_works() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::set_transfers_enabled_flag(origin1, 1, true));
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+ assert_ok!(TemplateModule::set_transfers_enabled_flag(origin1, 1, true));
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ assert_eq!(TemplateModule::balance_count(1, 1), 1);
+ assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
- let origin1 = Origin::signed(1);
+ let origin1 = Origin::signed(1);
- // default scenario
- assert_ok!(TemplateModule::transfer(origin1, account(2), 1, 1, 1000));
- assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(2));
- assert_eq!(TemplateModule::balance_count(1, 1), 0);
- assert_eq!(TemplateModule::balance_count(1, 2), 1);
+ // default scenario
+ assert_ok!(TemplateModule::transfer(origin1, account(2), 1, 1, 1000));
+ assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(2));
+ assert_eq!(TemplateModule::balance_count(1, 1), 0);
+ assert_eq!(TemplateModule::balance_count(1, 2), 1);
- assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
- });
-}
+ assert_eq!(TemplateModule::address_tokens(1, 2), [1]);
+ });
+ }
-#[test]
-fn set_variable_meta_data_on_nft_with_admin_flag() {
- new_test_ext().execute_with(|| {
- default_limits();
+ #[test]
+ fn set_variable_meta_data_on_nft_with_admin_flag() {
+ new_test_ext().execute_with(|| {
+ default_limits();
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
+ let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::set_mint_permission(
- origin2.clone(),
- collection_id,
- true
- ));
- assert_ok!(TemplateModule::add_to_white_list(
- origin2.clone(),
- collection_id,
- account(1)
- ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin2.clone(),
+ collection_id,
+ true
+ ));
+ assert_ok!(TemplateModule::add_to_white_list(
+ origin2.clone(),
+ collection_id,
+ account(1)
+ ));
- assert_ok!(TemplateModule::add_collection_admin(
- origin2.clone(),
- collection_id,
- account(1)
- ));
+ assert_ok!(TemplateModule::add_collection_admin(
+ origin2.clone(),
+ collection_id,
+ account(1)
+ ));
- let data = default_nft_data();
- create_test_item(1, &data.into());
+ let data = default_nft_data();
+ create_test_item(1, &data.into());
- TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::Admin,
- );
+ TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::Admin,
+ );
- let variable_data = b"test set_variable_meta_data method.".to_vec();
- assert_ok!(TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ));
+ let variable_data = b"test set_variable_meta_data method.".to_vec();
+ assert_ok!(TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ 1,
+ variable_data.clone()
+ ));
- assert_eq!(
- TemplateModule::nft_item_id(collection_id, 1)
- .unwrap()
- .variable_data,
- variable_data
- );
- });
-}
+ assert_eq!(
+ TemplateModule::nft_item_id(collection_id, 1)
+ .unwrap()
+ .variable_data,
+ variable_data
+ );
+ });
+ }
-#[test]
-fn set_variable_meta_data_on_nft_with_admin_flag_neg() {
- new_test_ext().execute_with(|| {
- default_limits();
+ #[test]
+ fn set_variable_meta_data_on_nft_with_admin_flag_neg() {
+ new_test_ext().execute_with(|| {
+ default_limits();
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
+ let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
- let origin1 = Origin::signed(1);
- let origin2 = Origin::signed(2);
+ let origin1 = Origin::signed(1);
+ let origin2 = Origin::signed(2);
- assert_ok!(TemplateModule::set_mint_permission(
- origin2.clone(),
- collection_id,
- true
- ));
- assert_ok!(TemplateModule::add_to_white_list(
- origin2.clone(),
- collection_id,
- account(1)
- ));
+ assert_ok!(TemplateModule::set_mint_permission(
+ origin2.clone(),
+ collection_id,
+ true
+ ));
+ assert_ok!(TemplateModule::add_to_white_list(
+ origin2.clone(),
+ collection_id,
+ account(1)
+ ));
- let data = default_nft_data();
- create_test_item(1, &data.into());
+ let data = default_nft_data();
+ create_test_item(1, &data.into());
- TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::Admin,
- );
+ TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::Admin,
+ );
- let variable_data = b"test set_variable_meta_data method.".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(
- origin1,
- collection_id,
- 1,
- variable_data.clone()
- ),
- Error::<Test>::NoPermission
- );
- });
-}
+ let variable_data = b"test set_variable_meta_data method.".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1,
+ collection_id,
+ 1,
+ variable_data.clone()
+ ),
+ Error::<Test>::NoPermission
+ );
+ });
+ }
-#[test]
-fn set_variable_meta_flag_after_freeze() {
- new_test_ext().execute_with(|| {
- default_limits();
+ #[test]
+ fn set_variable_meta_flag_after_freeze() {
+ new_test_ext().execute_with(|| {
+ default_limits();
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
+ let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 2, 1);
- let origin2 = Origin::signed(2);
+ let origin2 = Origin::signed(2);
- TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::None,
- );
- assert_noop!(
- TemplateModule::set_meta_update_permission_flag(
- origin2.clone(),
- collection_id,
- MetaUpdatePermission::Admin
- ),
- Error::<Test>::MetadataFlagFrozen
- );
- });
-}
+ TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::None,
+ );
+ assert_noop!(
+ TemplateModule::set_meta_update_permission_flag(
+ origin2.clone(),
+ collection_id,
+ MetaUpdatePermission::Admin
+ ),
+ Error::<Test>::MetadataFlagFrozen
+ );
+ });
+ }
-#[test]
-fn set_variable_meta_data_on_nft_with_none_flag_neg() {
- new_test_ext().execute_with(|| {
- default_limits();
+ #[test]
+ fn set_variable_meta_data_on_nft_with_none_flag_neg() {
+ new_test_ext().execute_with(|| {
+ default_limits();
- let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
- let origin1 = Origin::signed(1);
+ let collection_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);
+ let origin1 = Origin::signed(1);
- let data = default_nft_data();
- create_test_item(1, &data.into());
+ let data = default_nft_data();
+ create_test_item(1, &data.into());
- TemplateModule::set_meta_update_permission_flag(
- origin1.clone(),
- collection_id,
- MetaUpdatePermission::None,
- );
+ TemplateModule::set_meta_update_permission_flag(
+ origin1.clone(),
+ collection_id,
+ MetaUpdatePermission::None,
+ );
- let variable_data = b"test set_variable_meta_data method.".to_vec();
- assert_noop!(
- TemplateModule::set_variable_meta_data(
- origin1.clone(),
- collection_id,
- 1,
- variable_data.clone()
- ),
- Error::<Test>::MetadataUpdateDenied
- );
+ let variable_data = b"test set_variable_meta_data method.".to_vec();
+ assert_noop!(
+ TemplateModule::set_variable_meta_data(
+ origin1.clone(),
+ collection_id,
+ 1,
+ variable_data.clone()
+ ),
+ Error::<Test>::MetadataUpdateDenied
+ );
+ });
+ }
-#[test]
-fn collection_transfer_flag_works_neg() {
- new_test_ext().execute_with(|| {
- let origin1 = Origin::signed(1);
+ #[test]
+ fn collection_transfer_flag_works_neg() {
+ new_test_ext().execute_with(|| {
+ let origin1 = Origin::signed(1);
- let collection_id = create_test_collection(&CollectionMode::NFT, 1);
- assert_ok!(TemplateModule::set_transfers_enabled_flag(
- origin1, 1, false
- ));
+ let collection_id = create_test_collection(&CollectionMode::NFT, 1);
+ assert_ok!(TemplateModule::set_transfers_enabled_flag(
+ origin1, 1, false
+ ));
- let data = default_nft_data();
- create_test_item(collection_id, &data.into());
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+ let data = default_nft_data();
+ create_test_item(collection_id, &data.into());
+ assert_eq!(TemplateModule::balance_count(1, 1), 1);
+ assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
- let origin1 = Origin::signed(1);
+ let origin1 = Origin::signed(1);
- // default scenario
- assert_noop!(
- TemplateModule::transfer(origin1, account(2), 1, 1, 1000),
- Error::<Test>::TransferNotAllowed
- );
- assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(1));
- assert_eq!(TemplateModule::balance_count(1, 1), 1);
- assert_eq!(TemplateModule::balance_count(1, 2), 0);
+ // default scenario
+ assert_noop!(
+ TemplateModule::transfer(origin1, account(2), 1, 1, 1000),
+ Error::<Test>::TransferNotAllowed
+ );
+ assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(1));
+ assert_eq!(TemplateModule::balance_count(1, 1), 1);
+ assert_eq!(TemplateModule::balance_count(1, 2), 0);
- assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+ assert_eq!(TemplateModule::address_tokens(1, 1), [1]);
+ });
+ }
});
}
tests/src/addCollectionAdmin.test.tsdiffbeforeafterboth--- a/tests/src/addCollectionAdmin.test.ts
+++ b/tests/src/addCollectionAdmin.test.ts
@@ -4,7 +4,6 @@
//
import { ApiPromise } from '@polkadot/api';
-import BN from 'bn.js';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import privateKey from './substrate/privateKey';
tests/src/collision-tests/adminLimitsOff.test.tsdiffbeforeafterboth--- a/tests/src/collision-tests/adminLimitsOff.test.ts
+++ b/tests/src/collision-tests/adminLimitsOff.test.ts
@@ -1,5 +1,4 @@
import { IKeyringPair } from '@polkadot/types/types';
-import BN from 'bn.js';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import privateKey from '../substrate/privateKey';
tests/src/eth/nonFungible.test.tsdiffbeforeafterboth1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import privateKey from '../substrate/privateKey';7import { approveExpectSuccess, burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, UNIQUE } from '../util/helpers';8import { collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, transferBalanceToEth } from './util/helpers';9import { evmToAddress } from '@polkadot/util-crypto';10import nonFungibleAbi from './nonFungibleAbi.json';11import { expect } from 'chai';12import waitNewBlocks from '../substrate/wait-new-blocks';13import { submitTransactionAsync } from '../substrate/substrate-api';1415describe('NFT: Information getting', () => {16 itWeb3('totalSupply', async ({ api, web3 }) => {17 const collection = await createCollectionExpectSuccess({18 mode: { type: 'NFT' },19 });20 const alice = privateKey('//Alice');21 const caller = await createEthAccountWithBalance(api, web3);2223 await createItemExpectSuccess(alice, collection, 'NFT', { substrate: alice.address });2425 const address = collectionIdToAddress(collection);26 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});27 const totalSupply = await contract.methods.totalSupply().call();2829 // FIXME: always equals to 0, because this method is not implemented30 expect(totalSupply).to.equal('0');31 });3233 itWeb3('balanceOf', async ({ api, web3 }) => {34 const collection = await createCollectionExpectSuccess({35 mode: { type: 'NFT' },36 });37 const alice = privateKey('//Alice');3839 const caller = await createEthAccountWithBalance(api, web3);40 await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });41 await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });42 await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });4344 const address = collectionIdToAddress(collection);45 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});46 const balance = await contract.methods.balanceOf(caller).call();4748 expect(balance).to.equal('3');49 });5051 itWeb3('ownerOf', async ({ api, web3 }) => {52 const collection = await createCollectionExpectSuccess({53 mode: { type: 'NFT' },54 });55 const alice = privateKey('//Alice');5657 const caller = await createEthAccountWithBalance(api, web3);58 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: caller });5960 const address = collectionIdToAddress(collection);61 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});62 const owner = await contract.methods.ownerOf(tokenId).call();6364 expect(owner).to.equal(caller);65 });66});6768describe('NFT: Plain calls', () => {69 itWeb3('Can perform mint()', async ({ web3, api }) => {70 const collection = await createCollectionExpectSuccess({71 mode: { type: 'NFT' },72 });73 const alice = privateKey('//Alice');7475 const caller = await createEthAccountWithBalance(api, web3);76 const changeAdminTx = api.tx.nft.addCollectionAdmin(collection, { ethereum: caller });77 await submitTransactionAsync(alice, changeAdminTx);78 const receiver = createEthAccount(web3);7980 const address = collectionIdToAddress(collection);81 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});8283 {84 const nextTokenId = await contract.methods.nextTokenId().call();85 expect(nextTokenId).to.be.equal('1');86 const result = await contract.methods.mintWithTokenURI(87 receiver,88 nextTokenId,89 'Test URI',90 ).send({from: caller});91 const events = normalizeEvents(result.events);9293 expect(events).to.be.deep.equal([94 {95 address,96 event: 'Transfer',97 args: {98 from: '0x0000000000000000000000000000000000000000',99 to: receiver,100 tokenId: nextTokenId,101 },102 },103 ]);104105 await waitNewBlocks(api, 1);106 expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');107 }108 });109110 itWeb3('Can perform burn()', async ({ web3, api }) => {111 const collection = await createCollectionExpectSuccess({112 mode: {type: 'NFT'},113 });114 const alice = privateKey('//Alice');115116 const owner = await createEthAccountWithBalance(api, web3);117118 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });119 120 const address = collectionIdToAddress(collection);121 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});122123 {124 const result = await contract.methods.burn(tokenId).send({ from: owner });125 const events = normalizeEvents(result.events);126 127 expect(events).to.be.deep.equal([128 {129 address,130 event: 'Transfer',131 args: {132 from: owner,133 to: '0x0000000000000000000000000000000000000000',134 tokenId: tokenId.toString(),135 },136 },137 ]);138 }139 });140141 itWeb3('Can perform approve()', async ({ web3, api }) => {142 const collection = await createCollectionExpectSuccess({143 mode: { type: 'NFT' },144 });145 const alice = privateKey('//Alice');146147 const owner = createEthAccount(web3);148 await transferBalanceToEth(api, alice, owner, 999999999999999);149150 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });151152 const spender = createEthAccount(web3);153154 const address = collectionIdToAddress(collection);155 const contract = new web3.eth.Contract(nonFungibleAbi as any, address);156157 {158 const result = await contract.methods.approve(spender, tokenId).send({ from: owner, gas: '0x1000000', gasPrice: '0x01' });159 const events = normalizeEvents(result.events);160161 expect(events).to.be.deep.equal([162 {163 address,164 event: 'Approval',165 args: {166 owner,167 approved: spender,168 tokenId: tokenId.toString(),169 },170 },171 ]);172 }173 });174175 itWeb3('Can perform transferFrom()', async ({ web3, api }) => {176 const collection = await createCollectionExpectSuccess({177 mode: { type: 'NFT' },178 });179 const alice = privateKey('//Alice');180181 const owner = createEthAccount(web3);182 await transferBalanceToEth(api, alice, owner, 999999999999999);183184 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });185186 const spender = createEthAccount(web3);187 await transferBalanceToEth(api, alice, spender, 999999999999999);188189 const receiver = createEthAccount(web3);190191 const address = collectionIdToAddress(collection);192 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});193194 await contract.methods.approve(spender, tokenId).send({ from: owner });195196 {197 const result = await contract.methods.transferFrom(owner, receiver, tokenId).send({ from: spender });198 const events = normalizeEvents(result.events);199 expect(events).to.be.deep.equal([200 {201 address,202 event: 'Transfer',203 args: {204 from: owner,205 to: receiver,206 tokenId: tokenId.toString(),207 },208 },209 ]);210 }211212 {213 const balance = await contract.methods.balanceOf(receiver).call();214 expect(+balance).to.equal(1);215 }216217 {218 const balance = await contract.methods.balanceOf(owner).call();219 expect(+balance).to.equal(0);220 }221 });222223 itWeb3('Can perform transfer()', async ({ web3, api }) => {224 const collection = await createCollectionExpectSuccess({225 mode: { type: 'NFT' },226 });227 const alice = privateKey('//Alice');228229 const owner = createEthAccount(web3);230 await transferBalanceToEth(api, alice, owner, 999999999999999);231232 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });233234 const receiver = createEthAccount(web3);235 await transferBalanceToEth(api, alice, receiver, 999999999999999);236237 const address = collectionIdToAddress(collection);238 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});239240 {241 const result = await contract.methods.transfer(receiver, tokenId).send({ from: owner });242 await waitNewBlocks(api, 1);243 const events = normalizeEvents(result.events);244 expect(events).to.be.deep.equal([245 {246 address,247 event: 'Transfer',248 args: {249 from: owner,250 to: receiver,251 tokenId: tokenId.toString(),252 },253 },254 ]);255 }256257 {258 const balance = await contract.methods.balanceOf(owner).call();259 expect(+balance).to.equal(0);260 }261262 {263 const balance = await contract.methods.balanceOf(receiver).call();264 expect(+balance).to.equal(1);265 }266 });267});268269describe('NFT: Fees', () => {270 itWeb3('approve() call fee is less than 0.2UNQ', async ({ web3, api }) => {271 const collection = await createCollectionExpectSuccess({272 mode: { type: 'NFT' },273 });274 const alice = privateKey('//Alice');275276 const owner = await createEthAccountWithBalance(api, web3);277 const spender = createEthAccount(web3);278279 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });280281 const address = collectionIdToAddress(collection);282 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });283284 const cost = await recordEthFee(api, owner, () => contract.methods.approve(spender, tokenId).send({ from: owner }));285 expect(cost < BigInt(0.2 * Number(UNIQUE)));286 });287288 itWeb3('transferFrom() call fee is less than 0.2UNQ', async ({ web3, api }) => {289 const collection = await createCollectionExpectSuccess({290 mode: { type: 'NFT' },291 });292 const alice = privateKey('//Alice');293 294 const owner = await createEthAccountWithBalance(api, web3);295 const spender = await createEthAccountWithBalance(api, web3);296297 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });298299 const address = collectionIdToAddress(collection);300 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });301302 await contract.methods.approve(spender, tokenId).send({ from: owner });303304 const cost = await recordEthFee(api, spender, () => contract.methods.transferFrom(owner, spender, tokenId).send({ from: spender }));305 expect(cost < BigInt(0.2 * Number(UNIQUE)));306 });307308 itWeb3('transfer() call fee is less than 0.2UNQ', async ({ web3, api }) => {309 const collection = await createCollectionExpectSuccess({310 mode: { type: 'NFT' },311 });312 const alice = privateKey('//Alice');313314 const owner = await createEthAccountWithBalance(api, web3);315 const receiver = createEthAccount(web3);316317 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', { ethereum: owner });318319 const address = collectionIdToAddress(collection);320 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, { from: owner, ...GAS_ARGS });321322 const cost = await recordEthFee(api, owner, () => contract.methods.transfer(receiver, tokenId).send({ from: owner }));323 expect(cost < BigInt(0.2 * Number(UNIQUE)));324 });325});326327describe('NFT: Substrate calls', () => {328 itWeb3('Events emitted for mint()', async ({ web3 }) => {329 const collection = await createCollectionExpectSuccess({330 mode: { type: 'NFT' },331 });332 const alice = privateKey('//Alice');333334 const address = collectionIdToAddress(collection);335 const contract = new web3.eth.Contract(nonFungibleAbi as any, address);336337 let tokenId: number;338 const events = await recordEvents(contract, async () => {339 tokenId = await createItemExpectSuccess(alice, collection, 'NFT');340 });341342 expect(events).to.be.deep.equal([343 {344 address,345 event: 'Transfer',346 args: {347 from: '0x0000000000000000000000000000000000000000',348 to: subToEth(alice.address),349 tokenId: tokenId!.toString(),350 },351 },352 ]);353 });354355 itWeb3('Events emitted for burn()', async ({ web3 }) => {356 const collection = await createCollectionExpectSuccess({357 mode: { type: 'NFT' },358 });359 const alice = privateKey('//Alice');360361 const address = collectionIdToAddress(collection);362 const contract = new web3.eth.Contract(nonFungibleAbi as any, address);363364 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT');365 const events = await recordEvents(contract, async () => {366 await burnItemExpectSuccess(alice, collection, tokenId);367 });368369 expect(events).to.be.deep.equal([370 {371 address,372 event: 'Transfer',373 args: {374 from: subToEth(alice.address),375 to: '0x0000000000000000000000000000000000000000',376 tokenId: tokenId.toString(),377 },378 },379 ]);380 });381382 itWeb3('Events emitted for approve()', async ({ web3 }) => {383 const collection = await createCollectionExpectSuccess({384 mode: { type: 'NFT' },385 });386 const alice = privateKey('//Alice');387388 const receiver = createEthAccount(web3);389390 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT');391392 const address = collectionIdToAddress(collection);393 const contract = new web3.eth.Contract(nonFungibleAbi as any, address);394395 const events = await recordEvents(contract, async () => {396 await approveExpectSuccess(collection, tokenId, alice, { ethereum: receiver }, 1);397 });398399 expect(events).to.be.deep.equal([400 {401 address,402 event: 'Approval',403 args: {404 owner: subToEth(alice.address),405 approved: receiver,406 tokenId: tokenId.toString(),407 },408 },409 ]);410 });411412 itWeb3('Events emitted for transferFrom()', async ({ web3 }) => {413 const collection = await createCollectionExpectSuccess({414 mode: { type: 'NFT' },415 });416 const alice = privateKey('//Alice');417 const bob = privateKey('//Bob');418419 const receiver = createEthAccount(web3);420421 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT');422 await approveExpectSuccess(collection, tokenId, alice, bob, 1);423424 const address = collectionIdToAddress(collection);425 const contract = new web3.eth.Contract(nonFungibleAbi as any, address);426427 const events = await recordEvents(contract, async () => {428 await transferFromExpectSuccess(collection, tokenId, bob, alice, { ethereum: receiver }, 1, 'NFT');429 });430431 expect(events).to.be.deep.equal([432 {433 address,434 event: 'Transfer',435 args: {436 from: subToEth(alice.address),437 to: receiver,438 tokenId: tokenId.toString(),439 },440 },441 ]);442 });443444 itWeb3('Events emitted for transfer()', async ({ web3 }) => {445 const collection = await createCollectionExpectSuccess({446 mode: { type: 'NFT' },447 });448 const alice = privateKey('//Alice');449450 const receiver = createEthAccount(web3);451452 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT');453454 const address = collectionIdToAddress(collection);455 const contract = new web3.eth.Contract(nonFungibleAbi as any, address);456457 const events = await recordEvents(contract, async () => {458 await transferExpectSuccess(collection, tokenId, alice, { ethereum: receiver }, 1, 'NFT');459 });460461 expect(events).to.be.deep.equal([462 {463 address,464 event: 'Transfer',465 args: {466 from: subToEth(alice.address),467 to: receiver,468 tokenId: tokenId.toString(),469 },470 },471 ]);472 });473});tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -1084,15 +1084,6 @@
await setMintPermissionExpectSuccess(sender, collectionId, true);
}
-export async function addCollectionAdminExpectSuccess(sender: IKeyringPair, collectionId: number, address: IKeyringPair) {
- await usingApi(async (api) => {
- const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(address.address));
- const events = await submitTransactionAsync(sender, changeAdminTx);
- const result = getCreateCollectionResult(events);
- expect(result.success).to.be.true;
- });
-}
-
export async function setMintPermissionExpectFailure(sender: IKeyringPair, collectionId: number, enabled: boolean) {
await usingApi(async (api) => {
// Run the transaction