diff --git a/__tests__/api.test.js b/__tests__/api.test.js index b81c2ad..729a3b5 100644 --- a/__tests__/api.test.js +++ b/__tests__/api.test.js @@ -1,4 +1,20 @@ const request = require('supertest'); + +jest.mock('passport', () => { + return { + use: jest.fn(), + initialize: () => (req, res, next) => next(), + session: () => (req, res, next) => { + req.isAuthenticated = () => true; + req.user = { id: 1 }; + next(); + }, + serializeUser: jest.fn(), + deserializeUser: jest.fn(), + authenticate: jest.fn(() => (req, res, next) => next()), + }; +}); + const { app, pool } = require('../app'); let server; @@ -29,4 +45,4 @@ describe('API Tests', () => { expect(response.statusCode).toBe(200); expect(Array.isArray(response.body)).toBe(true); }); -}); \ No newline at end of file +}); diff --git a/__tests__/search.test.js b/__tests__/search.test.js new file mode 100644 index 0000000..9e6f161 --- /dev/null +++ b/__tests__/search.test.js @@ -0,0 +1,46 @@ +const request = require('supertest'); + +jest.mock('passport', () => { + return { + use: jest.fn(), + initialize: () => (req, res, next) => next(), + session: () => (req, res, next) => { + req.isAuthenticated = () => true; + req.user = { id: 1 }; + next(); + }, + serializeUser: jest.fn(), + deserializeUser: jest.fn(), + authenticate: jest.fn(() => (req, res, next) => next()), + }; +}); + +const { app, pool } = require('../app'); + +let server; + +beforeAll(done => { + server = app.listen(done); +}); + +afterAll(done => { + server.close(() => { + pool.end(done); + }); +}); + +describe('GET /api/search', () => { + test('should return 400 when no name or id is provided', async () => { + const response = await request(app).get('/api/search'); + expect(response.statusCode).toBe(400); + expect(response.body.error).toBe('Не указано имя или ID предмета.'); + }); +}); + +describe('GET /api/search with empty parameters', () => { + test('should return 400 when name and id are empty strings', async () => { + const response = await request(app).get('/api/search?name=&id='); + expect(response.statusCode).toBe(400); + expect(response.body.error).toBe('Не указано имя или ID предмета.'); + }); +});