Skip to content

Commit 84afe4a

Browse files
authored
Include eyb leads for investment projects in open search (#5840)
* Include EYB leads for investment projects in open search
1 parent 66858a2 commit 84afe4a

File tree

6 files changed

+60
-0
lines changed

6 files changed

+60
-0
lines changed

datahub/investment_lead/test/factories.py

+3
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ def eyb_lead_triage_record_faker(overrides: dict | None = None) -> dict:
128128
Sector.get_segments_from_sector_instance(sector)
129129
data = {
130130
'hashedUuid': generate_hashed_uuid(),
131+
'triage_created': fake.date_time_between(
132+
start_date='-1y', tzinfo=timezone.utc,
133+
),
131134
'created': fake.date_time_between(
132135
start_date='-1y', tzinfo=timezone.utc,
133136
),

datahub/search/company_activity/apps.py

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class CompanyActivitySearchApp(SearchApp):
3434
'eyb_lead',
3535
).prefetch_related(
3636
'interaction__contacts',
37+
'investment__eyb_leads',
3738
Prefetch(
3839
'interaction__dit_participants',
3940
queryset=InteractionDITParticipant.objects.select_related('adviser', 'team'),

datahub/search/company_activity/dict_utils.py

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def activity_investment_dict(obj):
5252
'number_new_jobs': obj.number_new_jobs,
5353
'created_by': dict_utils.contact_or_adviser_dict(obj.created_by),
5454
'client_contacts': dict_utils.contact_job_list_of_dicts(obj.client_contacts),
55+
'eyb_leads': dict_utils.eyb_lead_list(obj.eyb_leads) if obj.eyb_leads else None,
5556
}
5657

5758

datahub/search/company_activity/test/test_dict_utils.py

+41
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import pytest
2+
import pytz
23

34
from datahub.company_activity.tests.factories import GreatExportEnquiryFactory
45
from datahub.company_referral.test.factories import CompanyReferralFactory
@@ -59,6 +60,46 @@ def test_activity_investment_dict():
5960
assert result['investment_type']['id'] == str(
6061
investment.investment_type_id)
6162
assert result['estimated_land_date'] == investment.estimated_land_date
63+
assert result['eyb_leads'] == []
64+
65+
66+
def assert_eyb_lead_in_result_list(eyb_lead, result_list):
67+
assert {
68+
'id': str(eyb_lead.id),
69+
'company_name': eyb_lead.company_name,
70+
'created_on': eyb_lead.created_on,
71+
'triage_created': eyb_lead.triage_created.replace(tzinfo=pytz.UTC),
72+
'is_high_value': eyb_lead.is_high_value,
73+
} in result_list
74+
75+
76+
def test_activity_investment_with_eyb_leads_dict():
77+
obj = None
78+
result = dict_utils.activity_investment_dict(obj)
79+
assert result is None
80+
81+
investment = InvestmentProjectFactory()
82+
eyb_leads_is_high_value = EYBLeadFactory(
83+
investment_projects=[investment.id],
84+
is_high_value=True,
85+
)
86+
eyb_leads_is_not_high_value = EYBLeadFactory(
87+
investment_projects=[investment.id],
88+
is_high_value=False,
89+
)
90+
eyb_leads_is_not_high_value = EYBLeadFactory(
91+
investment_projects=[investment.id],
92+
is_high_value=None,
93+
)
94+
result = dict_utils.activity_investment_dict(investment)
95+
96+
assert result['id'] == str(investment.id)
97+
assert result['created_by']['id'] == str(investment.created_by_id)
98+
assert result['investment_type']['id'] == str(
99+
investment.investment_type_id)
100+
assert result['estimated_land_date'] == investment.estimated_land_date
101+
assert_eyb_lead_in_result_list(eyb_leads_is_high_value, result['eyb_leads'])
102+
assert_eyb_lead_in_result_list(eyb_leads_is_not_high_value, result['eyb_leads'])
62103

63104

64105
def test_activity_order_dict():

datahub/search/company_activity/test/test_models.py

+1
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ def test_company_activity_investment_to_dict():
170170
'name': company_activity.investment.investment_type.name,
171171
},
172172
'estimated_land_date': company_activity.investment.estimated_land_date,
173+
'eyb_leads': [],
173174
'total_investment': company_activity.investment.total_investment,
174175
'foreign_equity_investment': company_activity.investment.foreign_equity_investment,
175176
'gross_value_added': company_activity.investment.gross_value_added,

datahub/search/dict_utils.py

+13
Original file line numberDiff line numberDiff line change
@@ -304,3 +304,16 @@ def dit_participant_list(dit_participant_manager):
304304
}
305305
for dit_participant in dit_participant_manager.all()
306306
]
307+
308+
309+
def eyb_lead_list(eyb_lead_list):
310+
return [
311+
{
312+
'id': str(eyb_lead.id),
313+
'company_name': eyb_lead.company_name,
314+
'created_on': eyb_lead.created_on,
315+
'triage_created': eyb_lead.triage_created,
316+
'is_high_value': eyb_lead.is_high_value,
317+
}
318+
for eyb_lead in eyb_lead_list.all()
319+
]

0 commit comments

Comments
 (0)