diff --git a/jest.config.js b/jest.config.js index 265779c..1d35a07 100644 --- a/jest.config.js +++ b/jest.config.js @@ -19,7 +19,6 @@ const config = { setupFilesAfterEnv: ['/tests/setup.ts'], collectCoverageFrom: [ 'lib/trading/position-manager.ts', - 'tests/**/*.ts', ], coverageReporters: ['text', 'text-summary', 'html'], verbose: true, diff --git a/tests/README.md b/tests/README.md index 91626d6..f0cdb99 100644 --- a/tests/README.md +++ b/tests/README.md @@ -50,6 +50,8 @@ These tests verify the **logic** of Position Manager functions in isolation: - Token vs USD conversion requirements - Price verification requirements +**Note:** Coverage metrics are calculated against `lib/trading/position-manager.ts` but will be low because tests extract and validate logic patterns without importing the file directly. This avoids complex mocking while still validating critical trading logic. + The tests extract and validate the pure calculation logic without importing the actual Position Manager, avoiding complex mocking of: - Drift blockchain connections - Pyth price feeds @@ -208,17 +210,15 @@ npm test -- tests/integration/position-manager/ Tests run automatically in CI with: - JUnit XML reports for test results - Coverage reports in HTML and text formats -- Failure threshold of 60% coverage -Configure in `jest.config.js`: +Run tests with coverage report: -```javascript -coverageThreshold: { - global: { - branches: 60, - functions: 60, - lines: 60, - statements: 60, - }, -}, +```bash +npm run test:coverage +``` + +Run tests in CI mode with JUnit reporter: + +```bash +npm run test:ci ``` diff --git a/tests/setup.ts b/tests/setup.ts index c775977..9980810 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -33,6 +33,10 @@ declare global { } // Mock logger to reduce noise during tests +// Logger is mocked to: +// 1. Prevent console output during test runs +// 2. Isolate tests from external I/O operations +// 3. Enable verification of logging calls if needed jest.mock('../lib/utils/logger', () => ({ logger: { log: jest.fn(),