Skip to content

Commit

Permalink
add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
leomassazza committed Jul 11, 2023
1 parent 90f485e commit 333f4a5
Showing 1 changed file with 56 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,14 @@ import { DEFAULT_SETTLEMENT_STRATEGY, bn, bootstrapMarkets } from '../bootstrap'
import { fastForwardTo } from '@synthetixio/core-utils/utils/hardhat/rpc';
import { snapshotCheckpoint } from '@synthetixio/core-utils/utils/mocha/snapshot';
import { SynthMarkets } from '@synthetixio/spot-market/test/common';

Check warning on line 5 in markets/perps-market/test/integration/Orders/OffchainAsyncOrder.pending.test.ts

View workflow job for this annotation

GitHub Actions / lint

'SynthMarkets' is defined but never used
import { DepositCollateralData, depositCollateral } from '../helpers';
import { depositCollateral, settleOrder } from '../helpers';
import assertBn from '@synthetixio/core-utils/utils/assertions/assert-bignumber';
import assertEvent from '@synthetixio/core-utils/utils/assertions/assert-event';
import assertRevert from '@synthetixio/core-utils/utils/assertions/assert-revert';
import { getTxTime } from '@synthetixio/core-utils/src/utils/hardhat/rpc';
import { calculateFillPrice } from '../helpers/fillPrice';
import { wei } from '@synthetixio/wei';
import { calcCurrentFundingVelocity } from '../helpers/funding-calcs';

describe('Offchain Async Order - Prevent updates with pending order test', () => {
const { systems, perpsMarkets, synthMarkets, provider, trader1, keeper } = bootstrapMarkets({
synthMarkets: [
{
name: 'Bitcoin',
token: 'snxBTC',
buyPrice: bn(10_000),
sellPrice: bn(10_000),
},
],
const { systems, perpsMarkets, provider, trader1, keeper } = bootstrapMarkets({
synthMarkets: [],
perpsMarkets: [
{
name: 'Ether',
Expand All @@ -40,18 +29,14 @@ describe('Offchain Async Order - Prevent updates with pending order test', () =>
});
let ethMarketId: ethers.BigNumber;
let btcMarketId: ethers.BigNumber;
let btcSynth: SynthMarkets[number];

before('identify actors', async () => {
ethMarketId = perpsMarkets()[0].marketId();
btcMarketId = perpsMarkets()[1].marketId();
btcSynth = synthMarkets()[0];
});

describe('With a pending order', () => {
let startTime: number;
let extraData: string;
let pythCallData: string;
before('add collateral', async () => {
await depositCollateral({
systems,
Expand Down Expand Up @@ -79,17 +64,6 @@ describe('Offchain Async Order - Prevent updates with pending order test', () =>
startTime = await getTxTime(provider(), tx);
});

before('setup bytes data', () => {
extraData = ethers.utils.defaultAbiCoder.encode(['uint128', 'uint128'], [ethMarketId, 2]);
pythCallData = ethers.utils.solidityPack(
['bytes32', 'uint64'],
[
DEFAULT_SETTLEMENT_STRATEGY.feedId,
startTime + DEFAULT_SETTLEMENT_STRATEGY.settlementDelay,
]
);
});

const restoreToCommit = snapshotCheckpoint(provider);

describe('failures', () => {
Expand Down Expand Up @@ -123,43 +97,88 @@ describe('Offchain Async Order - Prevent updates with pending order test', () =>

describe('after settle the pending order', () => {
before(restoreToCommit);
before('settle the order', async () => {});

before('settle the order', async () => {
const settlementTime = startTime + DEFAULT_SETTLEMENT_STRATEGY.settlementDelay + 1;
await fastForwardTo(settlementTime, provider());
await settleOrder({
systems,
keeper: keeper(),
marketId: ethMarketId,
accountId: 2,
feedId: DEFAULT_SETTLEMENT_STRATEGY.feedId,
settlementTime,
offChainPrice: 1000,
});
});

it('can update the collateral', async () => {
systems().PerpsMarket.connect(trader1()).modifyCollateral(2, 0, bn(10));
const collateralBalancBefore = await systems().PerpsMarket.getCollateralAmount(2, 0);

await systems().PerpsMarket.connect(trader1()).modifyCollateral(2, 0, bn(10));

const collateralBalancAfter = await systems().PerpsMarket.getCollateralAmount(2, 0);
assertBn.equal(collateralBalancAfter, collateralBalancBefore.add(bn(10)));
});

it('can commit another order', async () => {
systems()
await systems()
.PerpsMarket.connect(trader1())
.commitOrder({
marketId: btcMarketId,
accountId: 2,
sizeDelta: bn(0.01),
sizeDelta: bn(1),
settlementStrategyId: 0,
acceptablePrice: bn(10050), // 5% slippage
trackingCode: ethers.constants.HashZero,
});

const order = await systems().PerpsMarket.getOrder(btcMarketId, 2);
assertBn.equal(order.accountId, 2);
assertBn.equal(order.marketId, btcMarketId);
assertBn.equal(order.sizeDelta, bn(1));
});
});

describe('after cancel the pending order', () => {
before(restoreToCommit);
before('cancel the order', async () => {});

before('cancel the order', async () => {
await fastForwardTo(
startTime +
DEFAULT_SETTLEMENT_STRATEGY.settlementDelay +
DEFAULT_SETTLEMENT_STRATEGY.settlementWindowDuration +
1,
provider()
);
await systems().PerpsMarket.cancelOrder(ethMarketId, 2);
});

it('can update the collateral', async () => {
systems().PerpsMarket.connect(trader1()).modifyCollateral(2, 0, bn(10));
const collateralBalancBefore = await systems().PerpsMarket.getCollateralAmount(2, 0);

await systems().PerpsMarket.connect(trader1()).modifyCollateral(2, 0, bn(10));

const collateralBalancAfter = await systems().PerpsMarket.getCollateralAmount(2, 0);
assertBn.equal(collateralBalancAfter, collateralBalancBefore.add(bn(10)));
});

it('can commit another order', async () => {
systems()
await systems()
.PerpsMarket.connect(trader1())
.commitOrder({
marketId: btcMarketId,
accountId: 2,
sizeDelta: bn(0.01),
sizeDelta: bn(1),
settlementStrategyId: 0,
acceptablePrice: bn(10050), // 5% slippage
trackingCode: ethers.constants.HashZero,
});

const order = await systems().PerpsMarket.getOrder(btcMarketId, 2);
assertBn.equal(order.accountId, 2);
assertBn.equal(order.marketId, btcMarketId);
assertBn.equal(order.sizeDelta, bn(1));
});
});
});
Expand Down

0 comments on commit 333f4a5

Please sign in to comment.