import os
import django
from django.conf import settings
import sys

# Setup Django environment
sys.path.append(os.getcwd())
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
django.setup()

from django.test import RequestFactory
from core.views import index

def test_root_view():
    factory = RequestFactory()
    request = factory.get('/')
    
    # Simulate logged in user (since index is login_required)
    from django.contrib.auth.models import AnonymousUser, User
    
    # Create a dummy user for testing
    if not User.objects.filter(username='testadmin').exists():
        user = User.objects.create_superuser('testadmin', 'admin@example.com', 'pass')
    else:
        user = User.objects.get(username='testadmin')
        
    request.user = user # Authenticated
    
    try:
        response = index(request)
        print(f"Authenticated Root View Status: {response.status_code}")
    except Exception as e:
        print(f"Authenticated Root View Error: {e}")

    # Test unauthenticated (should redirect)
    request_anon = factory.get('/')
    request_anon.user = AnonymousUser()
    from django.contrib.auth.decorators import login_required
    # We can't easily run the decorator logic with RequestFactory directly calling the view function 
    # unless we use the view wrapped in login_required manually or via client.
    
    from django.test import Client
    client = Client()
    response = client.get('/')
    print(f"Client Root Get Status: {response.status_code}")
    if response.status_code == 302:
        print(f"Redirects to: {response.url}")
        
    # Check login page
    response_login = client.get('/accounts/login/')
    print(f"Client Login Get Status: {response_login.status_code}")

if __name__ == "__main__":
    test_root_view()
