21 lines
1.5 KiB
JavaScript
21 lines
1.5 KiB
JavaScript
import assert from "node:assert/strict";
|
||
|
||
import { REPORT_RETRY_LIMIT, reportErrorMessage, reportRetryDelay, shouldRetryReport } from "../src/shared/api/report.mjs";
|
||
|
||
assert.equal(reportErrorMessage(403), "Отчёт недоступен: это занятие другого обучающегося.");
|
||
assert.equal(reportErrorMessage(409), "Оценка ещё не готова. Попробуйте получить разбор чуть позже.");
|
||
assert.equal(reportErrorMessage(500), "Не удалось получить отчёт (HTTP 500).");
|
||
assert.equal(reportErrorMessage(null), "Не удалось получить отчёт.", "сеть упала — статуса нет");
|
||
|
||
assert.equal(shouldRetryReport(0, 409), true, "оценка ещё считается — повторяем сами");
|
||
assert.equal(shouldRetryReport(REPORT_RETRY_LIMIT - 1, 409), true);
|
||
assert.equal(shouldRetryReport(REPORT_RETRY_LIMIT, 409), false, "число попыток ограничено");
|
||
assert.equal(shouldRetryReport(0, 403), false, "чужое занятие не станет своим — не повторяем");
|
||
assert.equal(shouldRetryReport(0, 404), false);
|
||
assert.equal(shouldRetryReport(0, 500), false);
|
||
|
||
assert.ok(reportRetryDelay(0) > 0);
|
||
assert.ok(reportRetryDelay(1) >= reportRetryDelay(0), "паузы не сокращаются");
|
||
assert.ok(reportRetryDelay(50) <= 5_000, "пауза ограничена сверху");
|
||
|
||
console.log("Session report: unified errors, 409 retried with a limit, 403 not retried.");
|