mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-05-02 22:43:57 +01:00
* fix partition key missing not being able to load the document * Implement E2E tests for documents with different partitionkeys * Implement E2E tests for documents with different partitionkeys * Implement E2E tests for documents with different partitionkeys * Updated snapshot * Updated tests for MongoRU and add create/delete tests * Fixing system partition key showing up in Data Explorer
90 lines
3.8 KiB
TypeScript
90 lines
3.8 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
import { DataExplorer, DocumentsTab, TestAccount } from "../fx";
|
|
import { retry, serializeMongoToJson, setPartitionKeys } from "../testData";
|
|
import { documentTestCases } from "./testCases";
|
|
|
|
let explorer: DataExplorer = null!;
|
|
let documentsTab: DocumentsTab = null!;
|
|
|
|
for (const { name, databaseId, containerId, documents } of documentTestCases) {
|
|
test.describe(`Test MongoRU Documents with ${name}`, () => {
|
|
test.beforeEach("Open documents tab", async ({ page }) => {
|
|
explorer = await DataExplorer.open(page, TestAccount.MongoReadonly);
|
|
|
|
const containerNode = await explorer.waitForContainerNode(databaseId, containerId);
|
|
await containerNode.expand();
|
|
|
|
const containerMenuNode = await explorer.waitForContainerDocumentsNode(databaseId, containerId);
|
|
await containerMenuNode.element.click();
|
|
|
|
documentsTab = explorer.documentsTab("tab0");
|
|
|
|
await documentsTab.documentsFilter.waitFor();
|
|
await documentsTab.documentsListPane.waitFor();
|
|
await expect(documentsTab.resultsEditor.locator).toBeAttached({ timeout: 60 * 1000 });
|
|
});
|
|
|
|
for (const document of documents) {
|
|
const { documentId: docId, partitionKeys } = document;
|
|
test.describe(`Document ID: ${docId}`, () => {
|
|
test(`should load and view document ${docId}`, async () => {
|
|
const span = documentsTab.documentsListPane.getByText(docId, { exact: true }).nth(0);
|
|
await span.waitFor();
|
|
await expect(span).toBeVisible();
|
|
|
|
await span.click();
|
|
await expect(documentsTab.resultsEditor.locator).toBeAttached({ timeout: 60 * 1000 });
|
|
|
|
const resultText = await documentsTab.resultsEditor.text();
|
|
const resultData = serializeMongoToJson(resultText!);
|
|
expect(resultText).not.toBeNull();
|
|
expect(resultData?._id).not.toBeNull();
|
|
expect(resultData?._id).toEqual(docId);
|
|
});
|
|
test(`should be able to create and delete new document from ${docId}`, async () => {
|
|
const span = documentsTab.documentsListPane.getByText(docId, { exact: true }).nth(0);
|
|
await span.waitFor();
|
|
await expect(span).toBeVisible();
|
|
|
|
await span.click();
|
|
let newDocumentId;
|
|
await retry(async () => {
|
|
const newDocumentButton = await explorer.waitForCommandBarButton("New Document", 5000);
|
|
await expect(newDocumentButton).toBeVisible();
|
|
await expect(newDocumentButton).toBeEnabled();
|
|
await newDocumentButton.click();
|
|
|
|
await expect(documentsTab.resultsEditor.locator).toBeAttached({ timeout: 60 * 1000 });
|
|
|
|
newDocumentId = `${Date.now().toString()}-delete`;
|
|
|
|
const newDocument = {
|
|
_id: newDocumentId,
|
|
...setPartitionKeys(partitionKeys || []),
|
|
};
|
|
|
|
await documentsTab.resultsEditor.setText(JSON.stringify(newDocument));
|
|
const saveButton = await explorer.waitForCommandBarButton("Save", 5000);
|
|
await saveButton.click({ timeout: 5000 });
|
|
}, 3);
|
|
|
|
const newSpan = documentsTab.documentsListPane.getByText(newDocumentId, { exact: true }).nth(0);
|
|
await newSpan.waitFor();
|
|
await newSpan.click();
|
|
await expect(documentsTab.resultsEditor.locator).toBeAttached({ timeout: 60 * 1000 });
|
|
|
|
const deleteButton = await explorer.waitForCommandBarButton("Delete", 5000);
|
|
await deleteButton.click();
|
|
|
|
const deleteDialogButton = await explorer.waitForDialogButton("Delete", 5000);
|
|
await deleteDialogButton.click();
|
|
|
|
const deletedSpan = documentsTab.documentsListPane.getByText(newDocumentId, { exact: true }).nth(0);
|
|
await expect(deletedSpan).toHaveCount(0);
|
|
});
|
|
});
|
|
}
|
|
});
|
|
}
|