vkashti / app / __tests__ / services.test.tsx
services.test.tsx
Raw
import React from 'react'
import { render, screen } from '@testing-library/react'
import '@testing-library/jest-dom'
import BoardGames from '../services/board-games/page'
import Coworking from '../services/coworking/page'
import Birthdays from '../services/birthdays/page'
import Companies from '../services/companies/page'

// Mock ReserveForm component
jest.mock('@/components/ui/Reserve', () => ({
  __esModule: true,
  default: () => <div data-testid="reserve-form">Reserve Form</div>
}))

// Mock FAQ component
jest.mock('@/components/ui/FAQ', () => ({
  __esModule: true,
  default: ({ questions }: { questions: Array<{ question: string }> }) => (
    <div data-testid="faq-section">
      {questions.map((q, i) => (
        <div key={i} data-testid="faq-question">{q.question}</div>
      ))}
    </div>
  )
}))

describe('Service Pages', () => {
  describe('Board Games Page', () => {
    it('renders the page title', async () => {
      render(await BoardGames())
      expect(screen.getByText('Резервация за настолни игри')).toBeInTheDocument()
    })

    it('renders the reservation form', async () => {
      render(await BoardGames())
      expect(screen.getByTestId('reserve-form')).toBeInTheDocument()
    })

    it('renders FAQ section with questions', async () => {
      render(await BoardGames())
      const questions = screen.getAllByTestId('faq-question')
      expect(questions).toHaveLength(7) // Board games page has 7 FAQ items
    })
  })

  describe('Coworking Page', () => {
    it('renders the page title', async () => {
      render(await Coworking())
      expect(screen.getByText(/коуъркинг/i)).toBeInTheDocument()
    })

    it('renders the reservation form', async () => {
      render(await Coworking())
      expect(screen.getByTestId('reserve-form')).toBeInTheDocument()
    })
  })

  describe('Birthdays Page', () => {
    it('renders the page title', async () => {
      render(await Birthdays())
      expect(screen.getByText(/рожден ден/i)).toBeInTheDocument()
    })

    it('renders the reservation form', async () => {
      render(await Birthdays())
      expect(screen.getByTestId('reserve-form')).toBeInTheDocument()
    })

    it('renders FAQ section', async () => {
      render(await Birthdays())
      expect(screen.getByTestId('faq-section')).toBeInTheDocument()
    })
  })

  describe('Companies Page', () => {
    it('renders the page title', async () => {
      render(await Companies())
      expect(screen.getByRole('heading', { name: /фирмени събития/i })).toBeInTheDocument()
    })

    it('renders the reservation form', async () => {
      render(await Companies())
      expect(screen.getByTestId('reserve-form')).toBeInTheDocument()
    })

    it('renders FAQ section', async () => {
      render(await Companies())
      expect(screen.getByTestId('faq-section')).toBeInTheDocument()
    })
  })
})