51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
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)
|