78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
/**
|
|
* Tests for MinimumSizeWarning component
|
|
* Note: Using simplified testing approach due to ink-testing-library limitations
|
|
*/
|
|
|
|
const React = require("react");
|
|
|
|
describe("MinimumSizeWarning Component", () => {
|
|
const mockMessage = {
|
|
title: "Terminal Too Small",
|
|
message: "Please resize your terminal window to continue.",
|
|
details: ["Width: 60 (minimum: 80)", "Height: 15 (minimum: 20)"],
|
|
current: "Current: 60x15",
|
|
required: "Required: 80x20",
|
|
};
|
|
|
|
test("should have proper component structure", () => {
|
|
// Test that the component can be imported without errors
|
|
const MinimumSizeWarning = require("../../../src/tui/components/common/MinimumSizeWarning.jsx");
|
|
|
|
expect(typeof MinimumSizeWarning).toBe("function");
|
|
});
|
|
|
|
test("should handle message prop structure", () => {
|
|
// Test that the message object has the expected structure
|
|
expect(mockMessage).toHaveProperty("title");
|
|
expect(mockMessage).toHaveProperty("message");
|
|
expect(mockMessage).toHaveProperty("details");
|
|
expect(mockMessage).toHaveProperty("current");
|
|
expect(mockMessage).toHaveProperty("required");
|
|
|
|
expect(Array.isArray(mockMessage.details)).toBe(true);
|
|
expect(mockMessage.title).toBe("Terminal Too Small");
|
|
expect(mockMessage.current).toContain("60x15");
|
|
expect(mockMessage.required).toContain("80x20");
|
|
});
|
|
|
|
test("should handle empty details array", () => {
|
|
const messageWithoutDetails = {
|
|
...mockMessage,
|
|
details: [],
|
|
};
|
|
|
|
expect(messageWithoutDetails.details).toHaveLength(0);
|
|
expect(messageWithoutDetails.title).toBe("Terminal Too Small");
|
|
});
|
|
|
|
test("should contain expected warning elements", () => {
|
|
// Test the data structure that would be displayed
|
|
const expectedElements = [
|
|
"⚠️",
|
|
"Terminal Too Small",
|
|
"Please resize your terminal window to continue.",
|
|
"Current: 60x15",
|
|
"Required: 80x20",
|
|
"Width: 60 (minimum: 80)",
|
|
"Height: 15 (minimum: 20)",
|
|
"Press Ctrl+C to exit",
|
|
];
|
|
|
|
expectedElements.forEach((element) => {
|
|
expect(typeof element).toBe("string");
|
|
expect(element.length).toBeGreaterThan(0);
|
|
});
|
|
});
|
|
|
|
test("should validate message details format", () => {
|
|
mockMessage.details.forEach((detail) => {
|
|
expect(detail).toMatch(/\w+: \d+ \(minimum: \d+\)/);
|
|
});
|
|
});
|
|
|
|
test("should validate current and required format", () => {
|
|
expect(mockMessage.current).toMatch(/Current: \d+x\d+/);
|
|
expect(mockMessage.required).toMatch(/Required: \d+x\d+/);
|
|
});
|
|
});
|