import { afterAll, beforeEach, describe, expect, it } from 'vitest'
import { serializeReservationForDashboard } from './reservation.presenter'

describe('serializeReservationForDashboard', () => {
  const originalDashboardUrl = process.env.DASHBOARD_URL
  const originalPublicDashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL

  beforeEach(() => {
    process.env.DASHBOARD_URL = 'http://localhost:3000/dashboard'
    process.env.NEXT_PUBLIC_DASHBOARD_URL = ''
  })

  afterAll(() => {
    process.env.DASHBOARD_URL = originalDashboardUrl
    process.env.NEXT_PUBLIC_DASHBOARD_URL = originalPublicDashboardUrl
  })

  it('rewrites customer license image URLs to the protected route', () => {
    const result = serializeReservationForDashboard({
      id: 'reservation-1',
      status: 'CONFIRMED',
      source: 'CARPLACE',
      contractNumber: null,
      invoiceNumber: null,
      paymentStatus: 'UNPAID',
      extras: {},
      customer: {
        id: 'customer-1',
        driverLicense: 'DL-1',
        dateOfBirth: new Date('1990-01-01T00:00:00.000Z'),
        address: { identityDocumentNumber: 'CIN-1', fullAddress: 'Casablanca' },
        licenseImageUrl: 'http://localhost:4000/storage/companies/company-1/customers/customer-1/license.jpg',
        licenseValidationStatus: 'APPROVED',
      },
    })

    expect(result.customer?.licenseImageUrl).toBe('http://localhost:3000/dashboard/api/v1/customers/customer-1/license-image')
  })
})
