39 lines
1.7 KiB
JavaScript
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/);
|
|
});
|