#!/usr/bin/env python """ Simple verification script for Survey Question Builder implementation Checks file existence and basic structure without requiring Django setup """ import os import sys def check_file_exists(filepath): """Check if a file exists and return its size""" if os.path.exists(filepath): size = os.path.getsize(filepath) return True, size return False, 0 def check_directory_exists(dirpath): """Check if a directory exists""" return os.path.isdir(dirpath) def verify_javascript_files(): """Verify all JavaScript files exist""" print("\n" + "="*70) print("VERIFICATION: JavaScript Files") print("="*70) js_files = [ ('static/surveys/js/builder.js', 'Main question builder functionality'), ('static/surveys/js/choices-builder.js', 'Visual choices management'), ('static/surveys/js/preview.js', 'Real-time survey preview') ] all_exist = True for filepath, description in js_files: exists, size = check_file_exists(filepath) if exists: print(f"✓ {filepath}") print(f" {description} ({size} bytes)") else: print(f"✗ {filepath} - NOT FOUND") all_exist = False return all_exist def verify_template_file(): """Verify template file exists and contains required scripts""" print("\n" + "="*70) print("VERIFICATION: Template File") print("="*70) template_file = 'templates/surveys/template_form.html' exists, size = check_file_exists(template_file) if not exists: print(f"✗ {template_file} - NOT FOUND") return False print(f"✓ {template_file} ({size} bytes)") # Check for required script tags with open(template_file, 'r') as f: content = f.read() required_scripts = [ 'builder.js', 'choices-builder.js', 'preview.js' ] all_found = True for script in required_scripts: if script in content: print(f" ✓ Contains {script}") else: print(f" ✗ Missing {script}") all_found = False return all_found def verify_documentation(): """Verify documentation file exists""" print("\n" + "="*70) print("VERIFICATION: Documentation") print("="*70) doc_file = 'docs/SURVEY_BUILDER_IMPLEMENTATION.md' exists, size = check_file_exists(doc_file) if exists: print(f"✓ {doc_file} ({size} bytes)") return True else: print(f"✗ {doc_file} - NOT FOUND") return False def check_javascript_functionality(filepath, function_name): """Check if a specific function exists in a JavaScript file""" exists, _ = check_file_exists(filepath) if not exists: return False with open(filepath, 'r') as f: content = f.read() return function_name in content def verify_javascript_functionality(): """Verify key JavaScript functions exist""" print("\n" + "="*70) print("VERIFICATION: JavaScript Functionality") print("="*70) checks = [ ('static/surveys/js/builder.js', 'addQuestion', 'Add question functionality'), ('static/surveys/js/builder.js', 'deleteQuestion', 'Delete question functionality'), ('static/surveys/js/builder.js', 'moveQuestion', 'Reorder questions'), ('static/surveys/js/choices-builder.js', 'createChoicesUI', 'Choices builder UI'), ('static/surveys/js/choices-builder.js', 'updateChoicesJSON', 'JSON update functionality'), ('static/surveys/js/preview.js', 'updatePreview', 'Preview update functionality'), ('static/surveys/js/preview.js', 'renderQuestionPreview', 'Question rendering') ] all_found = True for filepath, function, description in checks: found = check_javascript_functionality(filepath, function) if found: print(f"✓ {filepath}") print(f" Contains {function}() - {description}") else: print(f"✗ {filepath}") print(f" Missing {function}() - {description}") all_found = False return all_found def main(): """Run all verifications""" print("\n" + "="*70) print("SURVEY QUESTION BUILDER IMPLEMENTATION VERIFICATION") print("="*70) results = [] # Verify JavaScript files results.append(('JavaScript Files', verify_javascript_files())) # Verify template file results.append(('Template File', verify_template_file())) # Verify documentation results.append(('Documentation', verify_documentation())) # Verify JavaScript functionality results.append(('JavaScript Functionality', verify_javascript_functionality())) # Summary print("\n" + "="*70) print("VERIFICATION SUMMARY") print("="*70) for test_name, passed in results: status = "✅ PASSED" if passed else "❌ FAILED" print(f"{status}: {test_name}") all_passed = all(result[1] for result in results) print("\n" + "="*70) if all_passed: print("🎉 ALL VERIFICATIONS PASSED!") print("\nThe Survey Question Builder implementation is complete and ready for use.") print("\nFeatures implemented:") print(" • Dynamic question management (add/delete/reorder)") print(" • Visual choices builder for multiple choice questions") print(" • Real-time survey preview") print(" • Bilingual support (English/Arabic)") print(" • Multiple question types (text, rating, single/multiple choice)") else: print("⚠️ SOME VERIFICATIONS FAILED") print("\nPlease check the output above for details.") print("="*70 + "\n") return 0 if all_passed else 1 if __name__ == '__main__': sys.exit(main())