@@ -213,10 +213,12 @@ defmodule SolidTest do
213213 assert error == [
214214 % Solid.UndefinedVariableError {
215215 variable: [ "var1" ] ,
216+ original_name: "var1" ,
216217 loc: % Solid.Parser.Loc { line: 1 , column: 5 }
217218 } ,
218219 % Solid.UndefinedVariableError {
219220 variable: [ "var2" ] ,
221+ original_name: "var2" ,
220222 loc: % Solid.Parser.Loc { line: 1 , column: 16 }
221223 }
222224 ]
@@ -254,16 +256,19 @@ defmodule SolidTest do
254256 assert error == [
255257 % Solid.UndefinedVariableError {
256258 variable: [ "var1" ] ,
259+ original_name: "var1" ,
257260 loc: % Solid.Parser.Loc { line: 1 , column: 5 }
258261 } ,
259262 % Solid.UndefinedVariableError {
260263 variable: [ "var2" ] ,
264+ original_name: "var2" ,
261265 loc: % Solid.Parser.Loc { line: 1 , column: 16 }
262266 } ,
263267 # FIXME this should somehow point out which file?
264268 # Check how liquid does this
265269 % Solid.UndefinedVariableError {
266270 variable: [ "var3" ] ,
271+ original_name: "var3" ,
267272 loc: % Solid.Parser.Loc { line: 1 , column: 4 }
268273 }
269274 ]
@@ -296,6 +301,7 @@ defmodule SolidTest do
296301 assert error == [
297302 % Solid.UndefinedVariableError {
298303 variable: [ "var1" ] ,
304+ original_name: "var1" ,
299305 loc: % Solid.Parser.Loc { line: 1 , column: 5 }
300306 } ,
301307 % Solid.UndefinedFilterError {
@@ -304,9 +310,47 @@ defmodule SolidTest do
304310 } ,
305311 % Solid.UndefinedVariableError {
306312 variable: [ "var2" ] ,
313+ original_name: "var2" ,
307314 loc: % Solid.Parser.Loc { line: 1 , column: 38 }
308315 }
309316 ]
310317 end
318+
319+ test "undefined variable error message with multiple variables" do
320+ template =
321+ "{{ var1 }}\n {{ event.name }}\n {{ user.properties['name'] }}\n "
322+
323+ { :error , [ first_error , second_error , third_error ] , _partial_result } =
324+ template
325+ |> Solid . parse! ( )
326+ |> Solid . render ( % { } , strict_variables: true , file_system: { TestFileSystem , nil } )
327+
328+ assert String . contains? ( Solid.UndefinedVariableError . message ( first_error ) , "var1" )
329+
330+ assert String . contains? (
331+ Solid.UndefinedVariableError . message ( second_error ) ,
332+ "event.name"
333+ )
334+
335+ assert String . contains? (
336+ Solid.UndefinedVariableError . message ( third_error ) ,
337+ "user.properties['name']"
338+ )
339+ end
340+
341+ test "undefined filter error message with line number" do
342+ template = "{{ var1 | not_a_filter }}"
343+
344+ assert_raise Solid.RenderError ,
345+ "1 error(s) found while rendering\n 1: Undefined filter not_a_filter" ,
346+ fn ->
347+ template
348+ |> Solid . parse! ( )
349+ |> Solid . render! ( % { "var1" => "value" } ,
350+ strict_filters: true ,
351+ file_system: { TestFileSystem , nil }
352+ )
353+ end
354+ end
311355 end
312356end
0 commit comments