Validate bodies

This commit is contained in:
Adria Navarro 2025-02-27 14:39:13 +01:00
parent 7905df5a4a
commit e8b6a3c90e
1 changed files with 103 additions and 33 deletions

View File

@ -98,6 +98,7 @@ describe("hbs validator", () => {
})
describe("expressions with parameters", () => {
describe("basic expression", () => {
const validators: CodeValidator = {
helperFunction: {
arguments: ["a", "b", "c"],
@ -138,6 +139,75 @@ describe("hbs validator", () => {
},
])
})
})
describe("body expressions", () => {
const validators: CodeValidator = {
bodyFunction: {
arguments: ["a", "b", "c"],
requiresBlock: true,
},
nonBodyFunction: {
arguments: ["a", "b"],
},
}
it("validate valid params", () => {
const text = "{{#bodyFunction 1 99 }}body{{/bodyFunction}}"
const result = validateHbsTemplate(text, validators)
expect(result).toHaveLength(0)
})
it("validate empty bodies", () => {
const text = "{{#bodyFunction 1 99 }}{{/bodyFunction}}"
const result = validateHbsTemplate(text, validators)
expect(result).toHaveLength(0)
})
it("validate too little parameters", () => {
const text = "{{#bodyFunction 1 }}{{/bodyFunction}}"
const result = validateHbsTemplate(text, validators)
expect(result).toEqual([
{
from: 0,
message: `Helper "bodyFunction" expects 3 parameters (a, b, c), but got 2.`,
severity: "error",
to: 37,
},
])
})
it("validate too many parameters", () => {
const text = "{{#bodyFunction 1 99 'a' 0 }}{{/bodyFunction}}"
const result = validateHbsTemplate(text, validators)
expect(result).toEqual([
{
from: 0,
message: `Helper "bodyFunction" expects 3 parameters (a, b, c), but got 5.`,
severity: "error",
to: 46,
},
])
})
it("validate non-supported body usages", () => {
const text = "{{#nonBodyFunction 1 99}}{{/nonBodyFunction}}"
const result = validateHbsTemplate(text, validators)
expect(result).toEqual([
{
from: 0,
message: `Helper "nonBodyFunction" should not contain a body.`,
severity: "error",
to: 45,
},
])
})
})
describe("optional parameters", () => {
it("supports empty parameters", () => {