mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2024-12-02 02:17:01 +00:00
159 lines
4.6 KiB
TypeScript
159 lines
4.6 KiB
TypeScript
import * as ko from "knockout";
|
|
import { DatabaseAccount } from "../../Contracts/DataModels";
|
|
import * as ViewModels from "../../Contracts/ViewModels";
|
|
import { updateUserContext } from "../../UserContext";
|
|
import Explorer from "../Explorer";
|
|
import DocumentId from "../Tree/DocumentId";
|
|
import DocumentsTab from "./DocumentsTab";
|
|
|
|
describe("Documents tab", () => {
|
|
describe("buildQuery", () => {
|
|
it("should generate the right select query for SQL API", () => {
|
|
const documentsTab = new DocumentsTab({
|
|
partitionKey: null,
|
|
documentIds: ko.observableArray<DocumentId>(),
|
|
tabKind: ViewModels.CollectionTabKind.Documents,
|
|
title: "",
|
|
tabPath: "",
|
|
hashLocation: "",
|
|
});
|
|
|
|
expect(documentsTab.buildQuery("")).toContain("select");
|
|
});
|
|
});
|
|
|
|
describe("showPartitionKey", () => {
|
|
const explorer = new Explorer();
|
|
const mongoExplorer = new Explorer();
|
|
updateUserContext({
|
|
databaseAccount: {
|
|
properties: {
|
|
capabilities: [{ name: "EnableGremlin" }],
|
|
},
|
|
} as DatabaseAccount,
|
|
});
|
|
|
|
const collectionWithoutPartitionKey = <ViewModels.Collection>(<unknown>{
|
|
id: ko.observable<string>("foo"),
|
|
database: {
|
|
id: ko.observable<string>("foo"),
|
|
},
|
|
container: explorer,
|
|
});
|
|
|
|
const collectionWithSystemPartitionKey = <ViewModels.Collection>(<unknown>{
|
|
id: ko.observable<string>("foo"),
|
|
database: {
|
|
id: ko.observable<string>("foo"),
|
|
},
|
|
partitionKey: {
|
|
paths: ["/foo"],
|
|
kind: "Hash",
|
|
version: 2,
|
|
systemKey: true,
|
|
},
|
|
container: explorer,
|
|
});
|
|
|
|
const collectionWithNonSystemPartitionKey = <ViewModels.Collection>(<unknown>{
|
|
id: ko.observable<string>("foo"),
|
|
database: {
|
|
id: ko.observable<string>("foo"),
|
|
},
|
|
partitionKey: {
|
|
paths: ["/foo"],
|
|
kind: "Hash",
|
|
version: 2,
|
|
systemKey: false,
|
|
},
|
|
container: explorer,
|
|
});
|
|
|
|
const mongoCollectionWithSystemPartitionKey = <ViewModels.Collection>(<unknown>{
|
|
id: ko.observable<string>("foo"),
|
|
database: {
|
|
id: ko.observable<string>("foo"),
|
|
},
|
|
partitionKey: {
|
|
paths: ["/foo"],
|
|
kind: "Hash",
|
|
version: 2,
|
|
systemKey: true,
|
|
},
|
|
container: mongoExplorer,
|
|
});
|
|
|
|
it("should be false for null or undefined collection", () => {
|
|
const documentsTab = new DocumentsTab({
|
|
partitionKey: null,
|
|
documentIds: ko.observableArray<DocumentId>(),
|
|
tabKind: ViewModels.CollectionTabKind.Documents,
|
|
title: "",
|
|
tabPath: "",
|
|
hashLocation: "",
|
|
});
|
|
|
|
expect(documentsTab.showPartitionKey).toBe(false);
|
|
});
|
|
|
|
it("should be false for null or undefined partitionKey", () => {
|
|
const documentsTab = new DocumentsTab({
|
|
collection: collectionWithoutPartitionKey,
|
|
partitionKey: null,
|
|
documentIds: ko.observableArray<DocumentId>(),
|
|
tabKind: ViewModels.CollectionTabKind.Documents,
|
|
title: "",
|
|
tabPath: "",
|
|
hashLocation: "",
|
|
});
|
|
|
|
expect(documentsTab.showPartitionKey).toBe(false);
|
|
});
|
|
|
|
it("should be true for non-Mongo accounts with system partitionKey", () => {
|
|
const documentsTab = new DocumentsTab({
|
|
collection: collectionWithSystemPartitionKey,
|
|
partitionKey: null,
|
|
documentIds: ko.observableArray<DocumentId>(),
|
|
tabKind: ViewModels.CollectionTabKind.Documents,
|
|
title: "",
|
|
tabPath: "",
|
|
hashLocation: "",
|
|
});
|
|
|
|
expect(documentsTab.showPartitionKey).toBe(true);
|
|
});
|
|
|
|
it("should be false for Mongo accounts with system partitionKey", () => {
|
|
updateUserContext({
|
|
apiType: "Mongo",
|
|
});
|
|
const documentsTab = new DocumentsTab({
|
|
collection: mongoCollectionWithSystemPartitionKey,
|
|
partitionKey: null,
|
|
documentIds: ko.observableArray<DocumentId>(),
|
|
tabKind: ViewModels.CollectionTabKind.Documents,
|
|
title: "",
|
|
tabPath: "",
|
|
hashLocation: "",
|
|
});
|
|
|
|
expect(documentsTab.showPartitionKey).toBe(false);
|
|
});
|
|
|
|
it("should be true for non-system partitionKey", () => {
|
|
const documentsTab = new DocumentsTab({
|
|
collection: collectionWithNonSystemPartitionKey,
|
|
partitionKey: null,
|
|
documentIds: ko.observableArray<DocumentId>(),
|
|
tabKind: ViewModels.CollectionTabKind.Documents,
|
|
title: "",
|
|
tabPath: "",
|
|
hashLocation: "",
|
|
});
|
|
|
|
expect(documentsTab.showPartitionKey).toBe(true);
|
|
});
|
|
});
|
|
});
|