import json import pytest from api_mock_cli.core.har_parser import HARParser, UnifiedRequest from api_mock_cli.core.mock_generator import MockGenerator class TestMockGenerator: @pytest.fixture def parse_result(self, sample_har_data): parser = HARParser(har_data=sample_har_data) return parser.parse() def test_mock_generator_creation(self, parse_result): generator = MockGenerator(parse_result) assert generator.parse_result == parse_result def test_generate_routes(self, parse_result): generator = MockGenerator(parse_result) routes = generator.generate_routes() assert len(routes) > 0 assert all("pattern" in r for r in routes) assert all("method" in r for r in routes) assert all("status_code" in r for r in routes) def test_get_route_summary(self, parse_result): generator = MockGenerator(parse_result) summary = generator.get_route_summary() assert len(summary) > 0 assert all("method" in r for r in summary) assert all("route" in r for r in summary) assert all("status" in r for r in summary) def test_generate_app_returns_flask_code(self, parse_result): generator = MockGenerator(parse_result) code = generator.generate_app() assert "from flask import Flask" in code assert "def create_app():" in code assert "app.run" in code def test_save_mock_server(self, parse_result, tmp_path): generator = MockGenerator(parse_result) output_path = tmp_path / "mock_server.py" generator.save_mock_server(str(output_path)) assert output_path.exists() content = output_path.read_text() assert "from flask import Flask" in content def test_routes_have_unique_patterns(self, parse_result): generator = MockGenerator(parse_result) routes = generator.generate_routes() patterns = [r["pattern"] for r in routes] assert len(patterns) == len(set(patterns)) def test_response_body_is_json(self, parse_result): generator = MockGenerator(parse_result) routes = generator.generate_routes() for route in routes: body = route["response_body"] try: json.loads(body) except json.JSONDecodeError: pytest.fail("Response body is not valid JSON")