Adding test case for issue found by Andrew with formulas, HBS in deep context objects was being evaluated which is not valid and breaks things.
This commit is contained in:
parent
04cdb7fb8b
commit
de91822ce7
|
@ -18,7 +18,7 @@ class Postprocessor {
|
||||||
|
|
||||||
module.exports.processors = [
|
module.exports.processors = [
|
||||||
new Postprocessor(PostProcessorNames.CONVERT_LITERALS, statement => {
|
new Postprocessor(PostProcessorNames.CONVERT_LITERALS, statement => {
|
||||||
if (!statement.includes(LITERAL_MARKER)) {
|
if (typeof statement !== "string" || !statement.includes(LITERAL_MARKER)) {
|
||||||
return statement
|
return statement
|
||||||
}
|
}
|
||||||
const splitMarkerIndex = statement.indexOf("-")
|
const splitMarkerIndex = statement.indexOf("-")
|
||||||
|
|
|
@ -0,0 +1,305 @@
|
||||||
|
{
|
||||||
|
"user":{
|
||||||
|
"_id":"ro_ta_users_us_b0bc7ba0ce304294accc1ced8165dd23",
|
||||||
|
"_rev":"1-e9199d92e7286005a9c11c614fdbcc51",
|
||||||
|
"email":"test2@test.com",
|
||||||
|
"status":"active",
|
||||||
|
"roleId":"PUBLIC",
|
||||||
|
"test-Created By_text":"",
|
||||||
|
"test-Updated By_text":""
|
||||||
|
},
|
||||||
|
"closestComponentId":"c670254c9e74e40518ee5becff53aa5be",
|
||||||
|
"url":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"c670254c9e74e40518ee5becff53aa5be":{
|
||||||
|
"rows":[
|
||||||
|
{
|
||||||
|
"_id":"ro_ta_1399af8a08d244a9885c674dd5555c84_8c1940e906254db5ac79c51011255d6c",
|
||||||
|
"_rev":"1-49ff5a4094a251a7767155eb85f4c9b7",
|
||||||
|
"sef":"sefesfesf",
|
||||||
|
"Name":"sefesf",
|
||||||
|
"tableId":"ta_1399af8a08d244a9885c674dd5555c84",
|
||||||
|
"Auto ID":1,
|
||||||
|
"Created At":"2021-05-27T10:30:37.386Z",
|
||||||
|
"Updated At":"2021-05-27T10:30:37.386Z",
|
||||||
|
"type":"row",
|
||||||
|
"Created By":[
|
||||||
|
{
|
||||||
|
"_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Updated By":[
|
||||||
|
{
|
||||||
|
"_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"testing":"2",
|
||||||
|
"Created By_text":"",
|
||||||
|
"Updated By_text":""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schema":{
|
||||||
|
"Auto ID":{
|
||||||
|
"name":"Auto ID",
|
||||||
|
"type":"number",
|
||||||
|
"subtype":"autoID",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"number",
|
||||||
|
"presence":false,
|
||||||
|
"numericality":{
|
||||||
|
"greaterThanOrEqualTo":"",
|
||||||
|
"lessThanOrEqualTo":""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastID":1
|
||||||
|
},
|
||||||
|
"Created By":{
|
||||||
|
"name":"Created By",
|
||||||
|
"type":"link",
|
||||||
|
"subtype":"createdBy",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"array",
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"tableId":"ta_users",
|
||||||
|
"fieldName":"test-Created By",
|
||||||
|
"relationshipType":"many-to-many"
|
||||||
|
},
|
||||||
|
"Created At":{
|
||||||
|
"name":"Created At",
|
||||||
|
"type":"datetime",
|
||||||
|
"subtype":"createdAt",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"presence":false,
|
||||||
|
"datetime":{
|
||||||
|
"latest":"",
|
||||||
|
"earliest":""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Updated By":{
|
||||||
|
"name":"Updated By",
|
||||||
|
"type":"link",
|
||||||
|
"subtype":"updatedBy",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"array",
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"tableId":"ta_users",
|
||||||
|
"fieldName":"test-Updated By",
|
||||||
|
"relationshipType":"many-to-many"
|
||||||
|
},
|
||||||
|
"Updated At":{
|
||||||
|
"name":"Updated At",
|
||||||
|
"type":"datetime",
|
||||||
|
"subtype":"updatedAt",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"presence":false,
|
||||||
|
"datetime":{
|
||||||
|
"latest":"",
|
||||||
|
"earliest":""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Name":{
|
||||||
|
"type":"string",
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
"maximum":null
|
||||||
|
},
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"fieldName":"test",
|
||||||
|
"name":"Name"
|
||||||
|
},
|
||||||
|
"sef":{
|
||||||
|
"type":"string",
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
"maximum":null
|
||||||
|
},
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"fieldName":"test",
|
||||||
|
"name":"sef"
|
||||||
|
},
|
||||||
|
"testing":{
|
||||||
|
"type":"formula",
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"fieldName":"test",
|
||||||
|
"name":"testing",
|
||||||
|
"formula":"{{ add [Auto ID] 1 }}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rowsLength":1
|
||||||
|
},
|
||||||
|
"data":{
|
||||||
|
"rows":[
|
||||||
|
{
|
||||||
|
"_id":"ro_ta_1399af8a08d244a9885c674dd5555c84_8c1940e906254db5ac79c51011255d6c",
|
||||||
|
"_rev":"1-49ff5a4094a251a7767155eb85f4c9b7",
|
||||||
|
"sef":"sefesfesf",
|
||||||
|
"Name":"sefesf",
|
||||||
|
"tableId":"ta_1399af8a08d244a9885c674dd5555c84",
|
||||||
|
"Auto ID":1,
|
||||||
|
"Created At":"2021-05-27T10:30:37.386Z",
|
||||||
|
"Updated At":"2021-05-27T10:30:37.386Z",
|
||||||
|
"type":"row",
|
||||||
|
"Created By":[
|
||||||
|
{
|
||||||
|
"_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Updated By":[
|
||||||
|
{
|
||||||
|
"_id":"ro_ta_users_us_de1bd7fe710146db990d92845008c763"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"testing":"2",
|
||||||
|
"Created By_text":"",
|
||||||
|
"Updated By_text":""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schema":{
|
||||||
|
"Auto ID":{
|
||||||
|
"name":"Auto ID",
|
||||||
|
"type":"number",
|
||||||
|
"subtype":"autoID",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"number",
|
||||||
|
"presence":false,
|
||||||
|
"numericality":{
|
||||||
|
"greaterThanOrEqualTo":"",
|
||||||
|
"lessThanOrEqualTo":""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastID":1
|
||||||
|
},
|
||||||
|
"Created By":{
|
||||||
|
"name":"Created By",
|
||||||
|
"type":"link",
|
||||||
|
"subtype":"createdBy",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"array",
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"tableId":"ta_users",
|
||||||
|
"fieldName":"test-Created By",
|
||||||
|
"relationshipType":"many-to-many"
|
||||||
|
},
|
||||||
|
"Created At":{
|
||||||
|
"name":"Created At",
|
||||||
|
"type":"datetime",
|
||||||
|
"subtype":"createdAt",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"presence":false,
|
||||||
|
"datetime":{
|
||||||
|
"latest":"",
|
||||||
|
"earliest":""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Updated By":{
|
||||||
|
"name":"Updated By",
|
||||||
|
"type":"link",
|
||||||
|
"subtype":"updatedBy",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"array",
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"tableId":"ta_users",
|
||||||
|
"fieldName":"test-Updated By",
|
||||||
|
"relationshipType":"many-to-many"
|
||||||
|
},
|
||||||
|
"Updated At":{
|
||||||
|
"name":"Updated At",
|
||||||
|
"type":"datetime",
|
||||||
|
"subtype":"updatedAt",
|
||||||
|
"icon":"ri-magic-line",
|
||||||
|
"autocolumn":true,
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
|
||||||
|
},
|
||||||
|
"presence":false,
|
||||||
|
"datetime":{
|
||||||
|
"latest":"",
|
||||||
|
"earliest":""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Name":{
|
||||||
|
"type":"string",
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
"maximum":null
|
||||||
|
},
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"fieldName":"test",
|
||||||
|
"name":"Name"
|
||||||
|
},
|
||||||
|
"sef":{
|
||||||
|
"type":"string",
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"length":{
|
||||||
|
"maximum":null
|
||||||
|
},
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"fieldName":"test",
|
||||||
|
"name":"sef"
|
||||||
|
},
|
||||||
|
"testing":{
|
||||||
|
"type":"formula",
|
||||||
|
"constraints":{
|
||||||
|
"type":"string",
|
||||||
|
"presence":false
|
||||||
|
},
|
||||||
|
"fieldName":"test",
|
||||||
|
"name":"testing",
|
||||||
|
"formula":"{{ add [Auto ID] 1 }}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rowsLength":1
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
const { processString, processObject, isValid } = require("../src/index.cjs")
|
const { processString, processObject, isValid } = require("../src/index.cjs")
|
||||||
|
const tableJson = require("./examples/table.json")
|
||||||
|
|
||||||
describe("test the custom helpers we have applied", () => {
|
describe("test the custom helpers we have applied", () => {
|
||||||
it("should be able to use the object helper", async () => {
|
it("should be able to use the object helper", async () => {
|
||||||
|
@ -388,4 +389,17 @@ describe("Cover a few complex use cases", () => {
|
||||||
const output = await processObject(input, context)
|
const output = await processObject(input, context)
|
||||||
expect(output.text).toBe("12-01")
|
expect(output.text).toBe("12-01")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should only invalidate a single string in an object", async () => {
|
||||||
|
const input = {
|
||||||
|
dataProvider:"{{ literal [c670254c9e74e40518ee5becff53aa5be] }}",
|
||||||
|
theme:"spectrum--lightest",
|
||||||
|
showAutoColumns:false,
|
||||||
|
quiet:true,
|
||||||
|
size:"spectrum--medium",
|
||||||
|
rowCount:8,
|
||||||
|
}
|
||||||
|
const output = await processObject(input, tableJson)
|
||||||
|
expect(output.dataProvider).not.toBe("Invalid Binding")
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue