Exemple #1
0
 def test_donation_data(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': 'Jeffery',
         'last_name': 'Lebowski',
     }
     process_donation(data)
     sfdc_mock.opportunity.create.assert_called_with({
         'RecordTypeId':
         ANY,
         'Name':
         'Foundation Donation',
         'Donation_Contact__c':
         '1234',
         'StageName':
         'Closed Won',
         # calculated from data['created']
         'CloseDate':
         '2016-11-21T16:46:49.327000',
         'Amount':
         float(data['donation_amount']),
         'Currency__c':
         'USD',
         'Payment_Source__c':
         'paypal',
         'PMT_Transaction_ID__c':
         data['transaction_id'],
         'Payment_Type__c':
         'Recurring',
         'SourceURL__c':
         data['source_url'],
         'Project__c':
         data['project'],
     })
Exemple #2
0
 def test_donation_data(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': 'Jeffery',
         'last_name': 'Lebowski',
     }
     process_donation(data)
     sfdc_mock.opportunity.create.assert_called_with({
         'RecordTypeId': ANY,
         'Name': 'Foundation Donation',
         'Donation_Contact__c': '1234',
         'StageName': 'Closed Won',
         # calculated from data['created']
         'CloseDate': '2016-11-21T16:46:49.327000',
         'Amount': float(data['donation_amount']),
         'Currency__c': 'USD',
         'Payment_Source__c': 'paypal',
         'PMT_Transaction_ID__c': data['transaction_id'],
         'Payment_Type__c': 'Recurring',
         'SourceURL__c': data['source_url'],
         'Project__c': data['project'],
         'Donation_Locale__c': data['locale'],
         'Processors_Fee__c': data['transaction_fee'],
         'Net_Amount__c': data['net_amount'],
         'Conversion_Amount__c': data['conversion_amount'],
         'Last_4_Digits__c': data['last_4'],
     })
Exemple #3
0
 def test_one_name(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': '',
         'last_name': '_',
     }
     del data['first_name']
     data['last_name'] = 'Donnie'
     process_donation(data)
     sfdc_mock.update.assert_called_with(gud_mock(), {
         '_set_subscriber': False,
         'last_name': 'Donnie',
     })
Exemple #4
0
 def test_one_name(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': '',
         'last_name': '_',
     }
     del data['first_name']
     data['last_name'] = 'Donnie'
     process_donation(data)
     sfdc_mock.update.assert_called_with(gud_mock(), {
         '_set_subscriber': False,
         'last_name': 'Donnie',
     })
Exemple #5
0
 def test_donation_silent_failure_on_dupe(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': 'Jeffery',
         'last_name': 'Lebowski',
     }
     error_content = [{
         u'errorCode': u'DUPLICATE_VALUE',
         u'fields': [],
         u'message': u'duplicate value found: PMT_Transaction_ID__c '
                     u'duplicates value on record with id: blah-blah',
     }]
     exc = sfapi.SalesforceMalformedRequest('url', 400, 'opportunity', error_content)
     sfdc_mock.opportunity.create.side_effect = exc
     process_donation(data)
Exemple #6
0
 def test_name_splitting(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = None
     del data['first_name']
     data['last_name'] = 'Theodore Donald Kerabatsos'
     with self.assertRaises(RetryTask):
         # raises retry b/c the 2nd call to get_user_data returns None
         process_donation(data)
     sfdc_mock.add.assert_called_with({
         '_set_subscriber': False,
         'token': ANY,
         'record_type': ANY,
         'email': '*****@*****.**',
         'first_name': 'Theodore Donald',
         'last_name': 'Kerabatsos',
     })
Exemple #7
0
 def test_name_splitting(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = None
     del data['first_name']
     data['last_name'] = 'Theodore Donald Kerabatsos'
     with self.assertRaises(RetryTask):
         # raises retry b/c the 2nd call to get_user_data returns None
         process_donation(data)
     sfdc_mock.add.assert_called_with({
         '_set_subscriber': False,
         'token': ANY,
         'record_type': ANY,
         'email': '*****@*****.**',
         'first_name': 'Theodore Donald',
         'last_name': 'Kerabatsos',
     })
Exemple #8
0
 def test_donation_normal_failure_not_dupe(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': 'Jeffery',
         'last_name': 'Lebowski',
     }
     error_content = [{
         u'errorCode': u'OTHER_ERROR',
         u'fields': [],
         u'message': u'Some other non-dupe problem',
     }]
     exc = sfapi.SalesforceMalformedRequest('url', 400, 'opportunity', error_content)
     sfdc_mock.opportunity.create.side_effect = exc
     with self.assertRaises(sfapi.SalesforceMalformedRequest):
         process_donation(data)
Exemple #9
0
 def test_donation_normal_failure_not_dupe(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': 'Jeffery',
         'last_name': 'Lebowski',
     }
     error_content = [{
         u'errorCode': u'OTHER_ERROR',
         u'fields': [],
         u'message': u'Some other non-dupe problem',
     }]
     exc = sfapi.SalesforceMalformedRequest('url', 400, 'opportunity',
                                            error_content)
     sfdc_mock.opportunity.create.side_effect = exc
     with self.assertRaises(sfapi.SalesforceMalformedRequest):
         process_donation(data)
Exemple #10
0
    def test_name_empty(self, sfdc_mock, gud_mock):
        """Should be okay if only last_name is provided and is just spaces.

        https://github.com/mozmeao/basket/issues/45
        """
        data = self.donate_data.copy()
        gud_mock.return_value = None
        del data['first_name']
        data['last_name'] = '  '
        with self.assertRaises(RetryTask):
            # raises retry b/c the 2nd call to get_user_data returns None
            process_donation(data)
        sfdc_mock.add.assert_called_with({
            '_set_subscriber': False,
            'token': ANY,
            'record_type': ANY,
            'email': '*****@*****.**',
        })
Exemple #11
0
    def test_name_empty(self, sfdc_mock, gud_mock):
        """Should be okay if only last_name is provided and is just spaces.

        https://github.com/mozmeao/basket/issues/45
        """
        data = self.donate_data.copy()
        gud_mock.return_value = None
        del data['first_name']
        data['last_name'] = '  '
        with self.assertRaises(RetryTask):
            # raises retry b/c the 2nd call to get_user_data returns None
            process_donation(data)
        sfdc_mock.add.assert_called_with({
            '_set_subscriber': False,
            'token': ANY,
            'record_type': ANY,
            'email': '*****@*****.**',
        })
Exemple #12
0
    def test_name_none(self, sfdc_mock, gud_mock):
        """Should be okay if only last_name is provided and is None.

        https://sentry.prod.mozaws.net/operations/basket-prod/issues/683973/
        """
        data = self.donate_data.copy()
        gud_mock.return_value = None
        del data['first_name']
        data['last_name'] = None
        with self.assertRaises(RetryTask):
            # raises retry b/c the 2nd call to get_user_data returns None
            process_donation(data)
        sfdc_mock.add.assert_called_with({
            '_set_subscriber': False,
            'token': ANY,
            'record_type': ANY,
            'email': '*****@*****.**',
        })
Exemple #13
0
    def test_name_none(self, sfdc_mock, gud_mock):
        """Should be okay if only last_name is provided and is None.

        https://sentry.prod.mozaws.net/operations/basket-prod/issues/683973/
        """
        data = self.donate_data.copy()
        gud_mock.return_value = None
        del data['first_name']
        data['last_name'] = None
        with self.assertRaises(RetryTask):
            # raises retry b/c the 2nd call to get_user_data returns None
            process_donation(data)
        sfdc_mock.add.assert_called_with({
            '_set_subscriber': False,
            'token': ANY,
            'record_type': ANY,
            'email': '*****@*****.**',
        })
Exemple #14
0
 def test_donation_silent_failure_on_dupe(self, sfdc_mock, gud_mock):
     data = self.donate_data.copy()
     gud_mock.return_value = {
         'id': '1234',
         'first_name': 'Jeffery',
         'last_name': 'Lebowski',
     }
     error_content = [{
         u'errorCode':
         u'DUPLICATE_VALUE',
         u'fields': [],
         u'message':
         u'duplicate value found: PMT_Transaction_ID__c '
         u'duplicates value on record with id: blah-blah',
     }]
     exc = sfapi.SalesforceMalformedRequest('url', 400, 'opportunity',
                                            error_content)
     sfdc_mock.opportunity.create.side_effect = exc
     process_donation(data)
Exemple #15
0
 def test_donation_data(self, sfdc_mock, gud_mock):
     data = deepcopy(self.donate_data)
     gud_mock.return_value = {
         'id': '1234',
         'first_name': 'Jeffery',
         'last_name': 'Lebowski',
     }
     process_donation(data)
     sfdc_mock.opportunity.create.assert_called_with({
         'RecordTypeId': ANY,
         'Name': 'Foundation Donation',
         'Donation_Contact__c': '1234',
         'StageName': 'Closed Won',
         'CloseDate': data['timestamp'],
         'Amount': float(data['data']['donation_amount']),
         'Currency__c': 'USD',
         'Payment_Source__c': 'paypal',
         'PMT_Transaction_ID__c': data['data']['transaction_id'],
         'Payment_Type__c': 'Recurring',
         'SourceURL__c': data['data']['source_url'],
         'Project__c': data['data']['project'],
     })
Exemple #16
0
    def test_only_update_contact_if_modified(self, sfdc_mock, gud_mock):
        data = self.donate_data.copy()
        gud_mock.return_value = {
            'id': '1234',
            'first_name': '',
            'last_name': '_',
        }
        process_donation(data)
        sfdc_mock.update.assert_called_with(gud_mock(), {
            '_set_subscriber': False,
            'first_name': 'Jeffery',
            'last_name': 'Lebowski',
        })

        sfdc_mock.reset_mock()
        data = self.donate_data.copy()
        gud_mock.return_value = {
            'id': '1234',
            'first_name': 'Jeffery',
            'last_name': 'Lebowski',
        }
        process_donation(data)
        sfdc_mock.update.assert_not_called()
Exemple #17
0
    def test_only_update_contact_if_modified(self, sfdc_mock, gud_mock):
        data = self.donate_data.copy()
        gud_mock.return_value = {
            'id': '1234',
            'first_name': '',
            'last_name': '_',
        }
        process_donation(data)
        sfdc_mock.update.assert_called_with(
            gud_mock(), {
                '_set_subscriber': False,
                'first_name': 'Jeffery',
                'last_name': 'Lebowski',
            })

        sfdc_mock.reset_mock()
        data = self.donate_data.copy()
        gud_mock.return_value = {
            'id': '1234',
            'first_name': 'Jeffery',
            'last_name': 'Lebowski',
        }
        process_donation(data)
        sfdc_mock.update.assert_not_called()