import { describe, it, expect } from 'vitest'; import { render, screen } from '@testing-library/react'; import SessionStepper from './SessionStepper'; const STEPS = ['ایجاد سرویس', 'پرداخت', 'جزییات']; describe('SessionStepper', () => { it('برچسب همه گام‌ها و یک کانکتور به‌ازای هر گام غیر از اولی', () => { render(); STEPS.forEach((l) => expect(screen.getByText(l)).toBeInTheDocument()); expect(screen.getByTestId('step-connector-1')).toBeInTheDocument(); expect(screen.getByTestId('step-connector-2')).toBeInTheDocument(); expect(screen.queryByTestId('step-connector-0')).not.toBeInTheDocument(); }); it('کانکتور سمت گامِ قبلی (راست در RTL) کشیده می‌شود، نه بیرون از لبه چپ', () => { render(); const c = screen.getByTestId('step-connector-2'); // RTL: امتداد به سمت راست (گام قبلی) → left مثبت از مرکز، right منفی expect(c.style.left).toBe('calc(50% + 40px)'); expect(c.style.right).toBe('calc(-50% + 40px)'); }); it('کانکتور گام‌های طی‌شده بنفش و بقیه خاکستری', () => { render(); // jsdom رنگ hex را به rgb نرمال می‌کند expect(screen.getByTestId('step-connector-1').style.background).toContain('rgb(85, 89, 206)'); expect(screen.getByTestId('step-connector-2').style.background).toContain('rgb(234, 234, 240)'); }); it('استپر خالی: بدون کرش و بدون کانکتور', () => { const { container } = render(); expect(container.querySelectorAll('[data-testid^="step-connector"]').length).toBe(0); }); });