2020-08-04 18:03:14 -05:00
|
|
|
jest.mock("../../Common/dataAccess/deleteDatabase");
|
2020-07-27 12:58:27 -05:00
|
|
|
jest.mock("../../Shared/Telemetry/TelemetryProcessor");
|
2020-05-25 21:30:55 -05:00
|
|
|
import * as ko from "knockout";
|
|
|
|
import Q from "q";
|
|
|
|
import { Action, ActionModifiers } from "../../Shared/Telemetry/TelemetryConstants";
|
|
|
|
import * as DataModels from "../../Contracts/DataModels";
|
|
|
|
import * as ViewModels from "../../Contracts/ViewModels";
|
|
|
|
import DeleteDatabaseConfirmationPane from "./DeleteDatabaseConfirmationPane";
|
|
|
|
import DeleteFeedback from "../../Common/DeleteFeedback";
|
|
|
|
import Explorer from "../Explorer";
|
2020-09-08 12:44:46 -05:00
|
|
|
import * as TelemetryProcessor from "../../Shared/Telemetry/TelemetryProcessor";
|
2020-05-25 21:30:55 -05:00
|
|
|
import { TreeNode } from "../../Contracts/ViewModels";
|
2020-07-09 13:53:37 -07:00
|
|
|
import { TabsManager } from "../Tabs/TabsManager";
|
2020-08-04 18:03:14 -05:00
|
|
|
import { deleteDatabase } from "../../Common/dataAccess/deleteDatabase";
|
2020-05-25 21:30:55 -05:00
|
|
|
|
|
|
|
describe("Delete Database Confirmation Pane", () => {
|
|
|
|
describe("Explorer.isLastDatabase() and Explorer.isLastNonEmptyDatabase()", () => {
|
2020-07-20 12:59:40 -05:00
|
|
|
let explorer: Explorer;
|
2020-05-25 21:30:55 -05:00
|
|
|
|
2020-07-27 12:58:27 -05:00
|
|
|
beforeAll(() => {
|
|
|
|
(deleteDatabase as jest.Mock).mockResolvedValue(undefined);
|
|
|
|
});
|
|
|
|
|
2020-05-25 21:30:55 -05:00
|
|
|
beforeEach(() => {
|
2020-10-12 22:10:28 -05:00
|
|
|
explorer = new Explorer();
|
2020-05-25 21:30:55 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it("should be true if only 1 database", () => {
|
2020-07-21 13:50:51 -05:00
|
|
|
let database = {} as ViewModels.Database;
|
2020-05-25 21:30:55 -05:00
|
|
|
explorer.databases = ko.observableArray<ViewModels.Database>([database]);
|
|
|
|
expect(explorer.isLastDatabase()).toBe(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should be false if only 2 databases", () => {
|
2020-07-21 13:50:51 -05:00
|
|
|
let database = {} as ViewModels.Database;
|
|
|
|
let database2 = {} as ViewModels.Database;
|
2020-05-25 21:30:55 -05:00
|
|
|
explorer.databases = ko.observableArray<ViewModels.Database>([database, database2]);
|
|
|
|
expect(explorer.isLastDatabase()).toBe(false);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should be false if not last empty database", () => {
|
2020-07-21 13:50:51 -05:00
|
|
|
let database = {} as ViewModels.Database;
|
2020-05-25 21:30:55 -05:00
|
|
|
explorer.databases = ko.observableArray<ViewModels.Database>([database]);
|
|
|
|
expect(explorer.isLastNonEmptyDatabase()).toBe(false);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should be true if last non empty database", () => {
|
2020-07-21 13:50:51 -05:00
|
|
|
let database = {} as ViewModels.Database;
|
|
|
|
database.collections = ko.observableArray<ViewModels.Collection>([{} as ViewModels.Collection]);
|
2020-05-25 21:30:55 -05:00
|
|
|
explorer.databases = ko.observableArray<ViewModels.Database>([database]);
|
|
|
|
expect(explorer.isLastNonEmptyDatabase()).toBe(true);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe("shouldRecordFeedback()", () => {
|
|
|
|
it("should return true if last non empty database or is last database that has shared throughput, else false", () => {
|
2020-07-20 12:59:40 -05:00
|
|
|
let fakeExplorer = {} as Explorer;
|
|
|
|
fakeExplorer.isNotificationConsoleExpanded = ko.observable<boolean>(false);
|
2020-05-25 21:30:55 -05:00
|
|
|
|
|
|
|
let pane = new DeleteDatabaseConfirmationPane({
|
|
|
|
id: "deletedatabaseconfirmationpane",
|
|
|
|
visible: ko.observable<boolean>(false),
|
|
|
|
container: fakeExplorer as any
|
|
|
|
});
|
|
|
|
|
2020-07-20 12:59:40 -05:00
|
|
|
fakeExplorer.isLastNonEmptyDatabase = () => true;
|
2020-05-25 21:30:55 -05:00
|
|
|
pane.container = fakeExplorer as any;
|
|
|
|
expect(pane.shouldRecordFeedback()).toBe(true);
|
|
|
|
|
2020-07-20 12:59:40 -05:00
|
|
|
fakeExplorer.isLastDatabase = () => true;
|
|
|
|
fakeExplorer.isSelectedDatabaseShared = () => true;
|
2020-05-25 21:30:55 -05:00
|
|
|
pane.container = fakeExplorer as any;
|
|
|
|
expect(pane.shouldRecordFeedback()).toBe(true);
|
|
|
|
|
2020-07-20 12:59:40 -05:00
|
|
|
fakeExplorer.isLastNonEmptyDatabase = () => false;
|
|
|
|
fakeExplorer.isLastDatabase = () => true;
|
|
|
|
fakeExplorer.isSelectedDatabaseShared = () => false;
|
2020-05-25 21:30:55 -05:00
|
|
|
pane.container = fakeExplorer as any;
|
|
|
|
expect(pane.shouldRecordFeedback()).toBe(false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe("submit()", () => {
|
|
|
|
it("on submit() it should log feedback if last non empty database or is last database that has shared throughput", () => {
|
|
|
|
let selectedDatabaseId = "testDB";
|
2020-07-20 12:59:40 -05:00
|
|
|
let fakeExplorer = {} as Explorer;
|
2020-07-21 13:50:51 -05:00
|
|
|
fakeExplorer.findSelectedDatabase = () => {
|
|
|
|
return {
|
2020-05-25 21:30:55 -05:00
|
|
|
id: ko.observable<string>(selectedDatabaseId),
|
|
|
|
rid: "test",
|
|
|
|
collections: ko.observableArray<ViewModels.Collection>()
|
2020-07-21 13:50:51 -05:00
|
|
|
} as ViewModels.Database;
|
|
|
|
};
|
2020-07-20 12:59:40 -05:00
|
|
|
fakeExplorer.refreshAllDatabases = () => Q.resolve();
|
|
|
|
fakeExplorer.isNotificationConsoleExpanded = ko.observable<boolean>(false);
|
|
|
|
fakeExplorer.selectedDatabaseId = ko.computed<string>(() => selectedDatabaseId);
|
|
|
|
fakeExplorer.isSelectedDatabaseShared = () => false;
|
2020-05-25 21:30:55 -05:00
|
|
|
const SubscriptionId = "testId";
|
|
|
|
const AccountName = "testAccount";
|
2020-07-27 16:05:25 -05:00
|
|
|
fakeExplorer.databaseAccount = ko.observable<DataModels.DatabaseAccount>({
|
2020-07-20 12:59:40 -05:00
|
|
|
id: SubscriptionId,
|
|
|
|
name: AccountName
|
2020-07-27 16:05:25 -05:00
|
|
|
} as DataModels.DatabaseAccount);
|
2020-07-20 12:59:40 -05:00
|
|
|
fakeExplorer.defaultExperience = ko.observable<string>("DocumentDB");
|
|
|
|
fakeExplorer.isPreferredApiCassandra = ko.computed(() => {
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
fakeExplorer.selectedNode = ko.observable<TreeNode>();
|
|
|
|
fakeExplorer.tabsManager = new TabsManager();
|
|
|
|
fakeExplorer.isLastNonEmptyDatabase = () => true;
|
2020-05-25 21:30:55 -05:00
|
|
|
|
|
|
|
let pane = new DeleteDatabaseConfirmationPane({
|
|
|
|
id: "deletedatabaseconfirmationpane",
|
|
|
|
visible: ko.observable<boolean>(false),
|
|
|
|
container: fakeExplorer as any
|
|
|
|
});
|
|
|
|
pane.databaseIdConfirmation = ko.observable<string>(selectedDatabaseId);
|
|
|
|
const Feedback = "my feedback";
|
|
|
|
pane.databaseDeleteFeedback(Feedback);
|
|
|
|
|
|
|
|
return pane.submit().then(() => {
|
|
|
|
let deleteFeedback = new DeleteFeedback(SubscriptionId, AccountName, DataModels.ApiKind.SQL, Feedback);
|
2020-09-22 12:19:06 -07:00
|
|
|
expect(TelemetryProcessor.trace).toHaveBeenCalledWith(Action.DeleteDatabase, ActionModifiers.Mark, {
|
|
|
|
message: JSON.stringify(deleteFeedback, Object.getOwnPropertyNames(deleteFeedback))
|
|
|
|
});
|
2020-05-25 21:30:55 -05:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|