snapshot: preserve builder deletion and onboarding ux improvements

This commit is contained in:
Md Bayazid Bostame
2026-03-27 17:02:06 +01:00
parent 30877ed8ee
commit b0cc5bda78
9 changed files with 300 additions and 140 deletions

View File

@@ -331,6 +331,60 @@ class FormBuilderAdminTests(TestCase):
self.assertEqual(section.title, 'Benefits')
self.assertEqual(section.sort_order, 5)
def test_staff_can_delete_custom_field(self):
self.client.force_login(self.staff)
field = FormCustomFieldConfig.objects.create(
form_type='onboarding',
field_key='laptop_tag',
section_key='itsetup',
sort_order=0,
field_type='text',
label='Laptop-Tag',
)
response = self.client.post(
'/admin-tools/form-builder/?form_type=onboarding&option_category=device',
data={'delete_custom_field_id': str(field.id)},
HTTP_HOST='localhost',
)
self.assertEqual(response.status_code, 302)
self.assertFalse(FormCustomFieldConfig.objects.filter(id=field.id).exists())
def test_staff_can_delete_custom_section_and_its_fields(self):
self.client.force_login(self.staff)
section = FormCustomSectionConfig.objects.create(
form_type='onboarding',
section_key='benefits',
sort_order=0,
title='Benefits',
)
field = FormCustomFieldConfig.objects.create(
form_type='onboarding',
field_key='meal_allowance',
section_key='benefits',
sort_order=0,
field_type='checkbox',
label='Essenszuschuss',
)
FormConditionalRuleConfig.objects.create(
form_type='onboarding',
target_key='custom__meal_allowance',
clauses=[{'field': 'employment_type', 'operator': 'equals', 'value': 'unbefristet'}],
is_active=True,
)
response = self.client.post(
'/admin-tools/form-builder/?form_type=onboarding&option_category=device',
data={'delete_custom_section_id': str(section.id)},
HTTP_HOST='localhost',
)
self.assertEqual(response.status_code, 302)
self.assertFalse(FormCustomSectionConfig.objects.filter(id=section.id).exists())
self.assertFalse(FormCustomFieldConfig.objects.filter(id=field.id).exists())
self.assertFalse(FormConditionalRuleConfig.objects.filter(target_key='custom__meal_allowance').exists())
def test_save_order_accepts_custom_section_column(self):
self.client.force_login(self.staff)
FormCustomSectionConfig.objects.create(

View File

@@ -226,6 +226,41 @@ class OnboardingFlowTests(TestCase):
self.assertIn('Benefits', html)
self.assertIn('Essenszuschuss', html)
def test_onboarding_custom_section_with_checkbox_fields_shows_section_select_all(self):
FormCustomSectionConfig.objects.create(
form_type='onboarding',
section_key='benefits',
sort_order=10,
title='Benefits',
is_active=True,
)
FormCustomFieldConfig.objects.create(
form_type='onboarding',
field_key='meal_allowance',
section_key='benefits',
sort_order=0,
field_type='checkbox',
is_active=True,
label='Essenszuschuss',
)
FormCustomFieldConfig.objects.create(
form_type='onboarding',
field_key='parking_spot',
section_key='benefits',
sort_order=1,
field_type='checkbox',
is_active=True,
label='Parkplatz',
)
response = self.client.get('/onboarding/new/', HTTP_HOST='localhost')
html = response.content.decode('utf-8')
self.assertEqual(response.status_code, 200)
self.assertIn('data-section-checkbox-toggle', html)
self.assertIn('Essenszuschuss', html)
self.assertIn('Parkplatz', html)
@patch('workflows.views.process_onboarding_request.delay')
def test_onboarding_custom_field_is_rendered_and_saved(self, mock_delay):
FormCustomFieldConfig.objects.create(