mirror of
https://github.com/stefanpejcic/openpanel
synced 2025-06-26 18:28:26 +00:00
336 lines
9.3 KiB
TypeScript
336 lines
9.3 KiB
TypeScript
import { renderHook } from "@testing-library/react";
|
|
|
|
import { defaultRefineOptions } from "@contexts/refine";
|
|
import { MockJSONServer, TestWrapper, mockLegacyRouterProvider } from "@test";
|
|
|
|
import { useTelemetryData } from ".";
|
|
import type { IRefineContextProvider } from "../../contexts/refine/types";
|
|
|
|
describe("useTelemetryData Hook", () => {
|
|
describe("authProvider", () => {
|
|
it("must be false", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.auth).toBeFalsy();
|
|
});
|
|
|
|
it("legacyAuthProvider must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
legacyAuthProvider: {
|
|
login: () => Promise.resolve(),
|
|
logout: () => Promise.resolve(),
|
|
checkError: () => Promise.resolve(),
|
|
checkAuth: () => Promise.resolve(),
|
|
getPermissions: () => Promise.resolve(),
|
|
getUserIdentity: () => Promise.resolve(),
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.auth).toBeTruthy();
|
|
});
|
|
|
|
it("authProvider must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
authProvider: {
|
|
login: () => Promise.resolve({ success: true }),
|
|
logout: () => Promise.resolve({ success: false }),
|
|
check: () => Promise.resolve({ authenticated: true }),
|
|
onError: () => Promise.resolve({}),
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.auth).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe("auditLogProvider", () => {
|
|
it("must be false", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.auditLog).toBeFalsy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
auditLogProvider: {
|
|
create: () => Promise.resolve(),
|
|
get: () => Promise.resolve(),
|
|
update: () => Promise.resolve(),
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.auditLog).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe("liveProvider", () => {
|
|
it("must be false", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.live).toBeFalsy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
liveProvider: {
|
|
subscribe: () => {
|
|
return;
|
|
},
|
|
unsubscribe: () => {
|
|
return;
|
|
},
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.live).toBeTruthy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
liveProvider: {
|
|
subscribe: undefined as any,
|
|
unsubscribe: () => {
|
|
return;
|
|
},
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.live).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe("i18nProvider", () => {
|
|
it("must be false", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
resources: [{ name: "posts" }],
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.i18n).toBeFalsy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
i18nProvider: {
|
|
translate: () => {
|
|
return "";
|
|
},
|
|
changeLocale: () => {
|
|
return Promise.resolve();
|
|
},
|
|
|
|
getLocale: () => {
|
|
return "";
|
|
},
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.i18n).toBeTruthy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
i18nProvider: {
|
|
changeLocale: undefined as any,
|
|
translate: () => {
|
|
return "";
|
|
},
|
|
getLocale: () => {
|
|
return "";
|
|
},
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.i18n).toBeTruthy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
i18nProvider: {
|
|
translate: () => {
|
|
return "";
|
|
},
|
|
changeLocale: undefined as any,
|
|
getLocale: undefined as any,
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.i18n).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe("notificationProvider", () => {
|
|
it("must be false", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
resources: [{ name: "posts" }],
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.notification).toBeFalsy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
notificationProvider: {
|
|
close: () => Promise.resolve(),
|
|
open: () => Promise.resolve(),
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.notification).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe("accessControlProvider", () => {
|
|
it("must be false", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
resources: [{ name: "posts" }],
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.accessControl).toBeFalsy();
|
|
});
|
|
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
accessControlProvider: {
|
|
can: async () => {
|
|
return Promise.resolve({ can: true });
|
|
},
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.accessControl).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe("legacy routeProvider", () => {
|
|
it("must be true", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
dataProvider: MockJSONServer,
|
|
resources: [{ name: "posts" }],
|
|
legacyRouterProvider: {
|
|
...mockLegacyRouterProvider(),
|
|
useHistory: undefined as any,
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { providers } = result.current;
|
|
expect(providers.router).toBeTruthy();
|
|
});
|
|
});
|
|
|
|
describe("projectId", () => {
|
|
const mockRefineProvider: IRefineContextProvider = {
|
|
hasDashboard: false,
|
|
...defaultRefineOptions,
|
|
options: defaultRefineOptions,
|
|
};
|
|
|
|
it("must be undefined", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
resources: [{ name: "posts" }],
|
|
}),
|
|
});
|
|
|
|
const { projectId } = result.current;
|
|
expect(projectId).toBeUndefined();
|
|
});
|
|
|
|
it("must be defined", async () => {
|
|
const { result } = renderHook(() => useTelemetryData(), {
|
|
wrapper: TestWrapper({
|
|
resources: [{ name: "posts" }],
|
|
refineProvider: {
|
|
...mockRefineProvider,
|
|
options: {
|
|
...mockRefineProvider.options,
|
|
projectId: "test",
|
|
},
|
|
},
|
|
}),
|
|
});
|
|
|
|
const { projectId } = result.current;
|
|
expect(projectId).toBe("test");
|
|
});
|
|
});
|
|
});
|