budibase/packages/string-templates/test/manifest.spec.js

47 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-01-22 10:40:26 +01:00
jest.mock("@budibase/handlebars-helpers/lib/math", () => {
const actual = jest.requireActual("@budibase/handlebars-helpers/lib/math")
return {
...actual,
random: () => 10,
}
})
2024-01-19 13:45:23 +01:00
const fs = require("fs")
const { processString } = require("../src/index.cjs")
2024-01-19 14:05:35 +01:00
const tk = require("timekeeper")
tk.freeze("2021-01-21T12:00:00")
2024-01-19 13:45:23 +01:00
const manifest = JSON.parse(
fs.readFileSync(require.resolve("../manifest.json"), "utf8")
)
const examples = Object.keys(manifest).flatMap(collection =>
Object.keys(manifest[collection]).map(fnc => [collection, fnc])
)
describe("manifest", () => {
describe("examples are valid", () => {
it.each(examples)("%s - %s", async (collection, func) => {
const example = manifest[collection][func].example
2024-01-22 12:16:52 +01:00
let [hbs, js] = example.split("->").map(x => x.trim())
2024-01-22 12:24:03 +01:00
hbs = hbs.replace(/\[1, 2, 3\]/, "array3")
hbs = hbs.replace(/\[1, 2, 3, 4\]/, "array4")
if (js === undefined) {
// The function has no return value
return
}
expect(
await processString(hbs, {
array3: [1, 2, 3],
array4: [1, 2, 3, 4],
})
).toEqual(js)
2024-01-19 13:45:23 +01:00
})
})
})