import { describe, expect, test } from 'vitest'
import { assetUrl, faviconUrl, joinPaths, pageUrl } from './asset-url.js'

describe('asset-url helpers', () => {
  describe('joinPaths', () => {
    test('joins base path with asset path', () => {
      expect(joinPaths('/', 'assets/style.css')).toBe('/assets/style.css')
      expect(joinPaths('/my-app/', 'assets/style.css')).toBe('/my-app/assets/style.css')
      expect(joinPaths('/my-app/', '/assets/style.css')).toBe('/my-app/assets/style.css')
    })

    test('handles trailing slash in base', () => {
      expect(joinPaths('/base/', 'path')).toBe('/base/path')
    })

    test('handles leading slash in path', () => {
      expect(joinPaths('/base/', '/path')).toBe('/base/path')
    })
  })

  describe('assetUrl', () => {
    test('creates asset URLs with base path', () => {
      expect(assetUrl('assets/app.ts', '/')).toBe('/assets/app.ts')
      expect(assetUrl('assets/app.ts', '/my-app/')).toBe('/my-app/assets/app.ts')
      expect(assetUrl('/assets/app.ts', '/my-app/')).toBe('/my-app/assets/app.ts')
    })
  })

  describe('faviconUrl', () => {
    test('creates favicon URLs with base path', () => {
      expect(faviconUrl('logo.ico', '/')).toBe('/logo.ico')
      expect(faviconUrl('logo.ico', '/my-app/')).toBe('/my-app/logo.ico')
      expect(faviconUrl('/logo.ico', '/my-app/')).toBe('/my-app/logo.ico')
    })
  })

  describe('pageUrl', () => {
    test('creates page URLs with base path', () => {
      expect(pageUrl('/', '/')).toBe('/')
      expect(pageUrl('', '/')).toBe('/')
      expect(pageUrl('/', '/my-app/')).toBe('/my-app/')
      expect(pageUrl('', '/my-app/')).toBe('/my-app/')
      expect(pageUrl('about', '/my-app/')).toBe('/my-app/about')
      expect(pageUrl('/about', '/my-app/')).toBe('/my-app/about')
    })
  })
})
