"use client"; import { describe, it, expect, vi, beforeEach } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/react'; import React from 'react'; import Hero from '../Hero'; import { useSettingsStore } from '../../store/settingsStore'; vi.mock('../../store/settingsStore', () => ({ useSettingsStore: vi.fn(), })); describe('Hero', () => { beforeEach(() => { vi.clearAllMocks(); }); it('renders title and description from settingsStore', () => { const mockGetText = vi.fn().mockImplementation((key, fallback) => { if (key === 'hero_title') return 'Test Title Line 1\nTest Title Line 2'; if (key === 'hero_desc') return 'Test Description Text'; return fallback; }); vi.mocked(useSettingsStore).mockImplementation((selector: any) => selector({ getText: mockGetText })); render(); expect(screen.getByText('Test Title Line 1')).toBeInTheDocument(); expect(screen.getByText('Test Title Line 2')).toBeInTheDocument(); expect(screen.getByText('Test Description Text')).toBeInTheDocument(); }); it('calls onShopNavigate when "مشاهده محصولات" button is clicked', () => { const mockGetText = vi.fn().mockImplementation((key, fallback) => fallback); vi.mocked(useSettingsStore).mockImplementation((selector: any) => selector({ getText: mockGetText })); const handleShopNavigate = vi.fn(); render(); const shopBtn = screen.getByText('مشاهده محصولات'); fireEvent.click(shopBtn); expect(handleShopNavigate).toHaveBeenCalled(); }); });