1import { IKeyringPair } from '@polkadot/types/types';
2import chai from 'chai';
3import chaiAsPromised from 'chai-as-promised';
4import { alicesPublicKey, bobsPublicKey } from '../accounts';
5import getBalance from '../substrate/get-balance';
6import privateKey from '../substrate/privateKey';
7import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';
8import waitNewBlocks from '../substrate/wait-new-blocks';
9import {
10 confirmSponsorshipExpectSuccess,
11 createCollectionExpectSuccess,
12 createItemExpectSuccess,
13 setCollectionSponsorExpectSuccess,
14} from '../util/helpers';
15
16chai.use(chaiAsPromised);
17const expect = chai.expect;
18let Alice: IKeyringPair;
19let Bob: IKeyringPair;
20let Ferdie: IKeyringPair;
21
22before(async () => {
23 await usingApi(async () => {
24 Alice = privateKey('//Alice');
25 Bob = privateKey('//Bob');
26 Ferdie = privateKey('//Ferdie');
27 });
28});
29
30describe('Payment of commission if one block: ', () => {
31
32 it('Payment of commission if one block contains transactions for payment from the sponsor\'s balance and his (sponsor\'s) exclusion from the collection ', async () => {
33 await usingApi(async (api) => {
34 const collectionId = await createCollectionExpectSuccess();
35 const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, Bob.address);
36 await submitTransactionAsync(Alice, changeAdminTxBob);
37 const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));
38 const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT');
39 await setCollectionSponsorExpectSuccess(collectionId, Bob.address);
40 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');
41
42 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
43 const sendItem = api.tx.nft.transfer(Alice.address, collectionId, itemId, 1);
44 const revokeSponsor = api.tx.nft.removeCollectionSponsor(collectionId);
45 await Promise.all
46 ([
47 sendItem.signAndSend(Bob),
48 revokeSponsor.signAndSend(Alice),
49 ]);
50 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);
51
52 expect(alicesBalanceAfter === alicesBalanceBefore).to.be.true;
53
54 expect(bobsBalanceAfter === bobsBalanceBefore).to.be.true;
55 await timeoutPromise(20000);
56 });
57 });
58});