import {resolve, join, dirname} from "node:path";
import {test, expect} from "@jest/globals";

import {runBrowserTest} from "../util/index.ts";

import html from "../../src/index.ts";

import {fileURLToPath} from "node:url";
const __dirname = dirname(fileURLToPath(import.meta.url));
process.chdir(join(__dirname, 'fixtures'));


test('rewrite-url', async () => {
  const out = await runBrowserTest({
    input: {
      ['index']: 'index.html',
      ['admin/index']: resolve(__dirname,'fixtures','admin/index.html'),
      ['admin/app']: resolve(__dirname,'fixtures','admin/app.js'),
    },
    plugins: [
      html({
        rewriteUrl(relative, {rootPath, from}){
          return `/${rootPath}`;
        }
      }),
    ],
  },{
    filterOutput:{
      // TODO: Currently only need the "await getCode(bundle, output);" as output
    },
    path: '/admin'
  }, {
      dir: 'output', // Output all files
      format: 'es', //  iifi and cjs should be added to tests
      sourcemap: true,// Test if #sourcemapUrl is not accidentally included in the html-output
  });
  expect(out.code).toMatchSnapshot(); // Snapshot the result code

  // const bundle = await rollup({
  //   input: {
  //     ['index']: 'index.html',
  //     ['admin/index']: resolve(__dirname,'fixtures','admin/index.html'),
  //     ['admin/app']: resolve(__dirname,'fixtures','admin/app.js'),
  //   },
  //   plugins: [
  //     html({
  //       rewriteUrl(relative, {rootPath, from}){
  //         return `/${rootPath}`;
  //       }
  //     }),
  //   ]
  // });
  // const code = await getCode(bundle, output);
  // debugPrintOutput('rewrite-url',code);
  // t.snapshot(code);
});

// TODO various parameters
//  - format: cjs, iifi, ...
//  - sourcemap: inline, false, (and the various exotic sourcemap options)
// Watch mode tests would be its own dir
// ...
