Skip to main content
Glama

News Aggregator API

db-mock.test.ts3.27 kB
/** * Database mock functionality tests * Tests that our database mocks work properly for testing */ import { describe, test, expect, jest } from '@jest/globals'; import { prisma } from '../utils/db'; // Mock the database module jest.mock('../utils/db', () => { return { db: { connect: jest.fn().mockResolvedValue(undefined), disconnect: jest.fn().mockResolvedValue(undefined), }, prisma: { article: { findMany: jest.fn().mockResolvedValue([ { id: 1, title: 'Test Article 1', content: 'Content 1' }, { id: 2, title: 'Test Article 2', content: 'Content 2' }, ]), findUnique: jest.fn().mockResolvedValue({ id: 1, title: 'Test Article 1', content: 'Content 1' }), create: jest.fn().mockResolvedValue({ id: 3, title: 'New Article', content: 'New Content' }), }, source: { findMany: jest.fn().mockResolvedValue([ { id: 1, name: 'Test Source 1', url: 'http://example.com/1' }, { id: 2, name: 'Test Source 2', url: 'http://example.com/2' }, ]), }, $queryRaw: jest.fn().mockResolvedValue([{ count: 5 }]), $transaction: jest.fn().mockImplementation(async (cb) => { try { return await cb({}); } catch (error) { throw error; } }), }, }; }); describe('Database Mock Tests', () => { test('should mock article findMany correctly', async () => { const articles = await prisma.article.findMany(); expect(Array.isArray(articles)).toBe(true); expect(articles.length).toBe(2); expect(articles[0].title).toBe('Test Article 1'); }); test('should mock article findUnique correctly', async () => { const article = await prisma.article.findUnique({ where: { id: 1 } }); expect(article).toBeDefined(); expect(article.id).toBe(1); expect(article.title).toBe('Test Article 1'); }); test('should mock article create correctly', async () => { const newArticle = await prisma.article.create({ data: { title: 'New Article', content: 'New Content' } }); expect(newArticle).toBeDefined(); expect(newArticle.id).toBe(3); expect(newArticle.title).toBe('New Article'); }); test('should mock source findMany correctly', async () => { const sources = await prisma.source.findMany(); expect(Array.isArray(sources)).toBe(true); expect(sources.length).toBe(2); expect(sources[0].name).toBe('Test Source 1'); }); test('should mock raw queries correctly', async () => { const result = await prisma.$queryRaw`SELECT COUNT(*) as count FROM articles`; expect(result).toBeDefined(); expect(result[0].count).toBe(5); }); test('should handle transactions correctly', async () => { const result = await prisma.$transaction(async (tx) => { // This would normally be a series of operations return { success: true }; }); expect(result).toEqual({ success: true }); }); test('should handle transaction errors correctly', async () => { expect.assertions(1); try { await prisma.$transaction(async () => { throw new Error('Test transaction error'); }); } catch (error) { expect(error.message).toBe('Test transaction error'); } }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Malachi-devel/the-news-api-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server