All files / src/tests/utils dom.ts

0% Statements 0/11
0% Branches 0/2
0% Functions 0/8
0% Lines 0/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54                                                                                                           
/**
 * DOM testing utilities for CIA Compliance Manager.
 *
 * @packageDocumentation
 */
 
import { vi } from "vitest";
 
/**
 * Sets up mocks for DOM APIs that might be needed in tests
 */
export function mockDOMAPIs() {
  // Mock ResizeObserver
  globalThis.ResizeObserver = vi.fn().mockImplementation(() => ({
    observe: vi.fn(),
    unobserve: vi.fn(),
    disconnect: vi.fn(),
  }));
 
  // Mock localStorage
  const mockLocalStorage = (() => {
    let store: Record<string, string> = {};
    return {
      getItem: (key: string) => store[key] || null,
      setItem: (key: string, value: string) => {
        store[key] = value.toString();
      },
      removeItem: (key: string) => {
        delete store[key];
      },
      clear: () => {
        store = {};
      },
    };
  })();
 
  Object.defineProperty(window, "localStorage", {
    value: mockLocalStorage,
  });
}
 
/**
 * Checks if an element has a security level class
 * @param element Element to check
 * @param level Security level to check for
 * @returns True if the element has the class
 */
export function checkSecurityLevelColor(
  element: Element,
  level: "none" | "low" | "moderate" | "high" | "very-high"
): boolean {
  return element.classList.contains(`security-level-${level}`);
}