import { AccountAbi, LoudSpeakerAbi } from '../../build/factorySource'; import { Contract, Signer } from 'locklift'; import { expect } from 'chai'; import { Account, AccountFactory } from 'locklift/internal/factory'; describe('Test loudspeaker', () => { let loudspeaker: Contract; let owner: Account; let accountFactory: AccountFactory; let signer: Signer; it('before', async () => { signer = await locklift.keystore.getSigner('0'); accountFactory = locklift.factory.getAccountsFactory('Account'); }); it('Setup owner', async () => { const { account } = await accountFactory.deployNewAccount({ value: locklift.utils.toNano(3), publicKey: signer.publicKey, initParams: { _randomNonce: locklift.utils.getRandomNonce(), }, constructorParams: {}, }); owner = account; }); it('Setup loudspeaker', async () => { const { contract } = await locklift.factory.deployContract({ contract: 'LoudSpeaker', initParams: { _randomNonce: locklift.utils.getRandomNonce(), }, constructorParams: { _owner: owner.address, }, value: locklift.utils.toNano(2), publicKey: signer.publicKey, }); loudspeaker = contract; }); it('Test echo', async () => { await owner.runTarget( { contract: loudspeaker, }, (targetContract: Contract) => targetContract.methods.echo({ text: 'Hello world' }), ); const { events } = await loudspeaker.getPastEvents({ filter: (event) => event.event === 'Echo', }); expect(events).to.have.lengthOf(1, 'Wrong amount of events'); return expect((events[0].data as { text: string }).text).to.be.equal( 'Hello world', 'Wrong event text', ); }); });