import { render, screen } from '@testing-library/react'; import { describe, expect, it, vi } from 'vitest'; vi.mock('@/lib/chuyen-nhuong-api', () => ({ CATEGORY_LABELS: { FURNITURE: 'Nội thất', APPLIANCE: 'Thiết bị', OFFICE_EQUIPMENT: 'Văn phòng', KITCHEN: 'Bếp', PREMISES: 'Mặt bằng', FULL_UNIT: 'Trọn gói' }, CATEGORY_ICONS: { FURNITURE: () => , APPLIANCE: () => , OFFICE_EQUIPMENT: () => , KITCHEN: () => , PREMISES: () => , FULL_UNIT: () => , }, STATUS_LABELS: { DRAFT: 'Nháp', PENDING_REVIEW: 'Chờ duyệt', ACTIVE: 'Đang đăng', RESERVED: 'Đã đặt cọc', SOLD: 'Đã bán', EXPIRED: 'Hết hạn', REJECTED: 'Từ chối' }, CONDITION_LABELS: { NEW: 'Mới', LIKE_NEW: 'Như mới', GOOD: 'Tốt', FAIR: 'Trung bình', WORN: 'Cũ' }, CONDITION_COLORS: { NEW: 'bg-green-100 text-green-800', LIKE_NEW: 'bg-blue-100 text-blue-800', GOOD: 'bg-emerald-100 text-emerald-800', FAIR: 'bg-amber-100 text-amber-800', WORN: 'bg-red-100 text-red-800' }, })); import { ChuyenNhuongDetailClient } from '../chuyen-nhuong-detail-client'; const listing = { id: 't1', sellerId: 'u1', category: 'FURNITURE' as const, status: 'ACTIVE' as const, title: 'Bộ nội thất văn phòng', description: 'Mô tả chi tiết', address: '123 Nguyễn Huệ', ward: 'Bến Nghé', district: 'Quận 1', city: 'Hồ Chí Minh', askingPriceVND: '15000000', aiEstimatePriceVND: '14000000', aiConfidence: 0.85, isNegotiable: true, areaM2: null, viewCount: 42, saveCount: 10, inquiryCount: 5, contactName: 'Nguyễn Văn A', contactPhone: '0912345678', items: [ { id: 'i1', name: 'Bàn', brand: null, modelName: null, category: 'FURNITURE' as const, condition: 'GOOD' as const, purchaseYear: 2022, originalPriceVND: 5000000, askingPriceVND: '3000000', aiEstimatePriceVND: null, quantity: 1, notes: null }, ], businessType: 'Quán cà phê', monthlyRentVND: '20000000', depositMonths: 3, remainingLeaseMo: 18, footTraffic: 'Cao', pricingSource: 'MANUAL' as const, } as never; describe('ChuyenNhuongDetailClient', () => { it('renders listing title', () => { render(); expect(screen.getByText('Bộ nội thất văn phòng')).toBeInTheDocument(); }); it('renders status badge', () => { render(); expect(screen.getByText('Đang đăng')).toBeInTheDocument(); }); it('renders negotiable badge', () => { render(); expect(screen.getByText('Thương lượng')).toBeInTheDocument(); }); it('renders asking price', () => { render(); // formatVND uses Intl.NumberFormat('vi-VN') expect(screen.getAllByText(/15\.000\.000/).length).toBeGreaterThan(0); }); it('renders AI confidence', () => { render(); expect(screen.getByText('85%')).toBeInTheDocument(); }); it('renders contact info', () => { render(); expect(screen.getByText('Nguyễn Văn A')).toBeInTheDocument(); expect(screen.getByText('0912345678')).toBeInTheDocument(); }); it('renders business info section', () => { render(); expect(screen.getByText('Thông tin kinh doanh')).toBeInTheDocument(); expect(screen.getByText('Quán cà phê')).toBeInTheDocument(); }); it('renders items table heading', () => { render(); expect(screen.getByText(/Danh sách vật phẩm/)).toBeInTheDocument(); }); });