import { assertEquals } from 'https://deno.land/std@0.175.0/testing/asserts.ts'
import { rewriteDataPath } from './util.ts'

Deno.test('rewriteDataPath', async (t) => {
  await t.step('should rewrite a data url', async () => {
    const dataUrl = '/_next/data/build-id/rewrite-me.json'
    const newRoute = '/target'
    const result = rewriteDataPath({ dataUrl, newRoute })
    assertEquals(result, '/_next/data/build-id/target.json')
  })

  await t.step('should rewrite a data url with a base path', async () => {
    const dataUrl = '/baseDir/_next/data/build-id/rewrite-me.json'
    const newRoute = '/target'
    const result = rewriteDataPath({ dataUrl, newRoute, basePath: '/baseDir' })
    assertEquals(result, '/baseDir/_next/data/build-id/target.json')
  })

  await t.step('should rewrite from an index data url', async () => {
    const dataUrl = '/_next/data/build-id/index.json'
    const newRoute = '/target'
    const result = rewriteDataPath({ dataUrl, newRoute })
    assertEquals(result, '/_next/data/build-id/target.json')
  })

  await t.step('should rewrite to an index data url', async () => {
    const dataUrl = '/_next/data/build-id/rewrite-me.json'
    const newRoute = '/'
    const result = rewriteDataPath({ dataUrl, newRoute })
    assertEquals(result, '/_next/data/build-id/index.json')
  })

  await t.step('should rewrite to a route with a trailing slash', async () => {
    const dataUrl = '/_next/data/build-id/rewrite-me.json'
    const newRoute = '/target/'
    const result = rewriteDataPath({ dataUrl, newRoute })
    assertEquals(result, '/_next/data/build-id/target.json')
  })
})