mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-05-17 04:51:17 +00:00
Tests:
- More tests have been added.
This commit is contained in:
94
test/unit/dialog.test.ts
Normal file
94
test/unit/dialog.test.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
// 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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user