mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-09 12:36:42 +00:00
81 lines
3.0 KiB
TypeScript
81 lines
3.0 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import { CommandBarButton, DataExplorer, ONE_MINUTE_MS, TestAccount } from "../../fx";
|
|
import { createTestSQLContainer, TestContainerContext } from "../../testData";
|
|
|
|
test.describe("Triggers", () => {
|
|
let context: TestContainerContext = null!;
|
|
let explorer: DataExplorer = null!;
|
|
const triggerBody = `function validateToDoItemTimestamp() {
|
|
var context = getContext();
|
|
var request = context.getRequest();
|
|
|
|
var itemToCreate = request.getBody();
|
|
|
|
if (!("timestamp" in itemToCreate)) {
|
|
var ts = new Date();
|
|
itemToCreate["timestamp"] = ts.getTime();
|
|
}
|
|
|
|
request.setBody(itemToCreate);
|
|
}`;
|
|
test.beforeAll("Create Test Database", async () => {
|
|
context = await createTestSQLContainer();
|
|
});
|
|
|
|
test.beforeEach("Open container", async ({ page }) => {
|
|
explorer = await DataExplorer.open(page, TestAccount.SQL);
|
|
});
|
|
|
|
if (!process.env.CI) {
|
|
test.afterAll("Delete Test Database", async () => {
|
|
await context?.dispose();
|
|
});
|
|
}
|
|
|
|
test("Add and delete trigger", async ({ page }) => {
|
|
// Open container context menu and click New Trigger
|
|
const containerNode = await explorer.waitForContainerNode(context.database.id, context.container.id);
|
|
await containerNode.openContextMenu();
|
|
await containerNode.contextMenuItem("New Trigger").click();
|
|
|
|
// Assign Trigger id
|
|
const triggerIdTextBox = explorer.frame.getByLabel("Trigger Id");
|
|
const triggerId: string = "validateItemTimestamp";
|
|
await triggerIdTextBox.fill(triggerId);
|
|
|
|
// Create Trigger body that validates item timestamp
|
|
const triggerBodyTextArea = explorer.frame.getByTestId("EditorReact/Host/Loaded");
|
|
await triggerBodyTextArea.click();
|
|
|
|
// Clear existing content
|
|
const isMac: boolean = process.platform === "darwin";
|
|
await page.keyboard.press(isMac ? "Meta+A" : "Control+A");
|
|
await page.keyboard.press("Backspace");
|
|
|
|
await page.keyboard.type(triggerBody);
|
|
|
|
// Save changes
|
|
const saveButton = explorer.commandBarButton(CommandBarButton.Save);
|
|
await saveButton.click();
|
|
await expect(explorer.getConsoleHeaderStatus()).toContainText(`Successfully created trigger ${triggerId}`, {
|
|
timeout: 2 * ONE_MINUTE_MS,
|
|
});
|
|
|
|
// Delete Trigger
|
|
await containerNode.expand();
|
|
const triggersNode = await explorer.waitForNode(`${context.database.id}/${context.container.id}/Triggers`);
|
|
await triggersNode.expand();
|
|
const triggerNode = await explorer.waitForNode(
|
|
`${context.database.id}/${context.container.id}/Triggers/${triggerId}`,
|
|
);
|
|
|
|
await triggerNode.openContextMenu();
|
|
await triggerNode.contextMenuItem("Delete Trigger").click();
|
|
const deleteTriggerButton = explorer.frame.getByTestId("DialogButton:Delete");
|
|
await deleteTriggerButton.click();
|
|
await expect(explorer.getConsoleHeaderStatus()).toContainText(`Successfully deleted trigger ${triggerId}`, {
|
|
timeout: ONE_MINUTE_MS,
|
|
});
|
|
});
|
|
});
|