54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import {
|
|
processStringWithLogsSync,
|
|
encodeJSBinding,
|
|
defaultJSSetup,
|
|
} from "../src/index"
|
|
|
|
const processJS = (js: string, context?: object) => {
|
|
return processStringWithLogsSync(encodeJSBinding(js), context)
|
|
}
|
|
|
|
describe("Javascript", () => {
|
|
beforeAll(() => {
|
|
defaultJSSetup()
|
|
})
|
|
|
|
describe("Test logging in JS bindings", () => {
|
|
it("should execute a simple expression", () => {
|
|
const output = processJS(
|
|
`console.log("hello");
|
|
console.log("world");
|
|
console.log("foo");
|
|
return "hello"`
|
|
)
|
|
expect(output.result).toEqual("hello")
|
|
expect(output.logs[0].log).toEqual(["hello"])
|
|
expect(output.logs[0].line).toEqual(1)
|
|
expect(output.logs[1].log).toEqual(["world"])
|
|
expect(output.logs[1].line).toEqual(2)
|
|
expect(output.logs[2].log).toEqual(["foo"])
|
|
expect(output.logs[2].line).toEqual(3)
|
|
})
|
|
})
|
|
|
|
it("should log comma separated values", () => {
|
|
const output = processJS(`console.log(1, { a: 1 }); return 1`)
|
|
expect(output.logs[0].log).toEqual([1, JSON.stringify({ a: 1 })])
|
|
expect(output.logs[0].line).toEqual(1)
|
|
})
|
|
|
|
it("should return the type working with warn", () => {
|
|
const output = processJS(`console.warn("warning"); return 1`)
|
|
expect(output.logs[0].log).toEqual(["warning"])
|
|
expect(output.logs[0].line).toEqual(1)
|
|
expect(output.logs[0].type).toEqual("warn")
|
|
})
|
|
|
|
it("should return the type working with error", () => {
|
|
const output = processJS(`console.error("error"); return 1`)
|
|
expect(output.logs[0].log).toEqual(["error"])
|
|
expect(output.logs[0].line).toEqual(1)
|
|
expect(output.logs[0].type).toEqual("error")
|
|
})
|
|
})
|