asserts.spec.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import expect from 'expect';
  2. import { weight, createConnection, deploy, transaction, aliceKeypair, query, } from './index';
  3. import { ContractPromise } from '@polkadot/api-contract';
  4. import { ApiPromise } from '@polkadot/api';
  5. describe('Deploy asserts 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('asserts', async function () {
  14. this.timeout(50000);
  15. const alice = aliceKeypair();
  16. // call the constructors
  17. let deploy_contract = await deploy(conn, alice, 'asserts.contract', BigInt(0));
  18. let contract = new ContractPromise(conn, deploy_contract.abi, deploy_contract.address);
  19. let res0 = await query(conn, alice, contract, "var");
  20. expect(res0.output?.toJSON()).toEqual(1);
  21. let res1 = await query(conn, alice, contract, "testAssertRpc");
  22. expect(res1.result.asOk.flags.isRevert).toStrictEqual(true);
  23. expect(res1.result.asOk.data.toString()).toStrictEqual("0x08c379a0204920726566757365");
  24. res1 = await query(conn, alice, contract, "testAssert");
  25. expect(res1.result.asOk.flags.isRevert).toStrictEqual(true);
  26. expect(res1.result.asOk.data.toString()).toStrictEqual("0x4e487b710100000000000000000000000000000000000000000000000000000000000000");
  27. let gasLimit = await weight(conn, contract, "testAssert");
  28. let tx = contract.tx.testAssert({ gasLimit });
  29. let res2 = await transaction(tx, alice).then(() => {
  30. throw new Error("should not succeed");
  31. }, (res) => res);
  32. // Error 25 is ContractReverted
  33. expect(res2.dispatchError.toHuman()).toEqual({ "Module": { "error": "0x19000000", "index": "8" } });
  34. let res3 = await query(conn, alice, contract, "var");
  35. expect(res3.output?.toJSON()).toEqual(1);
  36. });
  37. });