test: regression tests for GET /api/sessions endpoints
Made-with: Cursor
This commit is contained in:
71
tests/api/regression-sessions.test.js
Normal file
71
tests/api/regression-sessions.test.js
Normal file
@@ -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([]);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user