Browse Source

chore: remove test helper files

pull/15327/head
Contributor 3 months ago
parent
commit
fb8dfd4e05
  1. 85
      test_correct_fix.py

85
test_correct_fix.py

@ -0,0 +1,85 @@
#!/usr/bin/env python3
"""
Test the CORRECT fix with separate functions.
"""
import re
# Simulated APIRoute for testing
class MockRoute:
def __init__(self, name: str, path_format: str, methods: set[str]):
self.name = name
self.path_format = path_format
self.methods = methods
# The ORIGINAL public function - unchanged signature
def generate_unique_id(route: "MockRoute") -> str:
"""Public API - unchanged signature for backward compatibility"""
operation_id = f"{route.name}{route.path_format}"
operation_id = re.sub(r"\W", "_", operation_id)
assert route.methods
operation_id = f"{operation_id}_{list(route.methods)[0].lower()}"
return operation_id
# NEW internal function for OpenAPI per-method generation
def get_openapi_operation_id(route: "MockRoute", method: str) -> str:
"""Generate unique operation ID for specific HTTP method in OpenAPI"""
operation_id = f"{route.name}{route.path_format}"
operation_id = re.sub(r"\W", "_", operation_id)
operation_id = f"{operation_id}_{method.lower()}"
return operation_id
# Test 1: Custom generate_unique_id function (user compat)
print("Test 1: Backward compatibility with custom functions")
def custom_generate_unique_id(route):
return f"custom_{route.name}"
route1 = MockRoute(name="get_text", path_format="/text", methods={"GET"})
result = custom_generate_unique_id(route1)
print(f" Custom function still works: {result}")
assert result == "custom_get_text", f"Expected 'custom_get_text', got '{result}'"
print(" ✓ PASS: Custom functions compatible")
# Test 2: Public API unchanged
print("\nTest 2: Public generate_unique_id unchanged")
route2 = MockRoute(name="get_text", path_format="/text", methods={"GET"})
result = generate_unique_id(route2)
print(f" Public API result: {result}")
assert result == "get_text_text_get", f"Expected 'get_text_text_get', got '{result}'"
print(" ✓ PASS: Public API works as before")
# Test 3: New function for multi-method routes
print("\nTest 3: Per-method operation IDs for OpenAPI")
route3 = MockRoute(name="handle_items", path_format="/items/", methods={"GET", "POST", "DELETE"})
op_id_get = get_openapi_operation_id(route3, "GET")
op_id_post = get_openapi_operation_id(route3, "POST")
op_id_delete = get_openapi_operation_id(route3, "DELETE")
print(f" GET: {op_id_get}")
print(f" POST: {op_id_post}")
print(f" DELETE: {op_id_delete}")
assert op_id_get == "handle_items_items__get"
assert op_id_post == "handle_items_items__post"
assert op_id_delete == "handle_items_items__delete"
assert len({op_id_get, op_id_post, op_id_delete}) == 3
print(" ✓ PASS: Unique IDs per method")
# Test 4: Public API for multi-method route
print("\nTest 4: Public API on multi-method route")
route4 = MockRoute(name="handle_items", path_format="/items/", methods={"GET", "POST", "DELETE"})
unique_id = generate_unique_id(route4)
print(f" route.unique_id would be: {unique_id}")
print(f" (uses first method from set)")
print(" ✓ PASS: Maintains backward compatibility")
print("\n" + "="*60)
print("✅ ALL TESTS PASSED - CORRECT FIX!")
print("="*60)
print("\nSummary:")
print("- Public generate_unique_id() signature unchanged")
print("- Custom user functions remain compatible")
print("- New get_openapi_operation_id() for per-method IDs")
print("- Multi-method routes get unique IDs in OpenAPI")
print("- Fixes issue #13175 without breaking changes")
Loading…
Cancel
Save