Added tests for progress

This commit is contained in:
Viswamedha Nalabotu 2026-03-10 19:38:18 +00:00
parent f87e4a2dd1
commit 3b2d4674f6

View file

@ -635,3 +635,53 @@ class OnboardingApiTests(TestCase):
response = self.client.post(f'/api/onboarding-session/{self.session.uuid}/complete/') response = self.client.post(f'/api/onboarding-session/{self.session.uuid}/complete/')
self.assertEqual(response.status_code, HTTP_400_BAD_REQUEST) self.assertEqual(response.status_code, HTTP_400_BAD_REQUEST)
self.assertIn('error', response.data) self.assertIn('error', response.data)
def test_onboarding_session_progress_overview_returns_user_flow_matrix(self):
self.role.members.add(self.member)
extra_flow = OnboardingFlow.objects.create(
title='Second Flow',
role=self.role,
structure=[],
is_active=True,
)
self.session.state = {'flow_uuid': str(self.flow.uuid), 'progress_percentage': 35}
self.session.save(update_fields=['state', 'updated_at'])
self.client.force_authenticate(self.manager)
response = self.client.get('/api/onboarding-session/progress-overview/')
self.assertEqual(response.status_code, HTTP_200_OK)
rows = response.json()
self.assertTrue(isinstance(rows, list))
self.assertTrue(any(row.get('flow', {}).get('uuid') == str(self.flow.uuid) for row in rows))
self.assertTrue(any(row.get('flow', {}).get('uuid') == str(extra_flow.uuid) for row in rows))
first_flow_row = next(row for row in rows if row.get('flow', {}).get('uuid') == str(self.flow.uuid))
self.assertEqual(first_flow_row.get('latest_status'), self.session.status)
self.assertEqual(first_flow_row.get('progress'), 35)
def test_onboarding_session_list_filters_by_user_and_flow_for_manager(self):
self.role.members.add(self.member, self.manager)
self.session.state = {'flow_uuid': str(self.flow.uuid), 'progress_percentage': 50}
self.session.save(update_fields=['state', 'updated_at'])
manager_session = OnboardingSession.objects.create(
user=self.manager,
role=self.role,
state={'flow_uuid': str(self.flow.uuid), 'progress_percentage': 10},
active_configs={},
)
self.client.force_authenticate(self.manager)
response = self.client.get(
'/api/onboarding-session/',
{
'role_uuid': str(self.role.uuid),
'user_uuid': str(self.member.uuid),
'flow_uuid': str(self.flow.uuid),
},
)
self.assertEqual(response.status_code, HTTP_200_OK)
uuids = {str(item.get('uuid')) for item in response.json()}
self.assertIn(str(self.session.uuid), uuids)
self.assertNotIn(str(manager_session.uuid), uuids)