Files
PriceUpdaterAppv2/tests/tui/components/ResponsiveText.test.js

82 lines
1.9 KiB
JavaScript

/**
* Tests for ResponsiveText component
*/
const React = require("react");
describe("ResponsiveText Component", () => {
test("should have proper component structure", () => {
const ResponsiveText = require("../../../src/tui/components/common/ResponsiveText.jsx");
expect(typeof ResponsiveText).toBe("function");
});
test("should handle text truncation", () => {
const longText =
"This is a very long text that should be truncated when it exceeds the maximum width";
const maxLength = 20;
const ellipsis = "...";
const truncatedText =
longText.substring(0, maxLength - ellipsis.length) + ellipsis;
expect(truncatedText.length).toBe(maxLength);
expect(truncatedText.endsWith(ellipsis)).toBe(true);
});
test("should handle styleType prop", () => {
const styleTypes = [
"title",
"subtitle",
"normal",
"emphasis",
"error",
"success",
];
styleTypes.forEach((type) => {
expect(typeof type).toBe("string");
expect(type.length).toBeGreaterThan(0);
});
});
test("should handle truncate prop", () => {
const truncateOptions = [true, false];
truncateOptions.forEach((option) => {
expect(typeof option).toBe("boolean");
});
});
test("should handle showEllipsis prop", () => {
const showEllipsisOptions = [true, false];
showEllipsisOptions.forEach((option) => {
expect(typeof option).toBe("boolean");
});
});
test("should handle maxWidth prop", () => {
const maxWidths = [10, 20, 50, 100];
maxWidths.forEach((width) => {
expect(typeof width).toBe("number");
expect(width).toBeGreaterThan(0);
});
});
test("should process text content correctly", () => {
const testCases = [
{ input: "Hello World", expected: "Hello World" },
{ input: 123, expected: "123" },
{ input: null, expected: "" },
{ input: undefined, expected: "" },
];
testCases.forEach(({ input, expected }) => {
const result = String(input || "");
expect(result).toBe(expected);
});
});
});