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

difftreelog

source

tests/src/collision-tests/sponsorPayments.test.ts2.5 KiBsourcehistory
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  // tslint:disable-next-line: max-line-length
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      // tslint:disable-next-line:no-unused-expression
52      expect(alicesBalanceAfter === alicesBalanceBefore).to.be.true;
53      // tslint:disable-next-line:no-unused-expression
54      expect(bobsBalanceAfter === bobsBalanceBefore).to.be.true;
55      await timeoutPromise(20000);
56    });
57  });
58});