Download apps/intelligence/tests.py from Rsnarsna/Saas-Base: direct link, hf CLI and curl.
- Browser
- Download file 5.01 kB
-
https://huggingface.co/spaces/Rsnarsna/Saas-Base/resolve/main/apps/intelligence/tests.py
- Command line
-
hf download hf://spaces/Rsnarsna/Saas-Base/apps/intelligence/tests.py
-
curl -L -o tests.py https://huggingface.co/spaces/Rsnarsna/Saas-Base/resolve/main/apps/intelligence/tests.py
5.01 kB
| """ | |
| Tests for Intelligence App — Phase 6. | |
| """ | |
| from django.test import TestCase | |
| from django.contrib.auth import get_user_model | |
| from apps.accounts.services import register_user | |
| from apps.organizations.services import create_org | |
| from apps.intelligence.models import EventLog, ChatSession | |
| from apps.intelligence.services import log_event, get_events | |
| from django.urls import reverse | |
| User = get_user_model() | |
| class EventLoggingTests(TestCase): | |
| def test_log_event_direct(self): | |
| """Test direct usage of log_event service.""" | |
| user = User.objects.create_user("test@example.com", "password") | |
| log_event( | |
| event_type="manual_test", | |
| actor=user, | |
| metadata={"foo": "bar"} | |
| ) | |
| log = EventLog.objects.last() | |
| self.assertEqual(log.event_type, "manual_test") | |
| self.assertEqual(log.actor_user, user) | |
| self.assertEqual(log.metadata["foo"], "bar") | |
| def test_user_registration_logging(self): | |
| """Test that registering a user creates a user_registered event.""" | |
| email = "logger@example.com" | |
| register_user(email, "StrongPass123!Safe", org_name="Test Org", business_type="SaaS") | |
| log = EventLog.objects.get(event_type="user_registered") | |
| self.assertEqual(log.actor_user.email, email) | |
| self.assertEqual(log.metadata["email_domain"], "example.com") | |
| def test_org_creation_logging(self): | |
| """Test that creating an org creates an org_created event.""" | |
| user = register_user("owner@example.com", "StrongPass123!", org_name="Test Org", business_type="SaaS") | |
| org = create_org("Logging Corp", user) | |
| log = EventLog.objects.get(event_type="org_created") | |
| self.assertEqual(log.org, org) | |
| self.assertEqual(log.actor_user, user) | |
| self.assertEqual(log.metadata["name"], "Logging Corp") | |
| def test_get_events_filter(self): | |
| """Test filtering events.""" | |
| user = register_user("filter@example.com", "Pass123!", org_name="Test Org", business_type="SaaS") | |
| log_event("type_a", actor=user) | |
| log_event("type_b", actor=user) | |
| events_a = get_events(event_type="type_a") | |
| self.assertEqual(events_a.count(), 1) | |
| self.assertEqual(events_a.first().event_type, "type_a") | |
| class AIServiceTests(TestCase): | |
| def test_chat_flow(self): | |
| """Test creating a session and exchanging messages.""" | |
| user = register_user("ai_user@example.com", "StrongPass123!", org_name="Test Org", business_type="SaaS") | |
| # 1. Create Session | |
| from apps.intelligence.services import create_session, generate_response | |
| session = create_session(user, title="Test Chat", system_prompt="You are a bot.") | |
| self.assertEqual(session.title, "Test Chat") | |
| # 2. Send Message | |
| response_msg = generate_response(session.pk, "Hello AI") | |
| # 3. Verify interaction | |
| self.assertEqual(response_msg.role, "assistant") | |
| self.assertIn("Mock AI Response to: Hello AI", response_msg.content) | |
| self.assertEqual(session.messages.count(), 2) # User + AI | |
| class IntelligenceViewTests(TestCase): | |
| def setUp(self): | |
| from apps.audit.services import record_consent | |
| self.user = register_user("view_ai@example.com", "StrongPass123!", org_name="Test Org", business_type="SaaS") | |
| record_consent(self.user, "1.0") | |
| self.client.force_login(self.user) | |
| def test_event_log_view(self): | |
| """Test event log page.""" | |
| log_event("test_view", actor=self.user) | |
| response = self.client.get(reverse("intelligence:event-log")) | |
| self.assertEqual(response.status_code, 200) | |
| # Jinja2 templates are not tracked by assertTemplateUsed, | |
| # so we verify rendered content instead. | |
| self.assertContains(response, "test_view") | |
| def test_chat_views(self): | |
| """Test chat flow views.""" | |
| # 1. Start Chat — creates session and redirects | |
| start_url = reverse("intelligence:chat-start") | |
| response = self.client.get(start_url) | |
| self.assertEqual(response.status_code, 302) # Redirect to detail | |
| session = ChatSession.objects.filter(user=self.user).last() | |
| self.assertIsNotNone(session, "start_chat_view should create a ChatSession") | |
| detail_url = reverse("intelligence:chat-detail", args=[session.id]) | |
| # 2. View Detail | |
| response = self.client.get(detail_url) | |
| self.assertEqual(response.status_code, 200) | |
| self.assertContains(response, "New Chat") | |
| # 3. Send Message (HTMX) | |
| msg_url = reverse("intelligence:chat-message-create", args=[session.id]) | |
| response = self.client.post(msg_url, {"content": "Hello View"}) | |
| self.assertEqual(response.status_code, 200) | |
| self.assertContains(response, "Hello View") # User msg | |
| self.assertContains(response, "Mock AI Response") # AI msg | |