92 lines
3.6 KiB
TypeScript
92 lines
3.6 KiB
TypeScript
/**
|
|
* Widget Registry Tests
|
|
* Following TDD - write tests first!
|
|
*/
|
|
|
|
import { describe, it, expect } from "vitest";
|
|
import { widgetRegistry } from "../WidgetRegistry";
|
|
import { TasksWidget } from "../TasksWidget";
|
|
import { CalendarWidget } from "../CalendarWidget";
|
|
import { QuickCaptureWidget } from "../QuickCaptureWidget";
|
|
|
|
describe("WidgetRegistry", () => {
|
|
it("should have a registry of widgets", () => {
|
|
expect(widgetRegistry).toBeDefined();
|
|
expect(typeof widgetRegistry).toBe("object");
|
|
});
|
|
|
|
it("should include TasksWidget in registry", () => {
|
|
expect(widgetRegistry.TasksWidget).toBeDefined();
|
|
expect(widgetRegistry.TasksWidget!.component).toBe(TasksWidget);
|
|
});
|
|
|
|
it("should include CalendarWidget in registry", () => {
|
|
expect(widgetRegistry.CalendarWidget).toBeDefined();
|
|
expect(widgetRegistry.CalendarWidget!.component).toBe(CalendarWidget);
|
|
});
|
|
|
|
it("should include QuickCaptureWidget in registry", () => {
|
|
expect(widgetRegistry.QuickCaptureWidget).toBeDefined();
|
|
expect(widgetRegistry.QuickCaptureWidget!.component).toBe(QuickCaptureWidget);
|
|
});
|
|
|
|
it("should have correct metadata for TasksWidget", () => {
|
|
const tasksWidget = widgetRegistry.TasksWidget!;
|
|
expect(tasksWidget.name).toBe("TasksWidget");
|
|
expect(tasksWidget.displayName).toBe("Tasks");
|
|
expect(tasksWidget.description).toBeDefined();
|
|
expect(tasksWidget.defaultWidth).toBeGreaterThan(0);
|
|
expect(tasksWidget.defaultHeight).toBeGreaterThan(0);
|
|
expect(tasksWidget.minWidth).toBeGreaterThan(0);
|
|
expect(tasksWidget.minHeight).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("should have correct metadata for CalendarWidget", () => {
|
|
const calendarWidget = widgetRegistry.CalendarWidget!;
|
|
expect(calendarWidget.name).toBe("CalendarWidget");
|
|
expect(calendarWidget.displayName).toBe("Calendar");
|
|
expect(calendarWidget.description).toBeDefined();
|
|
expect(calendarWidget.defaultWidth).toBeGreaterThan(0);
|
|
expect(calendarWidget.defaultHeight).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("should have correct metadata for QuickCaptureWidget", () => {
|
|
const quickCaptureWidget = widgetRegistry.QuickCaptureWidget!;
|
|
expect(quickCaptureWidget.name).toBe("QuickCaptureWidget");
|
|
expect(quickCaptureWidget.displayName).toBe("Quick Capture");
|
|
expect(quickCaptureWidget.description).toBeDefined();
|
|
expect(quickCaptureWidget.defaultWidth).toBeGreaterThan(0);
|
|
expect(quickCaptureWidget.defaultHeight).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("should export getWidgetByName helper", async () => {
|
|
const { getWidgetByName } = await import("../WidgetRegistry");
|
|
expect(typeof getWidgetByName).toBe("function");
|
|
});
|
|
|
|
it("getWidgetByName should return correct widget", async () => {
|
|
const { getWidgetByName } = await import("../WidgetRegistry");
|
|
const widget = getWidgetByName("TasksWidget");
|
|
expect(widget).toBeDefined();
|
|
expect(widget?.component).toBe(TasksWidget);
|
|
});
|
|
|
|
it("getWidgetByName should return undefined for invalid name", async () => {
|
|
const { getWidgetByName } = await import("../WidgetRegistry");
|
|
const widget = getWidgetByName("InvalidWidget");
|
|
expect(widget).toBeUndefined();
|
|
});
|
|
|
|
it("should export getAllWidgets helper", async () => {
|
|
const { getAllWidgets } = await import("../WidgetRegistry");
|
|
expect(typeof getAllWidgets).toBe("function");
|
|
});
|
|
|
|
it("getAllWidgets should return array of all widgets", async () => {
|
|
const { getAllWidgets } = await import("../WidgetRegistry");
|
|
const widgets = getAllWidgets();
|
|
expect(Array.isArray(widgets)).toBe(true);
|
|
expect(widgets.length).toBeGreaterThanOrEqual(3);
|
|
});
|
|
});
|