From d746bd090db9a6a9115e69d6d6c5e88d2ddd02d3 Mon Sep 17 00:00:00 2001 From: ojasdhargave-iiitv <202451120@iiitvadodara.ac.in> Date: Fri, 15 May 2026 14:31:25 +0530 Subject: [PATCH] test file : cover unsupported follow platform error --- apps/backend/src/__tests__/follow.test.ts | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 apps/backend/src/__tests__/follow.test.ts diff --git a/apps/backend/src/__tests__/follow.test.ts b/apps/backend/src/__tests__/follow.test.ts new file mode 100644 index 0000000..8338f60 --- /dev/null +++ b/apps/backend/src/__tests__/follow.test.ts @@ -0,0 +1,57 @@ +import Fastify from 'fastify'; +import { describe, expect, it, vi } from 'vitest'; + +import { followRoutes } from '../routes/follow.js'; + +vi.mock('../utils/encryption.js', () => ({ + decrypt: vi.fn(() => 'fake-access-token'), +})); + +describe('POST /api/follow/:platform/:targetUsername', () => { + it('returns 400 when API follow is not supported for the platform', async () => { + const app = Fastify({ logger: false }); + + const findUnique = vi.fn().mockResolvedValue({ + id: 'token-1', + userId: 'user-1', + platform: 'unknown', + accessToken: 'encrypted-token', + }); + + app.decorate('prisma', { + oAuthToken: { + findUnique, + }, + followLog: { + create: vi.fn(), + }, + }as any); + + app.decorate('authenticate', async (request: any) => { + request.user = { id: 'user-1' }; + }); + + await app.register(followRoutes, { prefix: '/api/follow' }); + await app.ready(); + + const response = await app.inject({ + method: 'POST', + url: '/api/follow/unknown/targetUser', + }); + + const body = response.json(); + + expect(response.statusCode).toBe(400); + expect(body.error).toContain('API follow not supported'); + expect(findUnique).toHaveBeenCalledWith({ + where: { + userId_platform: { + userId: 'user-1', + platform: 'unknown', + }, + }, + }); + + await app.close(); + }); +}); \ No newline at end of file