def test_failure(self): basket = create_basket(site=self.site) PaymentProcessorResponse.objects.create(basket=basket) assert refund_basket_transactions(self.site, [basket.id]) == ( 0, 1, )
def test_success(self): product_price = 100 percentage_discount = 10 product = ProductFactory(stockrecords__price_excl_tax=product_price) voucher, product = prepare_voucher( _range=RangeFactory(products=[product]), benefit_value=percentage_discount) self.request.user = UserFactory() basket = prepare_basket(self.request, [product], voucher) ppr = PaymentProcessorResponse.objects.create(basket=basket, transaction_id='abc', processor_name='paypal') with mock.patch.object(Paypal, 'issue_credit') as mock_issue_credit: mock_issue_credit.return_value = None assert refund_basket_transactions(self.site, [basket.id]) == ( 1, 0, ) total = product_price * (100 - percentage_discount) / 100. mock_issue_credit.assert_called_once_with(basket.order_number, basket, ppr.transaction_id, total, basket.currency)
def post(self, request, *args, **kwargs): # pylint: disable=unused-argument action = request.POST.get('action') if action: logger.info( 'User [%s] executed action [%s] on the management view.', request.user, action) if action == 'refund_basket_transactions': basket_ids = self._parse_basket_ids(request.POST.get('basket_ids')) success_count, failure_count = refund_basket_transactions( request.site, basket_ids) msg = 'Finished refunding basket transactions. [{success_count}] transactions were successfully refunded.' \ ' [{failure_count}] attempts failed.'.format(success_count=success_count, failure_count=failure_count) messages.add_message(request, messages.INFO, msg) elif action == 'fulfill': basket_ids = self._parse_basket_ids(request.POST.get('basket_ids')) for basket_id in basket_ids: fulfilled = FulfillFrozenBaskets().fulfill_basket( basket_id=basket_id, site=request.site) if fulfilled: logger.info('Fulfilled basket [%s].', basket_id) else: logger.info('Unable to fulfill basket [%d]', basket_id) else: messages.add_message( request, messages.ERROR, _('{action} is not a valid action.').format(action=action)) return self.get(request)
def test_no_basket_ids(self): assert refund_basket_transactions(self.site, []) == ( 0, 0, )