@@ -438,8 +438,56 @@ def test_boolean_conditional_with_json_filter
438
438
assert_equal ( expected_output , actual_output . strip )
439
439
end
440
440
441
+ # TESTING INCORRECT BEHAVIOUR OF LIQUID-RUBY
442
+ # If liquid-vm fails this test, we should change it.
443
+ def test_chained_conditional_with_object_contains
444
+ # Define the Liquid template to test
445
+ template = <<~LIQUID
446
+ {{ settings.prefilter_status and template contains 'collection' }}
447
+ LIQUID
448
+
449
+ # Test with context containing 'collection'
450
+ context_with_collection = {
451
+ "template" => {
452
+ "name" => "collection" ,
453
+ } ,
454
+ "settings" => {
455
+ "prefilter_status" => true ,
456
+ } ,
457
+ }
458
+ # NOTE: This is a bug that liquid-ruby `main` output returns the first value.
459
+ assert_with_lax_parsing ( template , "true" , context_with_collection )
460
+
461
+ # Test with context not containing 'collection'
462
+ context_without_collection = {
463
+ "template" => {
464
+ "name" => "not-collection" ,
465
+ } ,
466
+ "settings" => {
467
+ "prefilter_status" => true ,
468
+ } ,
469
+ }
470
+ # NOTE: This is a bug that liquid-ruby `main` output returns the first value.
471
+ assert_with_lax_parsing ( template , "true" , context_without_collection )
472
+ end
473
+
441
474
private
442
475
476
+ def assert_with_lax_parsing ( template , expected_output , context = { } )
477
+ prev_error_mode = Liquid ::Environment . default . error_mode
478
+ Liquid ::Environment . default . error_mode = :lax
479
+
480
+ begin
481
+ actual_output = Liquid ::Template . parse ( template ) . render ( context )
482
+ rescue StandardError => e
483
+ actual_output = e . message
484
+ ensure
485
+ Liquid ::Environment . default . error_mode = prev_error_mode
486
+ end
487
+
488
+ assert_equal ( expected_output . strip , actual_output . strip )
489
+ end
490
+
443
491
def assert_parity ( liquid_expression , expected_result , args = { } )
444
492
assert_condition ( liquid_expression , expected_result , args )
445
493
assert_expression ( liquid_expression , expected_result , args )
0 commit comments