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
9f3a9f2383
commit
4c5bcb11a2
|
@ -18,7 +18,7 @@ class Postprocessor {
|
|||
|
||||
module.exports.processors = [
|
||||
new Postprocessor(PostProcessorNames.CONVERT_LITERALS, statement => {
|
||||
if (!statement.includes(LITERAL_MARKER)) {
|
||||
if (typeof statement !== "string" || !statement.includes(LITERAL_MARKER)) {
|
||||
return statement
|
||||
}
|
||||
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 tableJson = require("./examples/table.json")
|
||||
|
||||
describe("test the custom helpers we have applied", () => {
|
||||
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)
|
||||
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