"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();
});
});