#!/bin/sh

if [ -n "$AUTOPKGTEST_TMP" ]; then
    rm -f  'node_modules/exenv-es6'
    pkgjs-ln 'exenv-es6'
    pkgjs-ln 'jsdom'
else
    rm -f  'node_modules/exenv-es6'
    ln -s .. 'node_modules/exenv-es6'
fi


node<<'EOF'
import assert from "node:assert";
import { JSDOM } from "jsdom";

// Import exenv-es6 modules
import { canUseDOM } from "exenv-es6/dist/can-use-dom.js";
import { canUseEventListeners } from "exenv-es6/dist/can-use-event-listeners.js";
import { canUseViewport } from "exenv-es6/dist/can-use-viewport.js";
import { canUseWorkers } from "exenv-es6/dist/can-use-workers.js";

// --- Create jsdom environment ---
const dom = new JSDOM(`<!DOCTYPE html><html><body></body></html>`, {
    pretendToBeVisual: true
});

const { window } = dom;

// Patch browser globals (safe ones only)
global.window = window;
global.document = window.document;
global.HTMLElement = window.HTMLElement;
global.Node = window.Node;
global.getComputedStyle = window.getComputedStyle;

// --- Tests equivalent to your Jest suite ---

// canUseDOM
assert.strictEqual(canUseDOM(), true, "canUseDOM() should return true");

let testString;
if (canUseDOM()) {
    testString = "DOM is available";
}
assert.strictEqual(
    testString,
    "DOM is available",
    "canUseDOM() should allow DOM-dependent code"
);

// canUseEventListeners
assert.strictEqual(
    canUseEventListeners(),
    true,
    "canUseEventListeners() should return true"
);

// canUseViewport
assert.strictEqual(
    canUseViewport(),
    true,
    "canUseViewport() should return true"
);

// canUseWorkers — jsdom does NOT support workers
assert.strictEqual(
    canUseWorkers(),
    false,
    "canUseWorkers() should be false under jsdom"
);

console.log("exenv-es6 autopkgtest OK");
EOF
