from unittest.mock import patch from django.contrib.auth import get_user_model from django.test import TestCase from workflows.models import EmployeeProfile, OffboardingRequest class OffboardingFlowTests(TestCase): def setUp(self): user_model = get_user_model() self.user = user_model.objects.create_user( username='offboard_user', password='secret123', email='operator@tub.co', first_name='Nina', last_name='Admin', ) self.client.force_login(self.user) self.profile = EmployeeProfile.objects.create( full_name='Lara Beispiel', first_name='Lara', last_name='Beispiel', department='IT-Service', job_title='Engineer', work_email='lara.beispiel@tub.co', ) def test_offboarding_prefill_from_profile(self): response = self.client.get(f'/offboarding/new/?profile={self.profile.id}', HTTP_HOST='localhost') html = response.content.decode('utf-8') self.assertEqual(response.status_code, 200) self.assertIn('value="Lara Beispiel"', html) self.assertIn('value="lara.beispiel@tub.co"', html) self.assertIn('value="Engineer"', html) @patch('workflows.views.process_offboarding_request.delay') def test_offboarding_submit_uses_logged_in_user_email(self, mock_delay): payload = { 'full_name': self.profile.full_name, 'work_email': self.profile.work_email, 'department': self.profile.department, 'job_title': self.profile.job_title, 'last_working_day': '2026-12-31', 'notes': 'Bitte Accounts sperren.', } response = self.client.post( f'/offboarding/new/?profile={self.profile.id}', payload, HTTP_HOST='localhost', ) self.assertEqual(response.status_code, 302) obj = OffboardingRequest.objects.get(work_email=self.profile.work_email) self.assertEqual(obj.requested_by_email, 'operator@tub.co') self.assertEqual(obj.requested_by_name, 'Nina Admin') mock_delay.assert_called_once_with(obj.id)