Validation_Suite/validation-suite/frontend/atlas/tests/customer-import.test.mjs

39 lines
1.7 KiB
JavaScript

import assert from "node:assert/strict";
import fs from "node:fs";
import path from "node:path";
import test from "node:test";
const page = fs.readFileSync(path.resolve("app/(app)/customers/import/page.tsx"), "utf8");
const shell = fs.readFileSync(path.resolve("components/app-shell.tsx"), "utf8");
const previewBff = fs.readFileSync(path.resolve("app/api/customer-imports/preview/route.ts"), "utf8");
const confirmBff = fs.readFileSync(path.resolve("app/api/customer-imports/confirm/route.ts"), "utf8");
test("customer import is admin-only and present in navigation", () => {
assert.match(shell, /href: "\/customers\/import"/);
assert.match(shell, /label: "Kunden importieren"/);
assert.match(shell, /adminOnly: true/);
assert.match(shell, /href === "\/customers"/);
assert.match(page, /user\?\.role !== "admin"/);
});
test("customer import page implements upload mapping preview and confirm", () => {
assert.match(page, /accept="\.csv,\.xlsx/);
assert.match(page, /Vorschau vorbereiten/);
assert.match(page, /Spalten zuordnen/);
assert.match(page, /preview\.target_fields/);
assert.match(page, /Importvorschau prüfen/);
assert.match(page, /Mögliche Dubletten/);
assert.match(page, /Kunden jetzt importieren/);
assert.match(page, /ignore_empty_values/);
assert.match(page, /row_actions/);
});
test("customer import BFF forwards multipart through HttpOnly cookie", () => {
for (const source of [previewBff, confirmBff]) {
assert.match(source, /AUTH_COOKIE_NAME/);
assert.match(source, /Authorization: `Bearer \$\{token\}`/);
assert.match(source, /request\.formData\(\)/);
}
assert.match(previewBff, /\/customer-imports\/preview/);
assert.match(confirmBff, /\/customer-imports\/confirm/);
});