mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-01-18 19:25:26 +00:00
95 lines
3.7 KiB
TypeScript
95 lines
3.7 KiB
TypeScript
// Dialog Unit Tests
|
|
import { beforeAll, describe, expect, it } from "vitest";
|
|
import { commands } from "vitest/browser";
|
|
|
|
import { generateHarness, waitForIdle, waitForReady, type LiveSyncHarness } from "../harness/harness";
|
|
import { ChunkAlgorithms, DEFAULT_SETTINGS, type ObsidianLiveSyncSettings } from "@/lib/src/common/types";
|
|
|
|
import { DummyFileSourceInisialised } from "../utils/dummyfile";
|
|
|
|
import { page } from "vitest/browser";
|
|
import { DoctorRegulation } from "@/lib/src/common/configForDoc";
|
|
import { waitForDialogHidden, waitForDialogShown } from "../lib/ui";
|
|
const env = (import.meta as any).env;
|
|
const dialog_setting_base = {
|
|
...DEFAULT_SETTINGS,
|
|
isConfigured: true,
|
|
handleFilenameCaseSensitive: false,
|
|
couchDB_URI: `${env.hostname}`,
|
|
couchDB_DBNAME: `${env.dbname}`,
|
|
couchDB_USER: `${env.username}`,
|
|
couchDB_PASSWORD: `${env.password}`,
|
|
bucket: `${env.bucketName}`,
|
|
region: "us-east-1",
|
|
endpoint: `${env.minioEndpoint}`,
|
|
accessKey: `${env.accessKey}`,
|
|
secretKey: `${env.secretKey}`,
|
|
useCustomRequestHandler: true,
|
|
forcePathStyle: true,
|
|
bucketPrefix: "",
|
|
usePluginSyncV2: true,
|
|
chunkSplitterVersion: ChunkAlgorithms.RabinKarp,
|
|
doctorProcessedVersion: DoctorRegulation.version,
|
|
notifyThresholdOfRemoteStorageSize: 800,
|
|
} as ObsidianLiveSyncSettings;
|
|
|
|
function checkDialogVisibility(dialogText: string, shouldBeVisible: boolean): void {
|
|
const dialog = page.getByText(dialogText);
|
|
expect(dialog).toHaveClass(/modal-title/);
|
|
if (!shouldBeVisible) {
|
|
expect(dialog).not.toBeVisible();
|
|
} else {
|
|
expect(dialog).toBeVisible();
|
|
}
|
|
return;
|
|
}
|
|
function checkDialogShown(dialogText: string) {
|
|
checkDialogVisibility(dialogText, true);
|
|
}
|
|
function checkDialogHidden(dialogText: string) {
|
|
checkDialogVisibility(dialogText, false);
|
|
}
|
|
|
|
describe("Dialog Tests", async () => {
|
|
// describe.each(cases)("Replication Tests - Remote: $setting.remoteType, E2EE: $setting.encrypt", ({ setting }) => {
|
|
const setting = dialog_setting_base;
|
|
beforeAll(async () => {
|
|
await DummyFileSourceInisialised;
|
|
await commands.grantClipboardPermissions();
|
|
});
|
|
let harness: LiveSyncHarness;
|
|
const vaultName = "TestVault" + Date.now();
|
|
beforeAll(async () => {
|
|
harness = await generateHarness(vaultName, setting);
|
|
await waitForReady(harness);
|
|
expect(harness.plugin).toBeDefined();
|
|
expect(harness.plugin.app).toBe(harness.app);
|
|
await waitForIdle(harness);
|
|
});
|
|
it("should show copy to clipboard dialog and confirm", async () => {
|
|
const testString = "This is a test string to copy to clipboard.";
|
|
const title = "Copy Test";
|
|
const result = harness.plugin.services.UI.promptCopyToClipboard(title, testString);
|
|
const isDialogShown = await waitForDialogShown(title, 500);
|
|
expect(isDialogShown).toBe(true);
|
|
const copyButton = page.getByText("📋");
|
|
expect(copyButton).toBeDefined();
|
|
expect(copyButton).toBeVisible();
|
|
await copyButton.click();
|
|
const copyResultButton = page.getByText("✔️");
|
|
expect(copyResultButton).toBeDefined();
|
|
expect(copyResultButton).toBeVisible();
|
|
const clipboardText = await navigator.clipboard.readText();
|
|
expect(clipboardText).toBe(testString);
|
|
const okButton = page.getByText("OK");
|
|
expect(okButton).toBeDefined();
|
|
expect(okButton).toBeVisible();
|
|
await okButton.click();
|
|
const resultValue = await result;
|
|
expect(resultValue).toBe(true);
|
|
// Check that the dialog is closed
|
|
const isDialogHidden = await waitForDialogHidden(title, 500);
|
|
expect(isDialogHidden).toBe(true);
|
|
});
|
|
});
|