40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
const { describe, it } = require("node:test");
|
|
const assert = require("node:assert");
|
|
const { extractJSON } = require("../src/openclaw");
|
|
|
|
describe("openclaw module", () => {
|
|
describe("extractJSON()", () => {
|
|
it("returns null for null input", () => {
|
|
assert.strictEqual(extractJSON(null), null);
|
|
});
|
|
|
|
it("returns null for empty string", () => {
|
|
assert.strictEqual(extractJSON(""), null);
|
|
});
|
|
|
|
it("returns null for non-JSON text", () => {
|
|
assert.strictEqual(extractJSON("no json here"), null);
|
|
});
|
|
|
|
it("extracts JSON object from clean input", () => {
|
|
const result = extractJSON('{"key": "value"}');
|
|
assert.strictEqual(result, '{"key": "value"}');
|
|
});
|
|
|
|
it("extracts JSON array from clean input", () => {
|
|
const result = extractJSON("[1, 2, 3]");
|
|
assert.strictEqual(result, "[1, 2, 3]");
|
|
});
|
|
|
|
it("strips non-JSON prefix from output", () => {
|
|
const result = extractJSON('Some warning text\n{"key": "value"}');
|
|
assert.strictEqual(result, '{"key": "value"}');
|
|
});
|
|
|
|
it("handles prefix with special characters", () => {
|
|
const result = extractJSON('Doctor warnings: OK\n[{"id": 1}]');
|
|
assert.strictEqual(result, '[{"id": 1}]');
|
|
});
|
|
});
|
|
});
|