Skip to content

Commit c28960a

Browse files
authored
Fix Sponsor lead email sent check (#4272)
1 parent 78bc854 commit c28960a

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

backend/api/sponsors/schema.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,16 @@ def send_sponsor_lead(
7171
if errors := input.validate():
7272
return errors
7373

74-
is_new_email = not SponsorLead.objects.filter(email=input.email).exists()
7574
conference_id = (
7675
Conference.objects.filter(code=input.conference_code)
7776
.values_list("id", flat=True)
7877
.first()
7978
)
8079

80+
is_new_email = not SponsorLead.objects.filter(
81+
conference_id=conference_id, email=input.email
82+
).exists()
83+
8184
sponsor_lead, created = SponsorLead.objects.update_or_create(
8285
fullname=input.fullname,
8386
email=input.email,

backend/api/sponsors/tests/test_send_sponsor_lead.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,45 @@ def test_send_sponsor_lead(graphql_client, consent_to_contact_via_email, mocker)
6868
)
6969

7070

71+
def test_send_sponsor_lead_works_if_email_was_sent_to_different_conf(
72+
graphql_client, mocker
73+
):
74+
mock_send_brochure = mocker.patch("api.sponsors.schema.send_sponsor_brochure")
75+
mock_notify_new_sponsor_lead_via_slack = mocker.patch(
76+
"api.sponsors.schema.notify_new_sponsor_lead_via_slack"
77+
)
78+
79+
SponsorLeadFactory(
80+
fullname="Tester",
81+
82+
company="Example",
83+
conference=ConferenceFactory(),
84+
consent_to_contact_via_email=False,
85+
brochure_viewed=False,
86+
)
87+
88+
conference = ConferenceFactory()
89+
90+
resp = _send_sponsor_lead(
91+
graphql_client,
92+
input={
93+
"fullname": "Tester",
94+
"email": "[email protected]",
95+
"company": "Example",
96+
"conferenceCode": conference.code,
97+
"consentToContactViaEmail": True,
98+
},
99+
)
100+
101+
assert not resp.get("errors")
102+
assert resp["data"]["sendSponsorLead"]["__typename"] == "OperationResult"
103+
assert resp["data"]["sendSponsorLead"]["ok"] is True
104+
105+
assert SponsorLead.objects.count() == 2
106+
mock_send_brochure.delay.assert_called()
107+
mock_notify_new_sponsor_lead_via_slack.delay.assert_called()
108+
109+
71110
def test_send_sponsor_lead_only_sends_the_brochure_once_to_email(
72111
graphql_client, mocker
73112
):

0 commit comments

Comments
 (0)