def test_get_blasts_from_other_domain(self, access_token_other, email_campaign_user1_domain1_in_db): """ Test to get campaign by user of some other domain. It should not get any blasts. """ query = {'query': self.query_string % email_campaign_user1_domain1_in_db.id} response = send_request('get', GRAPHQL_BASE_URL, access_token_other, data=query) assert response.status_code == requests.codes.ok assert 'errors' in response.json() assert response.json()['data']['email_campaign_query']['blasts'] is None
def test_get_non_existing_campaign(self, access_token_first): """ Test to get blasts of non-existing email-campaign. It should not get any campaign. """ query = {'query': self.query_string % CampaignsTestsHelpers.get_non_existing_id(EmailCampaign)} response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query) assert response.status_code == requests.codes.ok assert 'errors' in response.json() assert response.json()['data']['email_campaign_query']['blasts'] is None
def test_get_campaigns_with_auth_header(self, access_token_first): """ Test to get campaigns with auth header. It should not get any error. Total number of campaigns should be 0. """ expected_campaigns = 0 response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=self.query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() assert len(response.json()['data']['email_campaign_query']['campaigns'] ['edges']) == expected_campaigns
def test_get_blasts_in_same_domain(self, access_token_same, sent_campaign): """ Test to get blasts of a campaign created by some other user of same domain. It should not get any error. """ expected_blasts = 1 query = {'query': self.query_string % sent_campaign.id} response = send_request('get', GRAPHQL_BASE_URL, access_token_same, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() blasts_edges = response.json()['data']['email_campaign_query']['blasts']['edges'] assert len(response.json()['data']['email_campaign_query']['blasts']['edges']) == expected_blasts for blast_edge in blasts_edges: for expected_field in self.expected_fields_list: assert expected_field in blast_edge['node'], '%s not present in response' % expected_field
def test_get_blast_from_other_domain(self, access_token_other, sent_campaign): """ Test to get campaign by user of some other domain. It should not get any blast. """ blast_id = sent_campaign.blasts[0].id query = {'query': self.query_string % (sent_campaign.id, blast_id)} response = send_request('get', GRAPHQL_BASE_URL, access_token_other, data=query) assert response.status_code == requests.codes.ok assert 'errors' in response.json() assert response.json()['data']['email_campaign_query']['blast'] is None
def test_get_campaigns_from_other_domain(self, access_token_other): """ Test to get campaigns with user of some other domain. It should not get 'error' in JSON response. Total number of campaigns should be 0. """ expected_campaigns = 0 response = send_request('get', GRAPHQL_BASE_URL, access_token_other, data=self.query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() campaigns = response.json( )['data']['email_campaign_query']['campaigns']['edges'] assert len(campaigns) == expected_campaigns
def test_get_blasts_with_auth_header(self, access_token_first, sent_campaign): """ Test to get blasts of an email-campaign created by logged-in user with auth header. It should not get any error. """ expected_blasts = 1 query = {'query': self.query_string % sent_campaign.id} response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() blasts_edges = response.json()['data']['email_campaign_query']['blasts']['edges'] assert len(response.json()['data']['email_campaign_query']['blasts']['edges']) == expected_blasts for blast_edge in blasts_edges: for expected_field in self.expected_fields_list: assert expected_field in blast_edge['node'], '%s not present in response' % expected_field
def test_get_blast_in_same_domain(self, access_token_same, sent_campaign): """ Test to get blast of a campaign created by some other user of same domain. It should not get any error. """ blast_id = sent_campaign.blasts[0].id query = {'query': self.query_string % (sent_campaign.id, blast_id)} response = send_request('get', GRAPHQL_BASE_URL, access_token_same, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() blast = response.json()['data']['email_campaign_query']['blast'] for expected_field in self.expected_fields_list: assert expected_field in blast, '%s not present in response' % expected_field
def test_get_sends_with_not_owned_campaign( self, access_token_other, email_campaign_user1_domain1_in_db): """ Test to get sends of a campaign which does not exists in user's domain. It should not get any sends. """ query = { 'query': self.query_string % email_campaign_user1_domain1_in_db.id } response = send_request('get', GRAPHQL_BASE_URL, access_token_other, data=query) assert response.status_code == requests.codes.ok assert 'errors' in response.json() assert response.json()['data']['email_campaign_query']['sends'] is None
def test_get_sends_from_other_domain(self, access_token_other, sent_campaign): """ Test to get sends by user of some other domain. It should not get any sends. """ CampaignsTestsHelpers.assert_blast_sends(sent_campaign, self.expected_campaign_sends) query = {'query': self.query_string % sent_campaign.id} response = send_request('get', GRAPHQL_BASE_URL, access_token_other, data=query) assert response.status_code == requests.codes.ok assert 'errors' in response.json() assert response.json()['data']['email_campaign_query']['sends'] is None
def test_get_blast_with_auth_header(self, access_token_first, sent_campaign): """ Test to get blast of an email-campaign created by logged-in user with auth header. It should not get any error. """ blast_id = sent_campaign.blasts[0].id query = {'query': self.query_string % (sent_campaign.id, blast_id)} response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() blast = response.json()['data']['email_campaign_query']['blast'] for expected_field in self.expected_fields_list: assert expected_field in blast, '%s not present in response' % expected_field
def get(self, email_campaign_id, candidate_id): """ This returns invitation status of candidate for given campaign. Invitations statuses are as: Delivered: Candidate has received the email-campaign Not-Delivered: Candidate has not received the email-campaign Opened: Candidate has opened the email-campaign Accepted: Candidate RSVP'd YES to the promoted event Rejected: Candidate RSVP'd NO to the promoted event """ raise_if_dict_values_are_not_int_or_long( dict(campaign_id=email_campaign_id, candidate_id=candidate_id)) user = request.user email_campaign_send_id = None invitation_status = INVITATION_STATUSES['Not-Delivered'] email_campaign = EmailCampaignBase.get_campaign_if_domain_is_valid( email_campaign_id, request.user) # Check if candidate has received the email-campaign for send in email_campaign.sends.all(): if candidate_id == send.candidate_id: invitation_status = INVITATION_STATUSES['Delivered'] email_campaign_send_id = send.id break # Check if candidate has opened the email-campaign for activity_type in (Activity.MessageIds.CAMPAIGN_EMAIL_OPEN, Activity.MessageIds.CAMPAIGN_EMAIL_CLICK): url = "{}?type={}&source_id={}&source_table={}".format( ActivityApiUrl.ACTIVITIES, activity_type, email_campaign_send_id, EmailCampaignSend.__tablename__) response = send_request('get', url, request.headers['Authorization']) if response.ok: invitation_status = INVITATION_STATUSES['Opened'] if email_campaign.base_campaign_id: base_campaign = BaseCampaign.search_by_id_in_domain( email_campaign.base_campaign_id, user.domain_id) base_campaign_events = base_campaign.base_campaign_events.all() if base_campaign_events: event = base_campaign_events[0].event rsvp_in_db = RSVP.filter_by_keywords(candidate_id=candidate_id, event_id=event.id) if rsvp_in_db and rsvp_in_db[0].status.lower() == 'yes': invitation_status = INVITATION_STATUSES['Accepted'] elif rsvp_in_db and rsvp_in_db[0].status.lower() == 'no': invitation_status = INVITATION_STATUSES['Rejected'] return dict(invitation_status=invitation_status), codes.OK
def test_get_campaign_in_same_domain(self, access_token_first, email_campaign_user2_domain1_in_db): """ Test to get campaign created by some other user of same domain. It should not get any error. """ query = { 'query': self.query_string % email_campaign_user2_domain1_in_db.id } response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() campaign = response.json()['data']['email_campaign_query']['campaign'] for expected_field in self.expected_fields_list: assert expected_field in campaign, '%s not present in response' % expected_field
def test_get_campaign_with_auth_header(self, access_token_first, email_campaign_user1_domain1_in_db): """ Test to get campaign created by logged-in user with auth header. It should not get any error. """ query = { 'query': self.query_string % email_campaign_user1_domain1_in_db.id } response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query) assert response.status_code == requests.codes.ok, response.text assert 'errors' not in response.json() campaign = response.json()['data']['email_campaign_query']['campaign'] for expected_field in self.expected_fields_list: assert expected_field in campaign, '%s not present in response' % expected_field
def test_get_with_no_campaign_sent(self, access_token_first, email_campaign_user1_domain1_in_db): """ Here we are assuming that email campaign has not been sent to any candidate. Sends count should be 0. """ expected_sends = 0 query = { 'query': self.query_string % email_campaign_user1_domain1_in_db.id } response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() sends_edges = response.json( )['data']['email_campaign_query']['sends']['edges'] assert len(sends_edges) == expected_sends
def test_get_non_existing_send(self, access_token_first, email_campaign_user1_domain1_in_db): """ Test to get send of non-existing send. It should not get any send. """ query = { 'query': self.query_string % ( email_campaign_user1_domain1_in_db.id, CampaignsTestsHelpers.get_non_existing_id(EmailCampaignSend), ) } response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=query) assert response.status_code == requests.codes.ok assert 'errors' in response.json() assert response.json()['data']['email_campaign_query']['send'] is None
def test_get_campaigns_in_same_domain(self, access_token_first, email_campaign_user1_domain1_in_db, email_campaign_user2_domain1_in_db): """ Test to get campaigns created by different users of same domain. It should not get any error. Total number of campaigns should be 2. """ expected_campaigns = 2 response = send_request('get', GRAPHQL_BASE_URL, access_token_first, data=self.query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() campaigns = response.json( )['data']['email_campaign_query']['campaigns']['edges'] assert len(campaigns) == expected_campaigns for campaign in campaigns: for expected_field in self.expected_fields_list: assert expected_field in campaign[ 'node'], '%s not present in response' % expected_field
def test_get_send_with_valid_data(self, access_token_first, access_token_same, sent_campaign): """ Test to get send of an email-campaign created by logged-in user with auth header. It should not get any error. It also get sends for other user of same domain. """ for campaign_send in sent_campaign.sends: for access_token in (access_token_first, access_token_same): query = { 'query': self.query_string % (sent_campaign.id, campaign_send.id) } response = send_request('get', GRAPHQL_BASE_URL, access_token, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() send = response.json()['data']['email_campaign_query']['send'] for expected_field in self.expected_fields_list: assert expected_field in send, '%s not present in response' % expected_field assert send['campaign_id'] == sent_campaign.id
def test_get_sends_with_valid_data(self, access_token_first, access_token_same, sent_campaign): """ Test to get sends of an email-campaign created by logged-in user with auth header. It should not get any error. It also gets sends by some other user of same domain. Total number of sends should be 2. """ CampaignsTestsHelpers.assert_blast_sends(sent_campaign, self.expected_campaign_sends) query = {'query': self.query_string % sent_campaign.id} for access_token in (access_token_first, access_token_same): response = send_request('get', GRAPHQL_BASE_URL, access_token, data=query) assert response.status_code == requests.codes.ok assert 'errors' not in response.json() sends_edges = response.json( )['data']['email_campaign_query']['sends']['edges'] assert len(sends_edges) == self.expected_campaign_sends for blast_edge in sends_edges: for expected_field in self.expected_fields_list: assert expected_field in blast_edge[ 'node'], '%s not present in response' % expected_field assert blast_edge['node']['campaign_id'] == sent_campaign.id