Skip to content

Commit c4ad9b3

Browse files
authored
Add unit tests for like/dislike routes (#70)
1 parent 5b97e5c commit c4ad9b3

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { prismaMock } from '@/__test__/singleton';
2+
import { generateMockRequest } from '@/__test__/utils';
3+
import { PUT } from './route';
4+
import { NextRequest } from 'next/server';
5+
import { verifySession } from '@/lib/session';
6+
7+
jest.mock('@/lib/session', () => ({
8+
verifySession: jest.fn(),
9+
}));
10+
11+
const mockVerifySession = verifySession as jest.Mock;
12+
13+
test("Liked songs fails if session isn't valid", async () => {
14+
mockVerifySession.mockResolvedValue({
15+
isAuth: false,
16+
});
17+
18+
prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });
19+
20+
const req = generateMockRequest({
21+
trackId: 'test',
22+
});
23+
24+
const response = await PUT(req as NextRequest);
25+
const data = await response.json();
26+
27+
expect(data.error).toEqual('Invalid session');
28+
});
29+
30+
test('Liked songs succeeds for valid session', async () => {
31+
mockVerifySession.mockResolvedValue({
32+
isAuth: true,
33+
uid: 2,
34+
});
35+
36+
prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });
37+
38+
const req = generateMockRequest({
39+
trackId: 'test',
40+
});
41+
42+
const response = await PUT(req as NextRequest);
43+
const data = await response.json();
44+
45+
expect(data.success).toEqual(true);
46+
});
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { prismaMock } from '@/__test__/singleton';
2+
import { generateMockRequest } from '@/__test__/utils';
3+
import { PUT } from './route';
4+
import { NextRequest } from 'next/server';
5+
import { verifySession } from '@/lib/session';
6+
7+
jest.mock('@/lib/session', () => ({
8+
verifySession: jest.fn(),
9+
}));
10+
11+
const mockVerifySession = verifySession as jest.Mock;
12+
13+
test("Liked songs fails if session isn't valid", async () => {
14+
mockVerifySession.mockResolvedValue({
15+
isAuth: false,
16+
});
17+
18+
prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });
19+
20+
const req = generateMockRequest({
21+
trackId: 'test',
22+
});
23+
24+
const response = await PUT(req as NextRequest);
25+
const data = await response.json();
26+
27+
expect(data.error).toEqual('Invalid session');
28+
});
29+
30+
test('Liked songs succeeds for valid session', async () => {
31+
mockVerifySession.mockResolvedValue({
32+
isAuth: true,
33+
uid: 2,
34+
});
35+
36+
prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });
37+
38+
const req = generateMockRequest({
39+
trackId: 'test',
40+
});
41+
42+
const response = await PUT(req as NextRequest);
43+
const data = await response.json();
44+
45+
expect(data.success).toEqual(true);
46+
});

0 commit comments

Comments
 (0)