def test_issue_credit_error(self): refund = self.create_refund(self.processor_name) order = refund.order basket = order.basket amount = refund.total_credit_excl_tax currency = refund.currency source = order.sources.first() transaction_id = 'PAY-REFUND-FAIL-1' expected_response = {'debug_id': transaction_id} paypal_refund = paypalrestsdk.Refund({'error': expected_response}) payment = Payment( {'transactions': [Resource({'related_resources': [Resource({'sale': Sale({'id': 'PAY-SALE-1'})})]})]}) # Test general exception with mock.patch.object(Payment, 'find', return_value=payment): with mock.patch.object(Sale, 'refund', side_effect=ValueError): self.assertRaises(GatewayError, self.processor.issue_credit, source, amount, currency) self.assertEqual(source.amount_refunded, 0) # Test error response with mock.patch.object(Payment, 'find', return_value=payment): with mock.patch.object(Sale, 'refund', return_value=paypal_refund): self.assertRaises(GatewayError, self.processor.issue_credit, source, amount, currency) # Verify PaymentProcessorResponse created self.assert_processor_response_recorded(self.processor.NAME, transaction_id, expected_response, basket) # Verify Source unchanged self.assertEqual(source.amount_refunded, 0)
def test_issue_credit(self): """ Tests issuing credit with Paypal processor """ refund = self.create_refund(self.processor_name) order = refund.order basket = order.basket amount = refund.total_credit_excl_tax currency = refund.currency source = order.sources.first() transaction_id = 'PAY-REFUND-1' paypal_refund = paypalrestsdk.Refund({'id': transaction_id}) payment = paypalrestsdk.Payment({ 'transactions': [ Resource({'related_resources': [Resource({'sale': paypalrestsdk.Sale({'id': 'PAY-SALE-1'})})]}) ] }) with mock.patch.object(paypalrestsdk.Payment, 'find', return_value=payment): with mock.patch.object(paypalrestsdk.Sale, 'refund', return_value=paypal_refund): actual_transaction_id = self.processor.issue_credit(order.number, order.basket, source.reference, amount, currency) self.assertEqual(actual_transaction_id, transaction_id) # Verify PaymentProcessorResponse created self.assert_processor_response_recorded(self.processor.NAME, transaction_id, {'id': transaction_id}, basket)
def test_issue_credit(self): refund = self.create_refund(self.processor_name) order = refund.order basket = order.basket amount = refund.total_credit_excl_tax currency = refund.currency source = order.sources.first() transaction_id = 'PAY-REFUND-1' paypal_refund = paypalrestsdk.Refund({'id': transaction_id}) payment = Payment( {'transactions': [Resource({'related_resources': [Resource({'sale': Sale({'id': 'PAY-SALE-1'})})]})]}) with mock.patch.object(Payment, 'find', return_value=payment): with mock.patch.object(Sale, 'refund', return_value=paypal_refund): self.processor.issue_credit(source, amount, currency) # Verify PaymentProcessorResponse created self.assert_processor_response_recorded(self.processor.NAME, transaction_id, {'id': transaction_id}, basket) # Verify Source updated self.assertEqual(source.amount_refunded, amount) # Verify PaymentEvent created paid_type = PaymentEventType.objects.get(code='refunded') order = basket.order_set.first() payment_event = order.payment_events.first() self.assert_valid_payment_event_fields(payment_event, amount, paid_type, self.processor.NAME, transaction_id)