import { ERC20Wrapper } from '@0x/contracts-asset-proxy'; import { blockchainTests, expect } from '@0x/contracts-test-utils'; import * as _ from 'lodash'; import { constants as stakingConstants } from '../src/constants'; import { deployAndConfigureContractsAsync, StakingApiWrapper } from './utils/api_wrapper'; // tslint:disable:no-unnecessary-type-assertion blockchainTests('Epochs', env => { // tokens & addresses let accounts: string[]; let owner: string; // wrappers let stakingApiWrapper: StakingApiWrapper; let erc20Wrapper: ERC20Wrapper; // tests before(async () => { // create accounts accounts = await env.getAccountAddressesAsync(); owner = accounts[0]; // set up ERC20Wrapper erc20Wrapper = new ERC20Wrapper(env.provider, accounts, owner); // deploy staking contracts stakingApiWrapper = await deployAndConfigureContractsAsync(env, owner, erc20Wrapper); }); describe('Epochs & TimeLocks', () => { it('basic epochs & timeLock periods', async () => { ///// 1/3 Validate Assumptions ///// expect((await stakingApiWrapper.utils.getParamsAsync()).epochDurationInSeconds).to.be.bignumber.equal( stakingConstants.DEFAULT_PARAMS.epochDurationInSeconds, ); ///// 2/3 Validate Initial Epoch & TimeLock Period ///// { // epoch const currentEpoch = await stakingApiWrapper.stakingContract.currentEpoch().callAsync(); expect(currentEpoch).to.be.bignumber.equal(stakingConstants.INITIAL_EPOCH); } ///// 3/3 Increment Epoch (TimeLock Should Not Increment) ///// await stakingApiWrapper.utils.skipToNextEpochAndFinalizeAsync(); { // epoch const currentEpoch = await stakingApiWrapper.stakingContract.currentEpoch().callAsync(); expect(currentEpoch).to.be.bignumber.equal(stakingConstants.INITIAL_EPOCH.plus(1)); } }); }); }); // tslint:enable:no-unnecessary-type-assertion