test: regression tests for GET /api/games vote fields
Made-with: Cursor
This commit is contained in:
62
tests/api/regression-games.test.js
Normal file
62
tests/api/regression-games.test.js
Normal file
@@ -0,0 +1,62 @@
|
||||
const request = require('supertest');
|
||||
const { app } = require('../../backend/server');
|
||||
const { cleanDb, seedGame } = require('../helpers/test-utils');
|
||||
const db = require('../../backend/database');
|
||||
|
||||
describe('GET /api/games (regression)', () => {
|
||||
beforeEach(() => {
|
||||
cleanDb();
|
||||
});
|
||||
|
||||
test('returns games with vote fields', async () => {
|
||||
seedGame({
|
||||
title: 'Quiplash 3',
|
||||
upvotes: 10,
|
||||
downvotes: 3,
|
||||
popularity_score: 7,
|
||||
});
|
||||
|
||||
const res = await request(app).get('/api/games');
|
||||
|
||||
expect(res.status).toBe(200);
|
||||
expect(res.body).toHaveLength(1);
|
||||
expect(res.body[0]).toEqual(
|
||||
expect.objectContaining({
|
||||
title: 'Quiplash 3',
|
||||
upvotes: 10,
|
||||
downvotes: 3,
|
||||
popularity_score: 7,
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
test('GET /api/games/:id returns vote fields', async () => {
|
||||
const game = seedGame({
|
||||
title: 'Drawful 2',
|
||||
upvotes: 5,
|
||||
downvotes: 2,
|
||||
popularity_score: 3,
|
||||
});
|
||||
|
||||
const res = await request(app).get(`/api/games/${game.id}`);
|
||||
|
||||
expect(res.status).toBe(200);
|
||||
expect(res.body.upvotes).toBe(5);
|
||||
expect(res.body.downvotes).toBe(2);
|
||||
expect(res.body.popularity_score).toBe(3);
|
||||
});
|
||||
|
||||
test('vote aggregates update correctly after recording votes', async () => {
|
||||
const game = seedGame({ title: 'Fibbage 4' });
|
||||
|
||||
db.prepare('UPDATE games SET upvotes = upvotes + 1, popularity_score = popularity_score + 1 WHERE id = ?').run(game.id);
|
||||
db.prepare('UPDATE games SET upvotes = upvotes + 1, popularity_score = popularity_score + 1 WHERE id = ?').run(game.id);
|
||||
db.prepare('UPDATE games SET downvotes = downvotes + 1, popularity_score = popularity_score - 1 WHERE id = ?').run(game.id);
|
||||
|
||||
const res = await request(app).get(`/api/games/${game.id}`);
|
||||
|
||||
expect(res.body.upvotes).toBe(2);
|
||||
expect(res.body.downvotes).toBe(1);
|
||||
expect(res.body.popularity_score).toBe(1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user