mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 04:12:09 +00:00
fix(ci): fix login e2e session mock and prettier formatting
This commit is contained in:
parent
c7787bda98
commit
3b39b858c1
2 changed files with 123 additions and 32 deletions
|
|
@ -6,8 +6,17 @@ const TEST_USER = {
|
|||
name: "Test User",
|
||||
};
|
||||
|
||||
async function mockUnauthenticatedSession(page: Page) {
|
||||
async function mockSession(page: Page, isAuthenticated: () => boolean = () => false) {
|
||||
await page.route("**/api/Authentication/GetCurrentUser", async (route) => {
|
||||
if (isAuthenticated()) {
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify({ data: TEST_USER }),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
await route.fulfill({
|
||||
status: 401,
|
||||
contentType: "application/json",
|
||||
|
|
@ -35,7 +44,7 @@ async function mockDashboardStats(page: Page) {
|
|||
|
||||
test.describe("Login page", () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await mockUnauthenticatedSession(page);
|
||||
await mockSession(page);
|
||||
await mockDashboardStats(page);
|
||||
});
|
||||
|
||||
|
|
@ -77,7 +86,13 @@ test.describe("Login page", () => {
|
|||
});
|
||||
|
||||
test("logs in successfully and navigates to dashboard", async ({ page }) => {
|
||||
let authenticated = false;
|
||||
|
||||
await page.unroute("**/api/Authentication/GetCurrentUser");
|
||||
await mockSession(page, () => authenticated);
|
||||
|
||||
await page.route("**/api/Authentication/Login", async (route) => {
|
||||
authenticated = true;
|
||||
await route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
|
|
|
|||
|
|
@ -32,9 +32,7 @@ function toDefaultExport(content, exportName) {
|
|||
`export default function ${exportName}`,
|
||||
);
|
||||
}
|
||||
return result
|
||||
.replace(/^export \{ ([A-Za-z]+) as default \} from .+;\s*$/m, "")
|
||||
.trimEnd() + "\n";
|
||||
return result.replace(/^export \{ ([A-Za-z]+) as default \} from .+;\s*$/m, "").trimEnd() + "\n";
|
||||
}
|
||||
|
||||
function copyRoutesTree() {
|
||||
|
|
@ -58,7 +56,13 @@ function updateProtectedLayout() {
|
|||
write(layoutPath, content);
|
||||
}
|
||||
|
||||
function mergePage(sourceRel, destRel, exportName, importReplacements = [], { namedOnly = false } = {}) {
|
||||
function mergePage(
|
||||
sourceRel,
|
||||
destRel,
|
||||
exportName,
|
||||
importReplacements = [],
|
||||
{ namedOnly = false } = {},
|
||||
) {
|
||||
const source = path.join(app, sourceRel);
|
||||
if (!fs.existsSync(source)) {
|
||||
console.warn("Missing source:", sourceRel);
|
||||
|
|
@ -87,7 +91,7 @@ function writeReExport(destRel, componentPath, { nestedEdit = false } = {}) {
|
|||
write(path.join(src, "app-root.tsx"), read(path.join(app, "app-root.tsx")));
|
||||
|
||||
let main = read(path.join(src, "main.tsx"));
|
||||
main = main.replace('@/app/app-root', '@/app-root');
|
||||
main = main.replace("@/app/app-root", "@/app-root");
|
||||
write(path.join(src, "main.tsx"), main);
|
||||
|
||||
let vite = read(path.join(root, "vite.config.ts"));
|
||||
|
|
@ -106,29 +110,57 @@ updateProtectedLayout();
|
|||
|
||||
// --- accounts pilot ---
|
||||
mergePage("accounts/accounts-list-page.tsx", "(protected)/accounts/index.tsx", "AccountsListPage");
|
||||
mergePage("accounts/account-form-page.tsx", "(protected)/accounts/_components/account-form.tsx", "AccountFormPage");
|
||||
mergePage(
|
||||
"accounts/account-form-page.tsx",
|
||||
"(protected)/accounts/_components/account-form.tsx",
|
||||
"AccountFormPage",
|
||||
);
|
||||
writeReExport("(protected)/accounts/new.tsx", "./_components/account-form");
|
||||
writeReExport("(protected)/accounts/edit/[id].tsx", "./_components/account-form");
|
||||
|
||||
// --- contacts, employees, locations ---
|
||||
mergePage("contacts/contacts-list-page.tsx", "(protected)/contacts/index.tsx", "ContactsListPage");
|
||||
mergePage("contacts/contact-form-page.tsx", "(protected)/contacts/_components/contact-form.tsx", "ContactFormPage");
|
||||
mergePage(
|
||||
"contacts/contact-form-page.tsx",
|
||||
"(protected)/contacts/_components/contact-form.tsx",
|
||||
"ContactFormPage",
|
||||
);
|
||||
writeReExport("(protected)/contacts/new.tsx", "./_components/contact-form");
|
||||
writeReExport("(protected)/contacts/edit/[id].tsx", "./_components/contact-form");
|
||||
|
||||
mergePage("employees/employees-list-page.tsx", "(protected)/employees/index.tsx", "EmployeesListPage");
|
||||
mergePage("employees/employee-form-page.tsx", "(protected)/employees/_components/employee-form.tsx", "EmployeeFormPage");
|
||||
mergePage(
|
||||
"employees/employees-list-page.tsx",
|
||||
"(protected)/employees/index.tsx",
|
||||
"EmployeesListPage",
|
||||
);
|
||||
mergePage(
|
||||
"employees/employee-form-page.tsx",
|
||||
"(protected)/employees/_components/employee-form.tsx",
|
||||
"EmployeeFormPage",
|
||||
);
|
||||
writeReExport("(protected)/employees/new.tsx", "./_components/employee-form");
|
||||
writeReExport("(protected)/employees/edit/[id].tsx", "./_components/employee-form");
|
||||
|
||||
mergePage("locations/locations-list-page.tsx", "(protected)/locations/index.tsx", "LocationsListPage");
|
||||
mergePage("locations/location-form-page.tsx", "(protected)/locations/_components/location-form.tsx", "LocationFormPage");
|
||||
mergePage(
|
||||
"locations/locations-list-page.tsx",
|
||||
"(protected)/locations/index.tsx",
|
||||
"LocationsListPage",
|
||||
);
|
||||
mergePage(
|
||||
"locations/location-form-page.tsx",
|
||||
"(protected)/locations/_components/location-form.tsx",
|
||||
"LocationFormPage",
|
||||
);
|
||||
writeReExport("(protected)/locations/new.tsx", "./_components/location-form");
|
||||
writeReExport("(protected)/locations/edit/[id].tsx", "./_components/location-form");
|
||||
|
||||
// --- assets, vendors, followups, pmschedules ---
|
||||
mergePage("assets/assets-list-page.tsx", "(protected)/assets/index.tsx", "AssetsListPage");
|
||||
mergePage("assets/asset-form-page.tsx", "(protected)/assets/_components/asset-form.tsx", "AssetFormPage");
|
||||
mergePage(
|
||||
"assets/asset-form-page.tsx",
|
||||
"(protected)/assets/_components/asset-form.tsx",
|
||||
"AssetFormPage",
|
||||
);
|
||||
writeReExport("(protected)/assets/new.tsx", "./_components/asset-form");
|
||||
writeReExport("(protected)/assets/edit/[id].tsx", "./_components/asset-form");
|
||||
|
||||
|
|
@ -146,29 +178,65 @@ copyFile(
|
|||
writeReExport("(protected)/vendors/new.tsx", "./_components/vendor-form");
|
||||
writeReExport("(protected)/vendors/edit/[id].tsx", "./_components/vendor-form");
|
||||
|
||||
mergePage("follow-ups/follow-ups-list-page.tsx", "(protected)/followups/index.tsx", "FollowUpsListPage");
|
||||
mergePage("follow-ups/follow-up-form-page.tsx", "(protected)/followups/_components/follow-up-form.tsx", "FollowUpFormPage");
|
||||
mergePage(
|
||||
"follow-ups/follow-ups-list-page.tsx",
|
||||
"(protected)/followups/index.tsx",
|
||||
"FollowUpsListPage",
|
||||
);
|
||||
mergePage(
|
||||
"follow-ups/follow-up-form-page.tsx",
|
||||
"(protected)/followups/_components/follow-up-form.tsx",
|
||||
"FollowUpFormPage",
|
||||
);
|
||||
writeReExport("(protected)/followups/new.tsx", "./_components/follow-up-form");
|
||||
writeReExport("(protected)/followups/edit/[id].tsx", "./_components/follow-up-form");
|
||||
|
||||
mergePage("pm-schedules/pm-schedules-list-page.tsx", "(protected)/pmschedules/index.tsx", "PmSchedulesListPage");
|
||||
mergePage("pm-schedules/pm-schedule-form-page.tsx", "(protected)/pmschedules/_components/pm-schedule-form.tsx", "PmScheduleFormPage");
|
||||
mergePage(
|
||||
"pm-schedules/pm-schedules-list-page.tsx",
|
||||
"(protected)/pmschedules/index.tsx",
|
||||
"PmSchedulesListPage",
|
||||
);
|
||||
mergePage(
|
||||
"pm-schedules/pm-schedule-form-page.tsx",
|
||||
"(protected)/pmschedules/_components/pm-schedule-form.tsx",
|
||||
"PmScheduleFormPage",
|
||||
);
|
||||
writeReExport("(protected)/pmschedules/new.tsx", "./_components/pm-schedule-form");
|
||||
writeReExport("(protected)/pmschedules/edit/[id].tsx", "./_components/pm-schedule-form");
|
||||
|
||||
// --- calendar, uplifts, vendor-pos, settings, dashboard, login ---
|
||||
mergePage("calendar/calendar-page.tsx", "(protected)/calendar/index.tsx", "CalendarPage");
|
||||
mergePage("calendar/event-form-page.tsx", "(protected)/calendar/_components/event-form.tsx", "EventFormPage");
|
||||
mergePage(
|
||||
"calendar/event-form-page.tsx",
|
||||
"(protected)/calendar/_components/event-form.tsx",
|
||||
"EventFormPage",
|
||||
);
|
||||
writeReExport("(protected)/calendar/new.tsx", "./_components/event-form");
|
||||
writeReExport("(protected)/calendar/edit/[id].tsx", "./_components/event-form");
|
||||
|
||||
mergePage("uplifts/uplift-queue-page.tsx", "(protected)/uplifts/index.tsx", "UpliftQueuePage");
|
||||
|
||||
mergePage("vendor-pos/vendor-pos-list-page.tsx", "(protected)/vendor-pos/index.tsx", "VendorPosListPage");
|
||||
mergePage("vendor-pos/vendor-po-view-page.tsx", "(protected)/vendor-pos/[id].tsx", "VendorPoViewPage");
|
||||
mergePage(
|
||||
"vendor-pos/vendor-pos-list-page.tsx",
|
||||
"(protected)/vendor-pos/index.tsx",
|
||||
"VendorPosListPage",
|
||||
);
|
||||
mergePage(
|
||||
"vendor-pos/vendor-po-view-page.tsx",
|
||||
"(protected)/vendor-pos/[id].tsx",
|
||||
"VendorPoViewPage",
|
||||
);
|
||||
|
||||
mergePage("settings/dropdown-options-page.tsx", "(protected)/settings/dropdowns.tsx", "DropdownOptionsPage");
|
||||
mergePage("settings/task-templates-page.tsx", "(protected)/settings/task-templates.tsx", "TaskTemplatesPage");
|
||||
mergePage(
|
||||
"settings/dropdown-options-page.tsx",
|
||||
"(protected)/settings/dropdowns.tsx",
|
||||
"DropdownOptionsPage",
|
||||
);
|
||||
mergePage(
|
||||
"settings/task-templates-page.tsx",
|
||||
"(protected)/settings/task-templates.tsx",
|
||||
"TaskTemplatesPage",
|
||||
);
|
||||
|
||||
mergePage("dashboard/dashboard-page.tsx", "(protected)/index.tsx", "DashboardPage");
|
||||
mergePage("dashboard/dashboard-page.tsx", "(protected)/dashboard.tsx", "DashboardPage");
|
||||
|
|
@ -176,8 +244,16 @@ mergePage("dashboard/dashboard-page.tsx", "(protected)/dashboard.tsx", "Dashboar
|
|||
mergePage("login/login-page.tsx", "(auth)/login.tsx", "LoginPage");
|
||||
|
||||
// --- workorders ---
|
||||
mergePage("work-orders/work-orders-list-page.tsx", "(protected)/workorders/index.tsx", "WorkOrdersListPage");
|
||||
mergePage("work-orders/work-order-form-page.tsx", "(protected)/workorders/_components/work-order-form.tsx", "WorkOrderFormPage");
|
||||
mergePage(
|
||||
"work-orders/work-orders-list-page.tsx",
|
||||
"(protected)/workorders/index.tsx",
|
||||
"WorkOrdersListPage",
|
||||
);
|
||||
mergePage(
|
||||
"work-orders/work-order-form-page.tsx",
|
||||
"(protected)/workorders/_components/work-order-form.tsx",
|
||||
"WorkOrderFormPage",
|
||||
);
|
||||
writeReExport("(protected)/workorders/new.tsx", "./_components/work-order-form");
|
||||
writeReExport("(protected)/workorders/edit/[id].tsx", "./_components/work-order-form");
|
||||
mergePage(
|
||||
|
|
@ -211,7 +287,10 @@ fs.copyFileSync(
|
|||
|
||||
let vpLayout = read(path.join(app, "vendor-portal/vendor-portal-layout.tsx"));
|
||||
vpLayout = vpLayout
|
||||
.replace("@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider")
|
||||
.replace(
|
||||
"@/app/vendor-portal/vendor-portal-provider",
|
||||
"@/app/v/_components/vendor-portal-provider",
|
||||
)
|
||||
.replace("@/app/vendor-portal/vendor-portal.css", "@/app/v/_components/vendor-portal.css")
|
||||
.replace("export function VendorPortalLayout", "export default function VendorPortalLayout");
|
||||
write(path.join(app, "v", "[token]", "_layout.tsx"), vpLayout);
|
||||
|
|
@ -222,12 +301,9 @@ mergePage(
|
|||
"VendorPortalDashboardPage",
|
||||
[["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"]],
|
||||
);
|
||||
mergePage(
|
||||
"vendor-portal/vendor-portal-pos-page.tsx",
|
||||
"v/[token]/pos.tsx",
|
||||
"VendorPortalPosPage",
|
||||
[["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"]],
|
||||
);
|
||||
mergePage("vendor-portal/vendor-portal-pos-page.tsx", "v/[token]/pos.tsx", "VendorPortalPosPage", [
|
||||
["@/app/vendor-portal/vendor-portal-provider", "@/app/v/_components/vendor-portal-provider"],
|
||||
]);
|
||||
mergePage(
|
||||
"vendor-portal/vendor-portal-dispatch-page.tsx",
|
||||
"v/[token]/dispatch/[id].tsx",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue