asserts.spec.ts 1.9 KB

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