Files
pleno-vue/tests/unit/table-standards-contract.spec.js
T
Jeppe Bundgaard b39b458f4f Add .prettierrc.json and refactor test files for improved formatting consistency:
- Introduced `.prettierrc.json` to enforce consistent code formatting across the project.
- Updated unit and e2e test files to address formatting issues, improve readability, and ensure alignment with the new Prettier configuration.
2026-04-13 09:13:27 +02:00

65 lines
2.6 KiB
JavaScript

import { readdirSync, readFileSync, statSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "vitest";
const root = process.cwd();
const paginationModelsRoot = join(root, "src/components/displays/pagination/models");
const paginationGeneralSearchSource = readFileSync(
join(root, "src/components/displays/pagination/PaginationDisplayGeneralSearchReload.vue"),
"utf8"
);
const mainSource = readFileSync(join(root, "src/main.js"), "utf8");
const userOrdersPaginationSource = readFileSync(
join(root, "src/components/displays/pagination/models/UserDashboard/OrdersPagination.vue"),
"utf8"
);
const collectVueFiles = (dir) => {
const entries = readdirSync(dir);
return entries.flatMap((entry) => {
const fullPath = join(dir, entry);
const stats = statSync(fullPath);
if (stats.isDirectory()) {
return collectVueFiles(fullPath);
}
if (entry.endsWith(".vue")) {
return [fullPath];
}
return [];
});
};
describe("table standards contract", () => {
it("keeps pagination model templates free from legacy raw <table> markup", () => {
const vueFiles = collectVueFiles(paginationModelsRoot);
const filesWithRawTableMarkup = vueFiles.filter((filePath) => {
const source = readFileSync(filePath, "utf8");
return source.includes("<table");
});
expect(filesWithRawTableMarkup).toEqual([]);
});
it("exposes a shared excel export action in the opdater dropdown controls", () => {
expect(paginationGeneralSearchSource).toContain("pagination.download_excel");
expect(paginationGeneralSearchSource).toContain("handleExportExcel");
expect(paginationGeneralSearchSource).toContain("exportToExcel");
expect(paginationGeneralSearchSource).toContain("toggleActionDropdown");
expect(paginationGeneralSearchSource).toContain("action-dropdown-main");
expect(paginationGeneralSearchSource).toContain("action-dropdown-toggle");
});
it("initializes automatic visible-row export hooks for legacy non-paginated tables", () => {
expect(mainSource).toContain("initializeAutoTableExports");
expect(mainSource).toContain("initializeAutoTableExports()");
});
it("uses excel export for historical washes instead of legacy csv download", () => {
expect(userOrdersPaginationSource).toContain("setExportTransform");
expect(userOrdersPaginationSource).toContain("clearExportTransform");
expect(userOrdersPaginationSource).not.toContain("exportCsvFile");
expect(userOrdersPaginationSource).not.toContain("orders.csv");
expect(userOrdersPaginationSource).not.toContain('@click="downloadExcel"');
});
});