from unittest.mock import patch from django.contrib.auth import get_user_model from django.test import TestCase from workflows.models import OnboardingRequest class OnboardingFlowTests(TestCase): def setUp(self): user_model = get_user_model() self.user = user_model.objects.create_user( username='onboard_user', password='secret123', email='requester@tub.co', first_name='Mia', last_name='Beispiel', ) self.client.force_login(self.user) @patch('workflows.views.process_onboarding_request.delay') def test_onboarding_submit_persists_and_enqueues_task(self, mock_delay): payload = { 'first_name': 'Max', 'last_name': 'Mustermann', 'gender': 'herr', 'job_title': 'Consultant', 'department': 'IT-Service', 'work_email': 'max.mustermann@tub.co', 'contract_start': '2026-11-01', 'employment_type': 'unbefristet', 'group_mailboxes_required_choice': 'nein', 'additional_hardware_needed_choice': 'nein', 'additional_software_needed_choice': 'nein', 'additional_access_needed_choice': 'nein', 'successor_required_choice': 'nein', 'inherit_phone_number_choice': 'nein', 'agreement_confirm': 'on', } response = self.client.post('/onboarding/new/', payload, HTTP_HOST='localhost') self.assertEqual(response.status_code, 302) self.assertIn('/onboarding/new/?saved=1&id=', response['Location']) obj = OnboardingRequest.objects.get(work_email='max.mustermann@tub.co') self.assertEqual(obj.full_name, 'Max Mustermann') self.assertEqual(obj.onboarded_by_email, 'requester@tub.co') self.assertEqual(obj.onboarded_by_name, 'Mia Beispiel') mock_delay.assert_called_once_with(obj.id)