Files
PriceUpdaterAppv2/tests/tui/windows/basicWindowsTest.test.js

162 lines
5.2 KiB
JavaScript

/**
* Basic Windows Tests
* Simple tests for Windows-specific functionality without complex imports
*/
const {
detectWindowsTerminal,
getWindowsTerminalCapabilities,
getWindowsColorSupport,
getWindowsUnicodeSupport,
} = require("../../../src/tui/utils/modernTerminal.js");
describe("Basic Windows Tests", () => {
const originalEnv = process.env;
const originalPlatform = process.platform;
beforeEach(() => {
// Reset environment
process.env = { ...originalEnv };
Object.defineProperty(process, "platform", {
value: "win32",
writable: true,
});
});
afterEach(() => {
process.env = originalEnv;
Object.defineProperty(process, "platform", {
value: originalPlatform,
writable: true,
});
});
describe("Windows Terminal Detection", () => {
test("should detect Windows Terminal with WT_SESSION", () => {
process.env.WT_SESSION = "abc123-def456";
process.env.TERM_PROGRAM = "Windows Terminal";
const isWindowsTerminal = detectWindowsTerminal();
expect(isWindowsTerminal).toBe(true);
});
test("should not detect Windows Terminal without proper env vars", () => {
delete process.env.WT_SESSION;
delete process.env.TERM_PROGRAM;
const isWindowsTerminal = detectWindowsTerminal();
expect(isWindowsTerminal).toBe(false);
});
test("should not detect Windows Terminal on non-Windows platforms", () => {
Object.defineProperty(process, "platform", { value: "linux" });
process.env.WT_SESSION = "test";
const isWindowsTerminal = detectWindowsTerminal();
expect(isWindowsTerminal).toBe(false);
});
});
describe("Windows Terminal Capabilities", () => {
test("should detect Windows Terminal capabilities", () => {
process.env.WT_SESSION = "test-session";
process.env.COLORTERM = "truecolor";
const capabilities = getWindowsTerminalCapabilities();
expect(capabilities.isWindows).toBe(true);
expect(capabilities.isWindowsTerminal).toBe(true);
expect(capabilities.supportsUnicode).toBe(true);
expect(capabilities.supportsTrueColor).toBe(true);
});
test("should detect Command Prompt limitations", () => {
process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe";
delete process.env.WT_SESSION;
delete process.env.COLORTERM;
delete process.env.TERM_PROGRAM;
delete process.env.PSModulePath;
const capabilities = getWindowsTerminalCapabilities();
expect(capabilities.isCommandPrompt).toBe(true);
expect(capabilities.supportsUnicode).toBe(false);
expect(capabilities.supportsTrueColor).toBe(false);
expect(capabilities.supportsColor).toBe(true);
});
test("should detect PowerShell capabilities", () => {
process.env.PSModulePath = "C:\\Program Files\\PowerShell\\Modules";
delete process.env.WT_SESSION;
const capabilities = getWindowsTerminalCapabilities();
expect(capabilities.isPowerShell).toBe(true);
expect(capabilities.supportsUnicode).toBe(true);
expect(capabilities.supportsTrueColor).toBe(false);
});
});
describe("Color Support Detection", () => {
test("should detect true color support in Windows Terminal", () => {
process.env.WT_SESSION = "test";
process.env.COLORTERM = "truecolor";
const colorSupport = getWindowsColorSupport();
expect(colorSupport.supportsTrueColor).toBe(true);
expect(colorSupport.supports256Color).toBe(true);
expect(colorSupport.supportsBasicColor).toBe(true);
});
test("should detect limited color support in Command Prompt", () => {
process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe";
delete process.env.WT_SESSION;
delete process.env.COLORTERM;
delete process.env.TERM_PROGRAM;
delete process.env.PSModulePath;
const colorSupport = getWindowsColorSupport();
expect(colorSupport.supportsTrueColor).toBe(false);
expect(colorSupport.supports256Color).toBe(false);
expect(colorSupport.supportsBasicColor).toBe(true);
});
});
describe("Unicode Support Detection", () => {
test("should detect Unicode support in Windows Terminal", () => {
process.env.WT_SESSION = "test";
const unicodeSupport = getWindowsUnicodeSupport();
expect(unicodeSupport.supportsUnicode).toBe(true);
expect(unicodeSupport.supportsEmoji).toBe(true);
expect(unicodeSupport.supportsBoxDrawing).toBe(true);
});
test("should detect limited Unicode support in Command Prompt", () => {
process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe";
delete process.env.WT_SESSION;
delete process.env.COLORTERM;
delete process.env.TERM_PROGRAM;
delete process.env.PSModulePath;
const unicodeSupport = getWindowsUnicodeSupport();
expect(unicodeSupport.supportsUnicode).toBe(false);
expect(unicodeSupport.supportsEmoji).toBe(false);
expect(unicodeSupport.supportsBoxDrawing).toBe(false);
});
});
describe("Platform Detection", () => {
test("should correctly identify Windows platform", () => {
const capabilities = getWindowsTerminalCapabilities();
expect(capabilities.isWindows).toBe(true);
});
test("should handle non-Windows platforms", () => {
Object.defineProperty(process, "platform", { value: "darwin" });
const capabilities = getWindowsTerminalCapabilities();
expect(capabilities.isWindows).toBe(false);
expect(capabilities.isWindowsTerminal).toBe(false);
});
});
});