Some checks failed
CI / build-and-test (pull_request) Has been cancelled
- API: дата старта всегда YYYY-MM-DD; фронт: parseRaceDate без двойного T00:00:00 - GET /health с version из package.json; Vite define __FRONTEND_VERSION__ - Футер с версиями клиента/сервера (BEM), сетка app-shell на три ряда - AbortController для карточки старта; ретраи GET при 502–504 и понятные ошибки шлюза - Русские подписи навигации/страниц, lang=ru, без английских фраз в интерфейсе
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { test } from "node:test";
|
|
import request from "supertest";
|
|
import { createApp } from "../src/app";
|
|
|
|
const app = createApp();
|
|
|
|
test("GET /health returns ok", async () => {
|
|
const res = await request(app).get("/health").expect(200);
|
|
assert.equal(res.body.status, "ok");
|
|
assert.equal(typeof res.body.version, "string");
|
|
assert.ok(res.body.version.length > 0);
|
|
});
|
|
|
|
test("GET /ready succeeds with mock database", async () => {
|
|
const res = await request(app).get("/ready").expect(200);
|
|
assert.equal(res.body.status, "ready");
|
|
assert.equal(res.body.db, "connected");
|
|
});
|
|
|
|
test("GET /races rejects invalid year", async () => {
|
|
const res = await request(app).get("/races?year=bad").expect(400);
|
|
assert.equal(res.body.error, "validation_error");
|
|
assert.ok(Array.isArray(res.body.details));
|
|
});
|
|
|
|
test("GET /races rejects month out of range", async () => {
|
|
const res = await request(app).get("/races?month=13").expect(400);
|
|
assert.equal(res.body.error, "validation_error");
|
|
});
|
|
|
|
test("GET /races accepts year and month", async () => {
|
|
const res = await request(app).get("/races?year=2026&month=5").expect(200);
|
|
assert.ok(Array.isArray(res.body));
|
|
});
|
|
|
|
test("GET /races/:id returns not_found", async () => {
|
|
const res = await request(app).get("/races/does-not-exist").expect(404);
|
|
assert.equal(res.body.error, "not_found");
|
|
assert.ok(Array.isArray(res.body.details));
|
|
});
|