FactuGES_ERP/tests/e2e/support/e2e-contract.test.ts

81 lines
2.3 KiB
TypeScript
Raw Normal View History

import assert from "node:assert/strict";
import test from "node:test";
import {
E2E_API_BASE_PATH,
E2E_BACKEND_PORT,
E2E_DATABASE_PREFIX,
E2E_FRONTEND_URL,
assertOfficialE2EEnvironment,
assertOfficialE2EExecution,
resolveE2EExecutionMode,
} from "./e2e-contract.ts";
const officialEnvironment = {
NODE_ENV: "test",
DB_NAME: `${E2E_DATABASE_PREFIX}test`,
DB_SYNC_MODE: "none",
PORT: E2E_BACKEND_PORT,
API_BASE_PATH: E2E_API_BASE_PATH,
FRONTEND_URL: E2E_FRONTEND_URL,
};
test("el contrato oficial acepta la configuración E2E completa", () => {
assert.doesNotThrow(() => assertOfficialE2EEnvironment(officialEnvironment));
assert.doesNotThrow(() => assertOfficialE2EExecution(officialEnvironment));
});
test("el contrato oficial rechaza una base de datos no E2E", () => {
assert.throws(
() => assertOfficialE2EEnvironment({ ...officialEnvironment, DB_NAME: "factuges_erp" }),
/DB_NAME with prefix/
);
});
test("el contrato oficial rechaza un NODE_ENV distinto de test", () => {
assert.throws(
() => assertOfficialE2EEnvironment({ ...officialEnvironment, NODE_ENV: "development" }),
/NODE_ENV=test/
);
});
test("el contrato oficial rechaza sync o puerto distintos del contrato", () => {
assert.throws(
() => assertOfficialE2EEnvironment({ ...officialEnvironment, DB_SYNC_MODE: "force" }),
/DB_SYNC_MODE=none/
);
assert.throws(
() => assertOfficialE2EEnvironment({ ...officialEnvironment, PORT: "3000" }),
/PORT=3002/
);
});
test("el contrato oficial rechaza E2E_BASE_URL heredada", () => {
assert.throws(
() =>
assertOfficialE2EExecution({ ...officialEnvironment, E2E_BASE_URL: "https://example.test" }),
/does not accept E2E_BASE_URL/
);
});
test("el contrato oficial rechaza el modo externo heredado", () => {
assert.throws(
() => assertOfficialE2EExecution({ ...officialEnvironment, E2E_EXECUTION_MODE: "external" }),
/does not accept E2E_EXECUTION_MODE/
);
});
test("el modo externo requiere una URL absoluta y explícita", () => {
assert.throws(
() => resolveE2EExecutionMode({ E2E_EXECUTION_MODE: "external" }),
/requires E2E_BASE_URL/
);
assert.equal(
resolveE2EExecutionMode({
E2E_EXECUTION_MODE: "external",
E2E_BASE_URL: "https://e2e.example.test",
}),
"external"
);
});