1234567891011121314151617import {expect} from 'chai';18import {EthUniqueHelper, itEth} from './util/playgrounds';19import {Pallets} from '../util/playgrounds';2021describe('Scheduing EVM smart contracts', () => {2223 itEth.ifWithPallets('Successfully schedules and periodically executes an EVM contract', [Pallets.Scheduler], async ({helper, privateKey}) => {24 const alice = privateKey('//Alice');2526 const scheduledId = await helper.arrange.makeScheduledId();2728 const deployer = await helper.eth.createAccountWithBalance(alice);29 const flipper = await helper.eth.deployFlipper(deployer);3031 const initialValue = await flipper.methods.getValue().call();32 await helper.eth.transferBalanceFromSubstrate(alice, helper.address.substrateToEth(alice.address));3334 const waitForBlocks = 4;35 const periodic = {36 period: 2,37 repetitions: 2,38 };3940 await helper.scheduler.scheduleAfter<EthUniqueHelper>(scheduledId, waitForBlocks, {periodic})41 .eth.sendEVM(42 alice,43 flipper.options.address,44 flipper.methods.flip().encodeABI(),45 '0',46 );4748 expect(await flipper.methods.getValue().call()).to.be.equal(initialValue);49 50 await helper.wait.newBlocks(waitForBlocks + 1);51 expect(await flipper.methods.getValue().call()).to.be.not.equal(initialValue);5253 await helper.wait.newBlocks(periodic.period);54 expect(await flipper.methods.getValue().call()).to.be.equal(initialValue);55 });56});