From 56adbe7aa21ab0dba88e884af8cad8fce52ff7ed Mon Sep 17 00:00:00 2001 From: cottongin Date: Sun, 15 Mar 2026 18:53:32 -0400 Subject: [PATCH] test: regression tests for GET /api/sessions endpoints Made-with: Cursor --- tests/api/regression-sessions.test.js | 71 +++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/api/regression-sessions.test.js diff --git a/tests/api/regression-sessions.test.js b/tests/api/regression-sessions.test.js new file mode 100644 index 0000000..f888cdd --- /dev/null +++ b/tests/api/regression-sessions.test.js @@ -0,0 +1,71 @@ +const request = require('supertest'); +const { app } = require('../../backend/server'); +const { cleanDb, seedGame, seedSession, seedSessionGame } = require('../helpers/test-utils'); + +describe('GET /api/sessions (regression)', () => { + beforeEach(() => { + cleanDb(); + }); + + test('GET /api/sessions/:id returns session object', async () => { + const session = seedSession({ is_active: 1, notes: 'Test session' }); + + const res = await request(app).get(`/api/sessions/${session.id}`); + + expect(res.status).toBe(200); + expect(res.body).toEqual( + expect.objectContaining({ + id: session.id, + is_active: 1, + notes: 'Test session', + }) + ); + expect(res.body).toHaveProperty('games_played'); + }); + + test('GET /api/sessions/:id returns 404 for nonexistent session', async () => { + const res = await request(app).get('/api/sessions/99999'); + + expect(res.status).toBe(404); + expect(res.body.error).toBe('Session not found'); + }); + + test('GET /api/sessions/:id/games returns games with expected shape', async () => { + const game = seedGame({ + title: 'Quiplash 3', + pack_name: 'Party Pack 7', + min_players: 3, + max_players: 8, + }); + const session = seedSession({ is_active: 1 }); + seedSessionGame(session.id, game.id, { status: 'playing' }); + + const res = await request(app).get(`/api/sessions/${session.id}/games`); + + expect(res.status).toBe(200); + expect(res.body).toHaveLength(1); + expect(res.body[0]).toEqual( + expect.objectContaining({ + game_id: game.id, + session_id: session.id, + pack_name: 'Party Pack 7', + title: 'Quiplash 3', + min_players: 3, + max_players: 8, + status: 'playing', + }) + ); + expect(res.body[0]).toHaveProperty('upvotes'); + expect(res.body[0]).toHaveProperty('downvotes'); + expect(res.body[0]).toHaveProperty('popularity_score'); + }); + + test('GET /api/sessions/:id/games returns empty array for session with no games', async () => { + const session = seedSession({ is_active: 1 }); + + const res = await request(app).get(`/api/sessions/${session.id}/games`); + + expect(res.status).toBe(200); + expect(res.body).toEqual([]); + }); +});