fix: harden drift verifier and validation flow

This commit is contained in:
mindesbunister
2025-12-10 15:05:44 +01:00
parent 0a45279c64
commit 4e286c91ef
12 changed files with 620 additions and 579 deletions

View File

@@ -46,6 +46,19 @@ jest.mock('../lib/utils/logger', () => ({
},
}))
// Mock Drift SDK enums to avoid native bindings during tests
jest.mock('@drift-labs/sdk', () => ({
MarketType: { PERP: 'perp' },
PositionDirection: { LONG: 'long', SHORT: 'short' },
OrderType: {
LIMIT: 'limit',
TRIGGER_LIMIT: 'trigger_limit',
TRIGGER_MARKET: 'trigger_market',
MARKET: 'market',
},
OrderTriggerCondition: { BELOW: 'below', ABOVE: 'above' },
}))
// Mock Drift service to avoid network calls
jest.mock('../lib/drift/client', () => ({
getDriftService: jest.fn(() => ({
@@ -80,12 +93,15 @@ jest.mock('../lib/notifications/telegram', () => ({
sendPositionOpenedNotification: jest.fn(() => Promise.resolve()),
}))
// Mock Drift orders
jest.mock('../lib/drift/orders', () => ({
closePosition: jest.fn(() => Promise.resolve({ success: true, realizedPnL: 0 })),
cancelAllOrders: jest.fn(() => Promise.resolve({ success: true, cancelledCount: 0 })),
placeExitOrders: jest.fn(() => Promise.resolve({ success: true })),
}))
// Mock Drift orders (keep real placeExitOrders for validation tests)
jest.mock('../lib/drift/orders', () => {
const actual = jest.requireActual('../lib/drift/orders')
return {
...actual,
closePosition: jest.fn(() => Promise.resolve({ success: true, realizedPnL: 0 })),
cancelAllOrders: jest.fn(() => Promise.resolve({ success: true, cancelledCount: 0 })),
}
})
// Mock market data cache
jest.mock('../lib/trading/market-data-cache', () => ({