balances.spec.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import expect from 'expect';
  2. import { weight, createConnection, deploy, transaction, aliceKeypair, daveKeypair, query } from './index';
  3. import { ContractPromise } from '@polkadot/api-contract';
  4. import { ApiPromise } from '@polkadot/api';
  5. describe('Deploy balances contract and test', () => {
  6. let conn: ApiPromise;
  7. before(async function () {
  8. conn = await createConnection();
  9. });
  10. after(async function () {
  11. await conn.disconnect();
  12. });
  13. it('balances', async function () {
  14. this.timeout(50000);
  15. const alice = aliceKeypair();
  16. const dave = daveKeypair();
  17. // call the constructors
  18. let deploy_contract = await deploy(conn, alice, 'balances.contract', BigInt(1e7));
  19. let contract = new ContractPromise(conn, deploy_contract.abi, deploy_contract.address);
  20. let { output: contractRpcBal } = await query(conn, alice, contract, "getBalance");
  21. let { data: { free: contractQueryBalBefore } } = await conn.query.system.account(String(deploy_contract.address));
  22. expect(contractRpcBal?.toString()).toBe(contractQueryBalBefore.toString());
  23. let gasLimit = await weight(conn, contract, "payMe");
  24. let tx = contract.tx.payMe({ gasLimit, value: 1000000n });
  25. await transaction(tx, alice);
  26. let { data: { free: contractQueryBalAfter } } = await conn.query.system.account(String(deploy_contract.address));
  27. expect(contractQueryBalAfter.toBigInt()).toEqual(contractQueryBalBefore.toBigInt() + 1000000n);
  28. let { data: { free: daveBal1 } } = await conn.query.system.account(dave.address);
  29. let tx1 = contract.tx.transfer({ gasLimit }, dave.address, 20000);
  30. await transaction(tx1, alice);
  31. let { data: { free: daveBal2 } } = await conn.query.system.account(dave.address);
  32. expect(daveBal2.toBigInt()).toEqual(daveBal1.toBigInt() + 20000n);
  33. let tx2 = contract.tx.send({ gasLimit }, dave.address, 10000);
  34. await transaction(tx2, alice);
  35. let { data: { free: daveBal3 } } = await conn.query.system.account(dave.address);
  36. expect(daveBal3.toBigInt()).toEqual(daveBal2.toBigInt() + 10000n);
  37. });
  38. });