@indigo-labs/indigo-sdk
Version:
Indigo SDK for interacting with Indigo endpoints via lucid-evolution
101 lines (86 loc) • 2.44 kB
text/typescript
import { beforeEach, test } from 'vitest';
import { LucidContext, runAndAwaitTxBuilder } from './test-helpers';
import { EmulatorAccount, Lucid } from '@lucid-evolution/lucid';
import { Emulator } from '@lucid-evolution/lucid';
import { generateEmulatorAccount } from '@lucid-evolution/lucid';
import { addrDetails } from '../src/utils/lucid-utils';
import {
feedInterestOracle,
InterestOracleParams,
startInterestOracle,
} from '../src';
import { findInterestOracle } from './queries/interest-oracle-queries';
import { benchmarkAndAwaitTx } from './utils/benchmark-utils';
import { MAINNET_PROTOCOL_PARAMETERS } from './indigo-test-helpers';
type InterestOracleTestContext = LucidContext<{
admin: EmulatorAccount;
user: EmulatorAccount;
}>;
beforeEach<InterestOracleTestContext>(
async (context: InterestOracleTestContext) => {
context.users = {
admin: generateEmulatorAccount({}),
user: generateEmulatorAccount({
lovelace: BigInt(100_000_000_000_000),
}),
};
context.emulator = new Emulator(
[context.users.user],
MAINNET_PROTOCOL_PARAMETERS,
);
context.lucid = await Lucid(context.emulator, 'Custom');
},
);
test<InterestOracleTestContext>('Interest Oracle - Start', async ({
lucid,
users,
emulator,
}: InterestOracleTestContext) => {
lucid.selectWallet.fromSeed(users.user.seedPhrase);
const [pkh, _] = await addrDetails(lucid);
const [tx, _ac] = await startInterestOracle(
0n,
0n,
0n,
{
biasTime: 120_000n,
owner: pkh.hash,
},
lucid,
);
await benchmarkAndAwaitTx('Interest Oracle - Start', tx, lucid, emulator);
});
test<InterestOracleTestContext>('Interest Oracle - Update', async ({
lucid,
users,
emulator,
}: InterestOracleTestContext) => {
lucid.selectWallet.fromSeed(users.user.seedPhrase);
const [pkh, _] = await addrDetails(lucid);
const interestParams: InterestOracleParams = {
biasTime: 120_000n,
owner: pkh.hash,
};
const [tx, assetClass] = await startInterestOracle(
0n,
0n,
0n,
interestParams,
lucid,
);
await runAndAwaitTxBuilder(lucid, tx);
const utxo = await findInterestOracle(lucid, assetClass);
await benchmarkAndAwaitTx(
'Interest Oracle - Update',
await feedInterestOracle(
interestParams,
500_000n,
lucid,
emulator.slot,
undefined,
utxo,
),
lucid,
emulator,
);
});