mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-09-21 20:40:47 +02:00
feat: complete include/exclude observability, fix validation bugs, and organize tests
- Add structured logging for include/exclude operations with comprehensive event tracking - Fix duplicate counting bug in validation API by eliminating double validation passes - Simplify color identity validation UX by consolidating into single 'illegal' status - Organize project structure by moving all test files to centralized code/tests/ directory - Update documentation reflecting feature completion and production readiness - Add validation test scripts and performance benchmarks confirming targets met - Finalize include/exclude feature as production-ready with EDH format compliance
This commit is contained in:
parent
f77bce14cb
commit
3e4395d6e9
32 changed files with 470 additions and 89 deletions
81
code/tests/test_web_form.py
Normal file
81
code/tests/test_web_form.py
Normal file
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test to check if the web form is properly sending exclude_cards
|
||||
"""
|
||||
|
||||
import requests
|
||||
import re
|
||||
|
||||
def test_web_form_exclude():
|
||||
"""Test that the web form properly handles exclude cards"""
|
||||
|
||||
print("=== Testing Web Form Exclude Flow ===")
|
||||
|
||||
# Test 1: Check if the exclude textarea is visible
|
||||
print("1. Checking if exclude textarea is visible in new deck modal...")
|
||||
|
||||
try:
|
||||
response = requests.get("http://localhost:8080/build/new")
|
||||
if response.status_code == 200:
|
||||
content = response.text
|
||||
if 'name="exclude_cards"' in content:
|
||||
print(" ✅ exclude_cards textarea found in form")
|
||||
else:
|
||||
print(" ❌ exclude_cards textarea NOT found in form")
|
||||
print(" Checking for Advanced Options section...")
|
||||
if 'Advanced Options' in content:
|
||||
print(" ✅ Advanced Options section found")
|
||||
else:
|
||||
print(" ❌ Advanced Options section NOT found")
|
||||
return False
|
||||
|
||||
# Check if feature flag is working
|
||||
if 'allow_must_haves' in content or 'exclude_cards' in content:
|
||||
print(" ✅ Feature flag appears to be working")
|
||||
else:
|
||||
print(" ❌ Feature flag might not be working")
|
||||
|
||||
else:
|
||||
print(f" ❌ Failed to get modal: HTTP {response.status_code}")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Error checking modal: {e}")
|
||||
return False
|
||||
|
||||
# Test 2: Try to submit a form with exclude cards
|
||||
print("2. Testing form submission with exclude cards...")
|
||||
|
||||
form_data = {
|
||||
"commander": "Alesha, Who Smiles at Death",
|
||||
"primary_tag": "Humans",
|
||||
"bracket": "3",
|
||||
"exclude_cards": "Sol Ring\nByrke, Long Ear of the Law\nBurrowguard Mentor\nHare Apparent"
|
||||
}
|
||||
|
||||
try:
|
||||
# Submit the form
|
||||
response = requests.post("http://localhost:8080/build/new", data=form_data)
|
||||
if response.status_code == 200:
|
||||
print(" ✅ Form submitted successfully")
|
||||
|
||||
# Check if we can see any exclude-related content in the response
|
||||
content = response.text
|
||||
if "exclude" in content.lower() or "excluded" in content.lower():
|
||||
print(" ✅ Exclude-related content found in response")
|
||||
else:
|
||||
print(" ⚠️ No exclude-related content found in response")
|
||||
|
||||
else:
|
||||
print(f" ❌ Form submission failed: HTTP {response.status_code}")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Error submitting form: {e}")
|
||||
return False
|
||||
|
||||
print("3. ✅ Web form test completed")
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_web_form_exclude()
|
Loading…
Add table
Add a link
Reference in a new issue