ladybird/Libraries/LibJS/Tests/modules/json-modules.js
Timothy Flynn 47ba231a9b LibJS: Do not consume "with" tokens in import statements as identifiers
The "with" statement is its own token (TokenType::With), and thus would
fail to parse as an identifier. We've already asserted that the token
we are parsing is "with" or "assert", so just consume it.
2025-01-21 14:58:32 +01:00

67 lines
1.9 KiB
JavaScript

describe("basic behavior", () => {
test("can import json modules (with import function)", () => {
let passed = false;
let error = null;
let result = null;
import("./json-module.json", { assert: { type: "json" } })
.then(jsonObj => {
passed = true;
result = jsonObj;
})
.catch(err => {
error = err;
});
runQueuedPromiseJobs();
if (error) throw error;
console.log(JSON.stringify(result));
expect(passed).toBeTrue();
expect(result).not.toBeNull();
expect(result).not.toBeUndefined();
const jsonResult = result.default;
expect(jsonResult).not.toBeNull();
expect(jsonResult).not.toBeUndefined();
expect(jsonResult).toHaveProperty("value", "value");
expect(jsonResult).toHaveProperty("array", [1, 2, 3]);
expect(jsonResult).toHaveProperty("map", { innerValue: "innerValue" });
});
test("can import json modules (with import statement)", () => {
let passed = false;
let error = null;
let result = null;
import("./json-module.mjs")
.then(jsonObj => {
passed = true;
result = jsonObj;
})
.catch(err => {
error = err;
});
runQueuedPromiseJobs();
if (error) throw error;
console.log(JSON.stringify(result));
expect(passed).toBeTrue();
expect(result).not.toBeNull();
expect(result).not.toBeUndefined();
const jsonResult = result.default;
expect(jsonResult).not.toBeNull();
expect(jsonResult).not.toBeUndefined();
expect(jsonResult).toHaveProperty("value", "value");
expect(jsonResult).toHaveProperty("array", [1, 2, 3]);
expect(jsonResult).toHaveProperty("map", { innerValue: "innerValue" });
});
});