1import chai from "chai";2import chaiAsPromised from 'chai-as-promised';3import usingApi, { submitTransactionAsync, submitTransactionExpectFailAsync } from "./substrate/substrate-api";4import fs from "fs";5import { Abi, ContractPromise as Contract } from "@polkadot/api-contract";6import privateKey from "./substrate/privateKey";7import {8 deployFlipper,9 getFlipValue10} from "./util/contracthelpers";1112chai.use(chaiAsPromised);13const expect = chai.expect;1415const value = 0;16const gasLimit = 3000n * 1000000n;17const marketContractAddress = '5CYN9j3YvRkqxewoxeSvRbhAym4465C57uMmX5j4yz99L5H6';1819describe('Contracts', () => {20 it(`Can deploy smart contract Flipper, instantiate it and call it's get and flip messages.`, async () => {21 await usingApi(async api => {22 const [contract, deployer] = await deployFlipper(api);23 const initialGetResponse = await getFlipValue(contract, deployer);2425 const bob = privateKey("//Bob");26 const flip = contract.exec('flip', value, gasLimit);27 await submitTransactionAsync(bob, flip);2829 const afterFlipGetResponse = await getFlipValue(contract, deployer);30 expect(afterFlipGetResponse).not.to.be.eq(initialGetResponse, 'Flipping should change value.');31 });32 });3334 it('Can initialize contract instance', async () => {35 await usingApi(async (api) => {36 const metadata = JSON.parse(fs.readFileSync('./src/flipper/metadata.json').toString('utf-8'));37 const abi = new Abi(metadata);38 const newContractInstance = new Contract(api, abi, marketContractAddress);39 expect(newContractInstance).to.have.property('address');40 expect(newContractInstance.address.toString()).to.equal(marketContractAddress);41 });42 });4344 it.skip('Can transfer balance using smart contract.', async () => {45 await usingApi(async api => {46 47 48 4950 51 5253 5455 5657 58 59 60 6162 63 6465 6667 68 69 });70 });71});