53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
// Basic tests for backend API
|
|
const request = require('supertest');
|
|
const app = require('../src/server');
|
|
|
|
describe('Backend API Tests', () => {
|
|
// Health check tests
|
|
describe('GET /health', () => {
|
|
it('should return 200 and status ok', async () => {
|
|
const res = await request(app).get('/health');
|
|
expect(res.statusCode).toBe(200);
|
|
expect(res.body).toHaveProperty('status', 'ok');
|
|
});
|
|
});
|
|
|
|
// Readiness check tests
|
|
describe('GET /ready', () => {
|
|
it('should return readiness status', async () => {
|
|
const res = await request(app).get('/ready');
|
|
expect([200, 503]).toContain(res.statusCode);
|
|
expect(res.body).toHaveProperty('status');
|
|
expect(res.body).toHaveProperty('database');
|
|
});
|
|
});
|
|
|
|
// 404 handler test
|
|
describe('GET /nonexistent', () => {
|
|
it('should return 404 for unknown routes', async () => {
|
|
const res = await request(app).get('/nonexistent');
|
|
expect(res.statusCode).toBe(404);
|
|
expect(res.body).toHaveProperty('error');
|
|
});
|
|
});
|
|
|
|
// Items API tests
|
|
describe('POST /api/items', () => {
|
|
it('should reject invalid item data', async () => {
|
|
const res = await request(app)
|
|
.post('/api/items')
|
|
.send({ name: '', quantity: -1, price: 'invalid' });
|
|
|
|
expect(res.statusCode).toBe(400);
|
|
expect(res.body).toHaveProperty('errors');
|
|
});
|
|
|
|
it('should reject missing required fields', async () => {
|
|
const res = await request(app)
|
|
.post('/api/items')
|
|
.send({ quantity: 10 });
|
|
|
|
expect(res.statusCode).toBe(400);
|
|
});
|
|
});
|
|
}); |