import { LogDescription } from '@ethersproject/abi'; import expect from 'expect'; import { Contract } from '../../../src'; import { loadContract } from '../utils'; describe('Events', () => { let contract: Contract; it('get returned in contract deploy results', async function () { this.timeout(150000); const result = await loadContract(__dirname); contract = result.contract; const events = result.events; expect(events.length).toEqual(1); const [{ args }] = events; expect(args.length).toEqual(3); expect(args[0].toString()).toEqual('102'); expect(args[1]).toEqual(true); expect(args[2]).toEqual('foobar'); }); it('can be subscribed', async function () { const event = await new Promise<LogDescription>((resolve, reject) => { const listenerId = contract.addEventListener(async (event) => { await contract.removeEventListener(listenerId); resolve(event); }); contract.functions.first().catch(reject); }); expect(event.name).toEqual('First'); const { args } = event; expect(args.length).toEqual(3); expect(args[0].toString()).toEqual('102'); expect(args[1]).toEqual(true); expect(args[2]).toEqual('foobar'); }); it('get returned in contract call results', async function () { const { events } = await contract.functions.second(); expect(events.length).toEqual(1); const [{ args }] = events; expect(args.length).toEqual(3); expect(args[0].toString()).toEqual('500332'); expect(args[1]).toEqual('0x41424344'); expect(args[2]).toEqual('0xcafe0123'); }); });