77 lines
3.6 KiB
TypeScript
77 lines
3.6 KiB
TypeScript
// @ts-nocheck
|
|
import { test, expect } from "playwright/test";
|
|
|
|
test.describe("database connection", () => {
|
|
test("tests the configured Local DB connection", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.locator("#settingsButton").click();
|
|
|
|
await expect(page.locator('input[name="databaseMode"][value="local"]')).toBeChecked();
|
|
await page.locator("#localDbHost").fill("127.0.0.1");
|
|
await page.locator("#localDbPort").fill("3306");
|
|
await page.locator("#localDbName").fill("9bplus");
|
|
await page.locator("#localDbUser").fill("root");
|
|
await page.locator("#localDbPassword").fill("root");
|
|
|
|
await page.locator("#testLocalDbButton").click();
|
|
await expect(page.locator("#localDbTestResult")).toContainText("Connected:");
|
|
});
|
|
|
|
test("keeps the scrape database as a separate local mode with its own permissions", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.locator("#settingsButton").click();
|
|
|
|
await expect(page.locator('input[name="databaseMode"][value="local"] + span')).toHaveText("Local 9bplus DB");
|
|
await expect(page.locator('input[name="databaseMode"][value="live"] + span')).toHaveText("Live 9bplus DB");
|
|
await page.locator('input[name="databaseMode"][value="scrape"]').check();
|
|
await expect(page.locator("#databaseModeNote")).toContainText("Local scrape DB selected");
|
|
await expect(page.locator("#allowInsertToggle")).toBeEnabled();
|
|
await expect(page.locator("#allowUpdateToggle")).toBeEnabled();
|
|
await expect(page.locator("#allowDeleteToggle")).toBeEnabled();
|
|
await page.locator("#allowUpdateToggle").check();
|
|
|
|
await page.reload();
|
|
await page.locator("#settingsButton").click();
|
|
await page.locator('input[name="databaseMode"][value="scrape"]').check();
|
|
await expect(page.locator("#allowUpdateToggle")).toBeChecked();
|
|
|
|
await page.locator('input[name="databaseMode"][value="local"]').check();
|
|
await expect(page.locator("#allowInsertToggle")).not.toBeChecked();
|
|
await expect(page.locator("#allowUpdateToggle")).not.toBeChecked();
|
|
await expect(page.locator("#allowDeleteToggle")).not.toBeChecked();
|
|
|
|
await page.locator('input[name="databaseMode"][value="live"]').check();
|
|
await expect(page.locator("#allowInsertToggle")).toBeDisabled();
|
|
await expect(page.locator("#allowUpdateToggle")).toBeDisabled();
|
|
await expect(page.locator("#allowDeleteToggle")).toBeDisabled();
|
|
});
|
|
|
|
test("loads manufacturers from Local DB without Live endpoint fallback", async ({ page }) => {
|
|
const manufacturersResponse = page.waitForResponse("**/api/manufacturers");
|
|
await page.goto("/");
|
|
|
|
const response = await manufacturersResponse;
|
|
expect(response.ok()).toBeTruthy();
|
|
const data = await response.json();
|
|
expect(data.items.length).toBeGreaterThan(0);
|
|
expect(data.items.some((item) => item.name === "La Sportiva")).toBeTruthy();
|
|
});
|
|
|
|
test("persists Local 9bplus write permissions across reloads", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.locator("#settingsButton").click();
|
|
await page.locator('input[name="databaseMode"][value="local"]').check();
|
|
await page.locator("#allowInsertToggle").check();
|
|
await page.locator("#allowUpdateToggle").check();
|
|
await page.locator("#allowDeleteToggle").check();
|
|
|
|
await page.reload();
|
|
await page.locator("#settingsButton").click();
|
|
|
|
await expect(page.locator('input[name="databaseMode"][value="local"]')).toBeChecked();
|
|
await expect(page.locator("#allowInsertToggle")).toBeChecked();
|
|
await expect(page.locator("#allowUpdateToggle")).toBeChecked();
|
|
await expect(page.locator("#allowDeleteToggle")).toBeChecked();
|
|
});
|
|
});
|