feat(amazon-shopping): parse filters and extract search candidates
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { mkdtemp, mkdir, writeFile } from "node:fs/promises";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { describe, it } from "node:test";
|
||||
|
||||
import { resolveWebAutomationRuntime } from "../src/web-automation-runtime.js";
|
||||
|
||||
async function createRuntime() {
|
||||
const dir = await mkdtemp(join(tmpdir(), "amazon-shopping-runtime-"));
|
||||
await writeFile(join(dir, "check-install.js"), "console.log('ok');\n");
|
||||
await writeFile(join(dir, "package.json"), "{\"type\":\"module\"}\n");
|
||||
await mkdir(join(dir, "node_modules", ".bin"), { recursive: true });
|
||||
await writeFile(join(dir, "node_modules", ".bin", "tsx"), "#!/usr/bin/env node\n");
|
||||
return dir;
|
||||
}
|
||||
|
||||
describe("resolveWebAutomationRuntime", () => {
|
||||
it("uses AMAZON_SHOPPING_WEB_AUTOMATION_DIR first", async () => {
|
||||
const runtimeDir = await createRuntime();
|
||||
const resolved = await resolveWebAutomationRuntime({
|
||||
env: { AMAZON_SHOPPING_WEB_AUTOMATION_DIR: runtimeDir },
|
||||
homeDir: "/missing-home",
|
||||
skillDir: "/missing-skill"
|
||||
});
|
||||
|
||||
assert.equal(resolved.scriptsDir, runtimeDir);
|
||||
assert.deepEqual(resolved.checkInstall, {
|
||||
cwd: runtimeDir,
|
||||
command: "node",
|
||||
args: ["check-install.js"]
|
||||
});
|
||||
});
|
||||
|
||||
it("returns a clear error when required files are missing", async () => {
|
||||
const dir = await mkdtemp(join(tmpdir(), "amazon-shopping-runtime-missing-"));
|
||||
await assert.rejects(
|
||||
() => resolveWebAutomationRuntime({
|
||||
env: { AMAZON_SHOPPING_WEB_AUTOMATION_DIR: dir },
|
||||
homeDir: "/missing-home",
|
||||
skillDir: "/missing-skill"
|
||||
}),
|
||||
/check-install.js/
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user