Skip to content

Commit 0100779

Browse files
Merge pull request #5849 from uktrade/feature/CLS2-1065-allow-any-string-for-eyb-hiring-choices
Feature/cls2 1065 allow any string for eyb hiring choices
2 parents a53cde7 + 3dce265 commit 0100779

File tree

6 files changed

+26
-22
lines changed

6 files changed

+26
-22
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.16 on 2024-12-09 12:21
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('investment_lead', '0009_alter_eyblead_marketing_hashed_uuid'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='eyblead',
15+
name='hiring',
16+
field=models.CharField(blank=True, default='', max_length=256),
17+
),
18+
]

datahub/investment_lead/models.py

+1-13
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,6 @@ class IntentChoices(models.TextChoices):
5959
)
6060
OTHER = 'OTHER', 'Other'
6161

62-
class HiringChoices(models.TextChoices):
63-
# Legacy choices
64-
ONE_TO_TEN = '1-10', '1 to 10'
65-
ELEVEN_TO_FIFTY = '11-50', '11 to 50'
66-
67-
# Current choices
68-
ONE_TO_FIVE = '1-5', '1 to 5'
69-
SIX_TO_FIFTY = '6-50', '6 to 50'
70-
FIFTY_ONE_TO_ONE_HUNDRED = '51-100', '51 to 100'
71-
ONE_HUNDRED_ONE_PLUS = '101+', 'More than 100'
72-
NO_PLANS_TO_HIRE_YET = 'NO_PLANS_TO_HIRE_YET', 'No plans to hire'
73-
7462
class SpendChoices(models.TextChoices):
7563
# Legacy choice
7664
FIVE_HUNDRED_THOUSAND_ONE_TO_ONE_MILLION = '500001-1000000', '£500,001 - £1,000,000'
@@ -133,7 +121,7 @@ class LandingTimeframeChoices(models.TextChoices):
133121
)
134122
proposed_investment_location_none = models.BooleanField(default=None, null=True, blank=True)
135123
hiring = models.CharField(
136-
max_length=CHAR_FIELD_MAX_LENGTH, choices=HiringChoices.choices, default='', blank=True,
124+
max_length=CHAR_FIELD_MAX_LENGTH, default='', blank=True,
137125
)
138126
spend = models.CharField(
139127
max_length=CHAR_FIELD_MAX_LENGTH, choices=SpendChoices.choices, default='', blank=True,

datahub/investment_lead/serializers.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,7 @@ class Meta(BaseEYBLeadSerializer.Meta):
195195
locationNone = serializers.BooleanField( # noqa: N815
196196
source='proposed_investment_location_none', required=False, allow_null=True,
197197
)
198-
hiring = serializers.ChoiceField(
199-
choices=EYBLead.HiringChoices.choices,
198+
hiring = serializers.CharField(
200199
required=False, allow_null=True, allow_blank=True, default='',
201200
)
202201
spend = serializers.ChoiceField(
@@ -512,8 +511,6 @@ def get_related_fields_representation(self, instance):
512511
EYBLead.IntentChoices(intent_choice).label
513512
for intent_choice in instance.intent
514513
],
515-
'hiring': EYBLead.HiringChoices(instance.hiring).label
516-
if instance.hiring else None,
517514
'spend': EYBLead.SpendChoices(instance.spend).label
518515
if instance.spend else None,
519516
'landing_timeframe': EYBLead.LandingTimeframeChoices(

datahub/investment_lead/test/factories.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
from datahub.metadata.models import Sector
1515

1616

17+
HIRING_CHOICES = ['1-10', '11-50', '51-100', '101+', 'NO_PLANS_TO_HIRE_YET']
18+
19+
1720
fake = Faker(locale='en_GB')
1821
factory.Faker._DEFAULT_LOCALE = 'en_GB'
1922

@@ -42,7 +45,7 @@ class Meta:
4245
proposed_investment_region_id = constants.UKRegion.wales.value.id
4346
proposed_investment_city = 'Cardiff'
4447
proposed_investment_location_none = False
45-
hiring = factory.LazyAttribute(lambda o: random.choice(EYBLead.HiringChoices.values))
48+
hiring = factory.LazyAttribute(lambda o: random.choice(HIRING_CHOICES))
4649
spend = factory.LazyAttribute(lambda o: random.choice(EYBLead.SpendChoices.values))
4750
spend_other = ''
4851
is_high_value = factory.Faker('pybool')
@@ -145,7 +148,7 @@ def eyb_lead_triage_record_faker(overrides: dict | None = None) -> dict:
145148
'location': constants.UKRegion.wales.value.name,
146149
'locationCity': 'Cardiff',
147150
'locationNone': False,
148-
'hiring': random.choice(EYBLead.HiringChoices.values),
151+
'hiring': random.choice(HIRING_CHOICES),
149152
'spend': random.choice(EYBLead.SpendChoices.values),
150153
'spendOther': '',
151154
'isHighValue': fake.pybool(),

datahub/investment_lead/test/test_serializers.py

-2
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,11 @@ def test_create_lead_from_invalid_choice_and_related_data(self, eyb_lead_triage_
9595
"""Tests invalid choice-field and related-field data raises validation errors."""
9696
eyb_lead_triage_data.update({
9797
'location': 'Invalid location name',
98-
'hiring': 'Invalid hiring choice',
9998
'spend': 'Invalid spend choice',
10099
})
101100
serializer = CreateEYBLeadTriageSerializer(data=eyb_lead_triage_data)
102101
assert not serializer.is_valid()
103102
assert 'location' in serializer.errors
104-
assert 'hiring' in serializer.errors
105103
assert 'spend' in serializer.errors
106104

107105
def test_create_lead_from_invalid_sector_data(self, eyb_lead_triage_data):

datahub/investment_lead/test/utils.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def assert_retrieved_eyb_lead_data(instance: EYBLead, data: dict):
127127
assert str(instance.proposed_investment_region.id) == data['proposed_investment_region']['id']
128128
assert instance.proposed_investment_city == data['proposed_investment_city']
129129
assert instance.proposed_investment_location_none == data['proposed_investment_location_none']
130-
assert EYBLead.HiringChoices(instance.hiring).label == data['hiring']
130+
assert instance.hiring == data['hiring']
131131
assert EYBLead.SpendChoices(instance.spend).label == data['spend']
132132
assert instance.spend_other == data['spend_other']
133133
assert instance.is_high_value == data['is_high_value']

0 commit comments

Comments
 (0)