Testing contracts where time is a critical component can be difficult. We use a suite of functions that work with ganache to:
query block time
increase blockchain time
increase block numbers
revert blockchain state to a previous snapshot
The majority of the functions we use for this are from the npm package
ganache-time-traveler, which was developed by one of AirSwap's developers. We combined this with a couple of web3 time-based functions to create a helper library.
These 6 functions are all available within AirSwap's
time.js library along with the following 2 functions:
Returns the latest block timestamp.
The number of days to add to the current time.
Returns the timestamp that is
days number of days in the future. Note this does not increase the blockchain to this time, it merely returns the timestamp of that time.