From 2e24e039d72a18d14d4cf616477c9de575127e1a Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 13:54:00 +0000 Subject: [PATCH] Initial upload: API Mock CLI v0.1.0 --- tests/test_templating.py | 137 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 tests/test_templating.py diff --git a/tests/test_templating.py b/tests/test_templating.py new file mode 100644 index 0000000..66fd1d1 --- /dev/null +++ b/tests/test_templating.py @@ -0,0 +1,137 @@ +import pytest +from src.core.templating import TemplatingEngine + + +class TestTemplatingEngine: + def setup_method(self): + self.engine = TemplatingEngine() + + def test_render_simple_template(self): + template = "Hello, {{name}}!" + context = {"name": "World"} + result = self.engine.render_template(template, context) + assert result == "Hello, World!" + + def test_render_template_with_path_param(self): + template = "User ID: {{request.path.id}}" + context = {"request": {"path": {"id": "123"}}} + result = self.engine.render_template(template, context) + assert result == "User ID: 123" + + def test_render_template_with_query_param(self): + template = "Page: {{request.query.page}}" + context = {"request": {"query": {"page": "5"}}} + result = self.engine.render_template(template, context) + assert result == "Page: 5" + + def test_render_dict_simple(self): + data = { + "message": "Hello {{name}}", + "count": 42 + } + context = {"name": "World"} + result = self.engine.render_dict(data, context) + assert result["message"] == "Hello World" + assert result["count"] == 42 + + def test_render_dict_nested(self): + data = { + "user": { + "name": "{{name}}", + "id": "{{uuid}}" + } + } + context = {"name": "John", "uuid": "abc123"} + result = self.engine.render_dict(data, context) + assert result["user"]["name"] == "John" + assert result["user"]["id"] == "abc123" + + def test_render_dict_list(self): + data = { + "items": [ + {"name": "{{name}}"}, + "static" + ] + } + context = {"name": "Test"} + result = self.engine.render_dict(data, context) + assert result["items"][0]["name"] == "Test" + assert result["items"][1] == "static" + + def test_render_dict_non_string(self): + data = { + "count": 100, + "active": True, + "items": [1, 2, 3] + } + context = {} + result = self.engine.render_dict(data, context) + assert result["count"] == 100 + assert result["active"] is True + assert result["items"] == [1, 2, 3] + + def test_build_context(self): + context = self.engine.build_context( + path_params={"id": "123"}, + query_params={"page": "1"}, + headers={"Authorization": "Bearer token"}, + body={"name": "test"}, + extra={"custom": "value"} + ) + assert context["request"]["path"]["id"] == "123" + assert context["request"]["query"]["page"] == "1" + assert context["request"]["headers"]["Authorization"] == "Bearer token" + assert context["request"]["body"]["name"] == "test" + assert context["custom"] == "value" + assert "uuid" in context + assert "timestamp" in context + + def test_build_context_defaults(self): + context = self.engine.build_context() + assert context["request"]["path"] == {} + assert context["request"]["query"] == {} + assert context["request"]["headers"] == {} + assert context["request"]["body"] == {} + + def test_template_filters(self): + template = "{{name|upper}}" + context = {"name": "hello"} + result = self.engine.render_template(template, context) + assert result == "HELLO" + + def test_template_default_filter(self): + template = "{{value|default('N/A')}}" + context = {"value": None} + result = self.engine.render_template(template, context) + assert result == "N/A" + + def test_template_length_filter(self): + template = "{{items|length}}" + context = {"items": [1, 2, 3]} + result = self.engine.render_template(template, context) + assert result == "3" + + def test_template_globals(self): + template = "ID: {{uuid}}, Time: {{timestamp}}" + context = self.engine.build_context() + result = self.engine.render_template(template, context) + assert "ID:" in result + assert "Time:" in result + + def test_template_datetime(self): + template = "Now: {{datetime}}" + context = self.engine.build_context() + result = self.engine.render_template(template, context) + assert "Now:" in result + + def test_template_random_int(self): + template = "Random: {{random_int(1, 10)}}" + context = {} + result = self.engine.render_template(template, context) + assert "Random:" in result + + def test_template_random_string(self): + template = "String: {{random_string(8)}}" + context = {} + result = self.engine.render_template(template, context) + assert "String:" in result