Dynavera/apps/onboarding/tests/test_models.py

41 lines
2.3 KiB
Python

from django.test import TestCase
from django.contrib.auth import get_user_model
from apps.orgs.models import Organization, Role
from apps.mlstore.models import AgentModel, Agent
from apps.onboarding.models import OnboardingFlow, OnboardingPage, OnboardingField, OnboardingSession
User = get_user_model()
class OnboardingModelTests(TestCase):
def setUp(self):
self.user = User.objects.create_user(email_address='user@example.com', password='pass')
self.manager = User.objects.create_user(email_address='manager@example.com', password='pass', is_manager=True)
self.org = Organization.objects.create(name='Org', owner=self.manager)
self.role = Role.objects.create(name='Engineer', organization=self.org)
self.model = AgentModel.objects.create(name='test-model', version='v1', path='model.gguf')
self.agent = Agent.objects.create(model=self.model, organization=self.org)
def test_flow_str(self):
flow = OnboardingFlow.objects.create(role=self.role, agent=self.agent, title='Welcome', description='Intro')
self.assertIn('Welcome', str(flow))
self.assertIn(self.role.name, str(flow))
def test_page_and_field_str(self):
flow = OnboardingFlow.objects.create(role=self.role, agent=self.agent, title='Flow', description='')
page = OnboardingPage.objects.create(flow=flow, order=0, title='Page 1', body='Body')
field = OnboardingField.objects.create(page=page, order=0, key='q1', label='Question 1')
self.assertIn(flow.title, str(page))
self.assertIn(field.label, str(field))
def test_field_unique_key_per_page(self):
flow = OnboardingFlow.objects.create(role=self.role, agent=self.agent, title='Flow', description='')
page = OnboardingPage.objects.create(flow=flow, order=0, title='Page 1', body='Body')
OnboardingField.objects.create(page=page, order=0, key='dup', label='Dup 1')
with self.assertRaises(Exception):
OnboardingField.objects.create(page=page, order=1, key='dup', label='Dup 2')
def test_session_str(self):
flow = OnboardingFlow.objects.create(role=self.role, agent=self.agent, title='Flow', description='')
session = OnboardingSession.objects.create(flow=flow, user=self.user)
self.assertIn(self.user.email_address, str(session))
self.assertIn(flow.title, str(session))