Origit Console
main payments-api/src/routes.test.ts
43 lines · 1237 bytes sha256 818f31939d373ccfc393 hours ago
import request from 'supertest';
import { createApp } from './index';
import * as store from './store';

const app = createApp();

beforeEach(() => {
  store.clear();
});

const validBody = {
  merchantId: 'm_demo_001',
  amountMinor: 1000,
  currency: 'EUR',
  pan: '4111111111111111',
};

test('GET /health returns ok', async () => {
  const res = await request(app).get('/health');
  expect(res.status).toBe(200);
  expect(res.body).toEqual({ ok: true });
});

test('POST /payments returns 201 with id', async () => {
  const res = await request(app).post('/payments').send(validBody);
  expect(res.status).toBe(201);
  expect(res.body).toHaveProperty('id');
  expect(typeof res.body.id).toBe('string');
});

test('GET /payments/:id returns the payment', async () => {
  const created = await request(app).post('/payments').send(validBody);
  const id = created.body.id as string;
  const res = await request(app).get(`/payments/${id}`);
  expect(res.status).toBe(200);
  expect(res.body.id).toBe(id);
  expect(res.body.merchantId).toBe(validBody.merchantId);
});

test('GET /payments/:id returns 404 for unknown id', async () => {
  const res = await request(app).get('/payments/does-not-exist');
  expect(res.status).toBe(404);
});