/** * Tests for the unified PrintModal component. * * The PrintModal supports two modes: * - 'create': Create a print queue item * - 'edit-queue-item': Edit existing queue item (single printer) */ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import type React from 'react'; import { screen, waitFor, fireEvent, within, render as rtlRender } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { BrowserRouter } from 'react-router-dom'; import { render } from '../utils'; import { PrintModal } from '../../components/PrintModal'; import { AuthProvider } from '../../contexts/AuthContext'; import { ThemeProvider } from '../../contexts/ThemeContext'; import { ToastProvider } from '../../contexts/ToastContext'; import { http, HttpResponse } from 'msw'; import { setAuthToken } from '../../api/client'; import { server } from '../mocks/server'; import { setColorCatalog, __resetColorCatalogForTests } from '../../utils/colors'; import type { PrintQueueItem } from '../../api/client'; const mockPrinters = [ { id: 1, name: 'X1 Carbon', model: 'X1C', ip_address: '192.168.1.100', enabled: true, is_active: true }, { id: 2, name: 'P1S', model: 'P1S', ip_address: '192.168.1.101', enabled: true, is_active: true }, { id: 3, name: 'A1 Mini', model: 'A1M', ip_address: '192.168.1.102', enabled: true, is_active: true }, ]; const createMockQueueItem = (overrides: Partial = {}): PrintQueueItem => ({ id: 1, printer_id: 1, archive_id: 1, position: 1, scheduled_time: null, require_previous_success: false, auto_off_after: false, gcode_injection: false, manual_start: false, ams_mapping: null, plate_id: null, bed_levelling: 'on', flow_cali: 'off', vibration_cali: true, layer_inspect: false, timelapse: false, use_ams: true, status: 'pending', started_at: null, completed_at: null, error_message: null, created_at: '2024-01-01T00:00:00Z', archive_name: 'Test Print', archive_thumbnail: null, printer_name: 'Test Printer', print_time_seconds: 3600, batch_id: null, batch_name: null, ...overrides, }); /** * Choose a row in a SlotPicker (#3159). * * The slot and override controls were native `