const request = require('supertest'); const app = require('../src/index.js'); const { Pool } = require('pg'); // Setup database connection for tests const pool = new Pool({ host: process.env.DB_HOST || 'postgres', port: process.env.DB_PORT || 5432, user: process.env.DB_USER || 'postgres', password: process.env.DB_PASSWORD || 'homelab_postgres_2026', database: process.env.DB_NAME || 'gravl' }); describe('Phase 06 - Recovery Tracking & Swap System', () => { let authToken; let userId; // Setup: Create test user before(async () => { const res = await request(app) .post('/api/auth/register') .send({ email: `test-${Date.now()}@test.com`, password: 'testpass123' }); authToken = res.body.token; userId = res.body.user.id; }); describe('06-02: Muscle Group Recovery Tracking', () => { it('GET /api/recovery/muscle-groups - should return recovery status', async () => { const res = await request(app) .get('/api/recovery/muscle-groups') .set('Authorization', `Bearer ${authToken}`); expect(res.status).toBe(200); expect(res.body).toHaveProperty('userId'); expect(res.body).toHaveProperty('muscleGroups'); expect(Array.isArray(res.body.muscleGroups)).toBe(true); }); it('GET /api/recovery/most-recovered - should return top recovered groups', async () => { const res = await request(app) .get('/api/recovery/most-recovered?limit=3') .set('Authorization', `Bearer ${authToken}`); expect(res.status).toBe(200); expect(res.body).toHaveProperty('recovered'); expect(res.body.limit).toBe(3); }); }); describe('06-03: Smart Workout Recommendations', () => { it('GET /api/recommendations/smart-workout - should return recommendations', async () => { const res = await request(app) .get('/api/recommendations/smart-workout') .set('Authorization', `Bearer ${authToken}`); expect(res.status).toBe(200); expect(res.body).toHaveProperty('recommendations'); expect(Array.isArray(res.body.recommendations)).toBe(true); }); }); describe('06-01: Workout Swap System', () => { it('GET /api/workouts/available - should return available exercises', async () => { const res = await request(app) .get('/api/workouts/available') .set('Authorization', `Bearer ${authToken}`); expect(res.status).toBe(200); expect(res.body).toHaveProperty('exercises'); expect(Array.isArray(res.body.exercises)).toBe(true); }); }); });