import { PositionExtractor } from '../../src/helpers/PositionExtractor'; describe('PositionExtractor behavior', () => { it('returns multi positions for multi-position vaults', async () => { const extractor = new PositionExtractor(); const vault = { getPositions: jest .fn() .mockResolvedValue([ { lowerTick: -10, upperTick: 10, relativeWeight: 1 }, ]), } as any; const result = await extractor.getCurrentVaultPositions(vault, true); expect(result.multiPositions).toHaveLength(1); expect(result.singlePosition).toBeNull(); }); it('returns single position for single-position vaults', async () => { const extractor = new PositionExtractor(); const vault = { upperTick: jest.fn().mockResolvedValue(10), lowerTick: jest.fn().mockResolvedValue(-10), } as any; const result = await extractor.getCurrentVaultPositions(vault, false); expect(result.multiPositions).toHaveLength(0); expect(result.singlePosition).toEqual({ lowerTick: -10, upperTick: 10 }); }); it('extracts new positions from execution results', () => { const extractor = new PositionExtractor(); const executionResult = { valuesArray: [ [], [ [-10, 0], [10, 20], [1, 2], ], ], } as any; const positions = extractor.extractNewPositions(executionResult); expect(positions).toEqual([ { lowerTick: -10, upperTick: 10, weight: 1 }, { lowerTick: 0, upperTick: 20, weight: 2 }, ]); }); it('throws when execution result is malformed', () => { const extractor = new PositionExtractor(); expect(() => extractor.extractNewPositions({} as any)).toThrow( 'Failed to extract new positions', ); }); });