Files
strategic/tests/utils/test-helpers.ts
2026-02-09 21:51:54 -08:00

95 lines
2.2 KiB
TypeScript

import { JsonRpcProvider, Wallet } from "ethers";
import { Strategy } from "../../src/strategy.schema.js";
/**
* Create a mock JSON-RPC provider for testing
*/
export function createMockProvider(): JsonRpcProvider {
const provider = new JsonRpcProvider("http://localhost:8545");
return provider;
}
/**
* Create a mock wallet for testing
*/
export function createMockSigner(privateKey?: string): Wallet {
const key = privateKey || "0x" + "1".repeat(64);
return new Wallet(key);
}
/**
* Create a mock strategy for testing
*/
export function createMockStrategy(overrides?: Partial<Strategy>): Strategy {
return {
name: "Test Strategy",
chain: "mainnet",
steps: [
{
id: "step1",
action: {
type: "aaveV3.supply",
asset: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
amount: "1000000",
},
},
],
...overrides,
};
}
/**
* Create a mock adapter (generic helper)
*/
export function createMockAdapter(adapterName: string): any {
return {
name: adapterName,
provider: createMockProvider(),
};
}
/**
* Setup a fork for testing (requires Anvil or similar)
*/
export async function setupFork(
rpcUrl: string,
blockNumber?: number
): Promise<JsonRpcProvider> {
const provider = new JsonRpcProvider(rpcUrl);
if (blockNumber) {
// In a real implementation, you'd use anvil_reset or similar
// For now, just return the provider
}
return provider;
}
/**
* Wait for a specific number of blocks
*/
export async function waitForBlocks(
provider: JsonRpcProvider,
blocks: number
): Promise<void> {
const currentBlock = await provider.getBlockNumber();
const targetBlock = currentBlock + blocks;
while ((await provider.getBlockNumber()) < targetBlock) {
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
/**
* Create test addresses
*/
export const TEST_ADDRESSES = {
USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
EXECUTOR: "0x1234567890123456789012345678901234567890",
USER: "0x1111111111111111111111111111111111111111",
};