-- Test include tag functionality DO $$ DECLARE result text; total_tests integer := 0; passed_tests integer := 0; BEGIN -- Test 1: Plain text inclusion total_tests := total_tests + 1; BEGIN result := hemar.render( '{ "include": { "inner_template": { "content": "
Hello World
" } } }'::jsonb, $hemar${{ include inner_template }}$hemar$ ); IF result = 'Hello World
' THEN RAISE NOTICE 'Test %: Plain text inclusion works correctly', total_tests; passed_tests := passed_tests + 1; ELSE RAISE WARNING 'Test %: failed, Expected "Hello World
", got "%"', total_tests, result; END IF; EXCEPTION WHEN OTHERS THEN RAISE WARNING 'Test %: Plain text inclusion: FAILED with error: %', total_tests, SQLERRM; END; -- Test 2: Template with separate context total_tests := total_tests + 1; result := hemar.render( '{ "include": { "inner_template": { "template": "Hello {{ name }}!", "context": { "name": "John" } } } }'::jsonb, $hemar${{ include inner_template }}$hemar$ ); IF result = 'Hello John!' THEN RAISE NOTICE 'Test %: Template with separate context works correctly', total_tests; passed_tests := passed_tests + 1; ELSE RAISE WARNING 'Test %: failed, Expected "Hello John!", got "%"', total_tests, result; END IF; -- Test 3: Template with shared context total_tests := total_tests + 1; result := hemar.render( '{ "name": "John", "include": { "inner_template": { "template": "Hello {{ name }}!" } } }'::jsonb, $hemar${{ include inner_template }}$hemar$ ); IF result = 'Hello John!' THEN RAISE NOTICE 'Test % passed: Template with shared context works correctly', total_tests; passed_tests := passed_tests + 1; ELSE RAISE WARNING 'Test % failed: Expected "Hello John!", got "%"', total_tests, result; END IF; -- Test 4: Nested includes total_tests := total_tests + 1; result := hemar.render( '{ "include": { "outer_template": { "template": "Outer: {{ include inner_template }}", "context": { "include": { "inner_template": { "template": "Inner: {{ name }}", "context": { "name": "John" } } } } } } }'::jsonb, $hemar${{ include outer_template }}$hemar$ ); IF result = 'Outer: Inner: John' THEN RAISE NOTICE 'Test % passed: Nested includes work correctly', total_tests; passed_tests := passed_tests + 1; ELSE RAISE WARNING 'Test % failed: Expected "Outer: Inner: John", got "%"', total_tests, result; END IF; -- Test 5: Complex template with multiple includes total_tests := total_tests + 1; result := hemar.render( '{ "include": { "header": { "content": "