Feature: Template Renderer Module Coverage As a developer I want to test all functionality in the template renderer module So that we achieve 90%+ code coverage for the renderer.py file Background: Given I have a clean test environment for template renderer # Test TemplateEngine enum and basic initialization Scenario: Test TemplateEngine enum values Given I import the TemplateEngine enum When I access the enum values Then I should have SIMPLE, JINJA2, and MUSTACHE engines # Test _resolve_path function Scenario: Test _resolve_path with nested dictionary paths Given I have a context dictionary with nested values When I resolve a dotted path in the context Then I should get the correct nested value Scenario: Test _resolve_path with object attributes Given I have an object with attributes When I resolve a dotted path on the object Then I should get the correct attribute value Scenario: Test _resolve_path with missing keys Given I have a context dictionary When I resolve a path that doesn't exist Then I should get an empty string # Test TemplateRenderer initialization Scenario: Test TemplateRenderer initialization with SIMPLE engine Given I initialize a TemplateRenderer with SIMPLE engine Then the engine should be str.format Scenario: Test TemplateRenderer initialization with JINJA2 engine Given I initialize a TemplateRenderer with JINJA2 engine Then the engine should be a Jinja2 Environment Scenario: Test TemplateRenderer initialization with MUSTACHE engine Given I initialize a TemplateRenderer with MUSTACHE engine Then the engine should be a Pystache Renderer Scenario: Test TemplateRenderer initialization with unsupported engine When I try to initialize TemplateRenderer with an invalid engine Then I should get a TemplateError about unsupported engine # Skip Jinja2/Pystache availability tests for now - they're complex to mock # Focus on actual functionality testing # Test _render_simple_with_jinja_like function Scenario: Test simple Jinja-like rendering with basic placeholders Given I have a template with simple placeholders When I render the template with Jinja-like syntax Then the placeholders should be replaced correctly Scenario: Test simple Jinja-like rendering with expressions Given I have a template with expression placeholders And I have a context dictionary When I render the template with Jinja-like syntax Then the expressions should be evaluated correctly Scenario: Test simple Jinja-like rendering with None values Given I have a template with placeholders And I have a context with None values When I render the template with Jinja-like syntax Then None values should become empty strings # Test register_template functionality Scenario: Test register_template with empty name Given I have a TemplateRenderer When I try to register a template with empty name Then I should get a TemplateError about empty name Scenario: Test register_template with SIMPLE engine Given I have a TemplateRenderer with SIMPLE engine When I register a template with a name and content Then the template should be stored as a string Scenario: Test register_template with JINJA2 engine Given I have a TemplateRenderer with JINJA2 engine When I register a template with a name and content Then the template should be compiled and stored Scenario: Test register_template with invalid Jinja2 template Given I have a TemplateRenderer with JINJA2 engine When I try to register an invalid Jinja2 template Then I should get a TemplateError about registration failure Scenario: Test register_template with MUSTACHE engine Given I have a TemplateRenderer with MUSTACHE engine When I register a template with a name and content Then the template should be stored as a string # Test render functionality Scenario: Test render with nonexistent template Given I have a TemplateRenderer When I try to render a template that doesn't exist Then I should get a TemplateError about template not found Scenario: Test render with SIMPLE engine and valid template Given I have a TemplateRenderer with SIMPLE engine And I have registered a simple template When I render the template with context data Then I should get the rendered result Scenario: Test render with SIMPLE engine and missing variables Given I have a TemplateRenderer with SIMPLE engine And I have registered a template with placeholders When I render the template with incomplete context Then I should get a TemplateError about missing variables Scenario: Test render with JINJA2 engine and valid template Given I have a TemplateRenderer with JINJA2 engine And I have registered a Jinja2 template When I render the template with context data Then I should get the rendered result Scenario: Test render with JINJA2 engine and invalid template object Given I have a TemplateRenderer with JINJA2 engine And I have a template object without render method When I try to render the template Then I should get a TemplateError about missing render method Scenario: Test render with MUSTACHE engine and valid template Given I have a TemplateRenderer with MUSTACHE engine And I have registered a Mustache template When I render the template with context data Then I should get the rendered result Scenario: Test render with MUSTACHE engine and invalid renderer Given I have a TemplateRenderer with MUSTACHE engine And I have a renderer without render method When I try to render a template Then I should get a TemplateError about missing render method Scenario: Test render with unknown engine type Given I have a TemplateRenderer with modified engine type When I try to render a template Then I should get a TemplateError about unsupported engine Scenario: Test render with exception during rendering Given I have a TemplateRenderer And I have a template that causes rendering exceptions When I try to render the template Then I should get a TemplateError about rendering failure # Test render_string functionality Scenario: Test render_string with SIMPLE engine Given I have a TemplateRenderer with SIMPLE engine When I render a template string with context data Then I should get the rendered result Scenario: Test render_string with SIMPLE engine and missing variables Given I have a TemplateRenderer with SIMPLE engine When I render a template string with incomplete context Then I should get a TemplateError about missing variables # Skip JINJA2 and MUSTACHE render_string tests for now since they may not be available Scenario: Test render_string with unknown engine type Given I have a TemplateRenderer with modified engine type When I try to render a template string Then I should get a TemplateError about unsupported engine Scenario: Test render_string with source description Given I have a TemplateRenderer When I render a template string with source description and it fails Then the error should include the source description Scenario: Test render_string with exception during rendering Given I have a TemplateRenderer When I render a template string that causes exceptions Then I should get a TemplateError about rendering failure # Test get_template functionality Scenario: Test get_template with existing template Given I have a TemplateRenderer And I have registered a template When I get the template by name Then I should receive the template content Scenario: Test get_template with nonexistent template Given I have a TemplateRenderer When I try to get a template that doesn't exist Then I should get a TemplateError about template not found # Test list_templates functionality Scenario: Test list_templates with empty registry Given I have a TemplateRenderer When I list all templates from renderer Then I should get an empty list Scenario: Test list_templates with multiple templates Given I have a TemplateRenderer And I have registered multiple templates When I list all templates from renderer Then I should get all template names # Additional scenarios to reach 90% coverage Scenario: Test _resolve_path with object attribute access Given I have an object with nested attributes When I resolve a path with object attribute access Then I should get the correct object attribute value Scenario: Test render with JINJA2 template compilation Given I have a TemplateRenderer with JINJA2 engine And I have a valid Jinja2 template content When I register and render the Jinja2 template Then the Jinja2 template should render correctly Scenario: Test render with MUSTACHE template processing Given I have a TemplateRenderer with MUSTACHE engine And I have a valid Mustache template content When I register and render the Mustache template Then the Mustache template should render correctly Scenario: Test render_string with JINJA2 engine functionality Given I have a TemplateRenderer with JINJA2 engine When I render a Jinja2 template string Then I should get correct Jinja2 rendered output Scenario: Test render_string with MUSTACHE engine functionality Given I have a TemplateRenderer with MUSTACHE engine When I render a Mustache template string Then I should get correct Mustache rendered output # Skip import error tests for now - they're complex to mock correctly