Skip to content

Commit

Permalink
Add unit tests for like/dislike routes
Browse files Browse the repository at this point in the history
  • Loading branch information
Advayp committed Jan 23, 2025
1 parent 110e73d commit 8f13168
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 0 deletions.
46 changes: 46 additions & 0 deletions backend/app/api/songs/dislike/route.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { prismaMock } from '@/__test__/singleton';
import { generateMockRequest } from '@/__test__/utils';
import { PUT } from './route';
import { NextRequest } from 'next/server';
import { verifySession } from '@/lib/session';

jest.mock('@/lib/session', () => ({
verifySession: jest.fn(),
}));

const mockVerifySession = verifySession as jest.Mock;

test("Liked songs fails if session isn't valid", async () => {
mockVerifySession.mockResolvedValue({
isAuth: false,
});

prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });

const req = generateMockRequest({
trackId: 'test',
});

const response = await PUT(req as NextRequest);
const data = await response.json();

expect(data.error).toEqual('Invalid session');
});

test('Liked songs succeeds for valid session', async () => {
mockVerifySession.mockResolvedValue({
isAuth: true,
uid: 2,
});

prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });

const req = generateMockRequest({
trackId: 'test',
});

const response = await PUT(req as NextRequest);
const data = await response.json();

expect(data.success).toEqual(true);
});
46 changes: 46 additions & 0 deletions backend/app/api/songs/like/route.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { prismaMock } from '@/__test__/singleton';
import { generateMockRequest } from '@/__test__/utils';
import { PUT } from './route';
import { NextRequest } from 'next/server';
import { verifySession } from '@/lib/session';

jest.mock('@/lib/session', () => ({
verifySession: jest.fn(),
}));

const mockVerifySession = verifySession as jest.Mock;

test("Liked songs fails if session isn't valid", async () => {
mockVerifySession.mockResolvedValue({
isAuth: false,
});

prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });

const req = generateMockRequest({
trackId: 'test',
});

const response = await PUT(req as NextRequest);
const data = await response.json();

expect(data.error).toEqual('Invalid session');
});

test('Liked songs succeeds for valid session', async () => {
mockVerifySession.mockResolvedValue({
isAuth: true,
uid: 2,
});

prismaMock.song.upsert.mockResolvedValue({ id: 1, trackID: 'test' });

const req = generateMockRequest({
trackId: 'test',
});

const response = await PUT(req as NextRequest);
const data = await response.json();

expect(data.success).toEqual(true);
});

0 comments on commit 8f13168

Please sign in to comment.