mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-20 01:11:25 +00:00
* Upgrade packages to enable npm i with node 18 * Fix crypto and querystring issue * Fix webpack errors during npm start * Upgrade monaco editor. Fix alias in webconfig * Remove deprecated file-loader. Upgrade webpack to latest. * Fix format * Upgrade webpack, eslint and typescript * Update p-retry and fluentui packages * Revert monaco package upgrade * Fix notebook compile errors * Fix lint errors * Update jest snapshots * Fix unit tests * Update node version to 18 * Fix compile error * Fix compile error * Fix format * Turn off warning overlay for webpack devServer * Fix format * Re-add monaco webpack plugin and upgrade monaco-editor * Update package-lock.json * Fix build issue * Move MonacoWebpackPlugin to previous place in webpack.config.js * update package-lock.json * Fix package-lock.json * Update package-lock.json * Fix export ChoiceItem not found warning for self serve. Remove warning turn off in webpack config. * Update checkout and setup actions in for ci tests * Disable Gallery callout * Fix disable gallery header * Totally disable New gallery callout * Upgrade all github actions to latest
87 lines
2.9 KiB
TypeScript
87 lines
2.9 KiB
TypeScript
import { HttpStatusCodes } from "../../Common/Constants";
|
|
import * as DataModels from "../../Contracts/DataModels";
|
|
import { JunoClient } from "../../Juno/JunoClient";
|
|
import { Features } from "../../Platform/Hosted/extractFeatures";
|
|
import { updateUserContext, userContext } from "../../UserContext";
|
|
import Explorer from "../Explorer";
|
|
import Database from "./Database";
|
|
|
|
const createMockContainer = (): Explorer => {
|
|
const mockContainer = new Explorer();
|
|
return mockContainer;
|
|
};
|
|
|
|
updateUserContext({
|
|
subscriptionId: "fakeSubscriptionId",
|
|
resourceGroup: "fakeResourceGroup",
|
|
databaseAccount: {
|
|
id: "id",
|
|
name: "fakeName",
|
|
location: "fakeLocation",
|
|
type: "fakeType",
|
|
kind: "fakeKind",
|
|
properties: {
|
|
documentEndpoint: "fakeEndpoint",
|
|
tableEndpoint: "fakeEndpoint",
|
|
gremlinEndpoint: "fakeEndpoint",
|
|
cassandraEndpoint: "fakeEndpoint",
|
|
},
|
|
},
|
|
});
|
|
|
|
describe("Add Schema", () => {
|
|
it("should not call requestSchema or getSchema if analyticalStorageTtl is undefined", () => {
|
|
const collection: DataModels.Collection = { id: "fakeId" } as DataModels.Collection;
|
|
collection.analyticalStorageTtl = undefined;
|
|
const database = new Database(createMockContainer(), collection);
|
|
database.container = createMockContainer();
|
|
|
|
database.junoClient = new JunoClient();
|
|
database.junoClient.requestSchema = jest.fn();
|
|
database.junoClient.getSchema = jest.fn();
|
|
|
|
database.addSchema(collection);
|
|
|
|
expect(database.junoClient.requestSchema).toHaveBeenCalledTimes(0);
|
|
});
|
|
|
|
it("should call requestSchema or getSchema if analyticalStorageTtl is not undefined", () => {
|
|
const collection: DataModels.Collection = {} as DataModels.Collection;
|
|
collection.analyticalStorageTtl = 0;
|
|
|
|
const database = new Database(createMockContainer(), collection);
|
|
database.container = createMockContainer();
|
|
updateUserContext({
|
|
features: {
|
|
enableSchema: true,
|
|
} as Features,
|
|
});
|
|
|
|
database.junoClient = new JunoClient();
|
|
database.junoClient.requestSchema = jest.fn();
|
|
database.junoClient.getSchema = jest.fn().mockResolvedValue({ status: HttpStatusCodes.OK, data: {} });
|
|
|
|
jest.useFakeTimers();
|
|
const interval = 5000;
|
|
const checkForSchema: NodeJS.Timeout = database.addSchema(collection, interval);
|
|
jest.advanceTimersByTime(interval + 1000);
|
|
|
|
expect(database.junoClient.requestSchema).toHaveBeenCalledWith({
|
|
id: undefined,
|
|
subscriptionId: userContext.subscriptionId,
|
|
resourceGroup: userContext.resourceGroup,
|
|
accountName: userContext.databaseAccount.name,
|
|
resource: `dbs/${database.id()}/colls/${collection.id}`,
|
|
status: "new",
|
|
});
|
|
expect(checkForSchema).not.toBeNull();
|
|
expect(database.junoClient.getSchema).toHaveBeenCalledWith(
|
|
userContext.subscriptionId,
|
|
userContext.resourceGroup,
|
|
userContext.databaseAccount.name,
|
|
database.id(),
|
|
collection.id,
|
|
);
|
|
});
|
|
});
|