def test_capture_charge( self, balance_transaction_retrieve_mock, charge_retrieve_mock, default_account_mock ): default_account_mock.return_value = self.account fake_charge_no_invoice = deepcopy(FAKE_CHARGE) fake_charge_no_invoice.update({"invoice": None}) charge_retrieve_mock.return_value = fake_charge_no_invoice charge, created = Charge._get_or_create_from_stripe_object(fake_charge_no_invoice) self.assertTrue(created) captured_charge = charge.capture() self.assertTrue(captured_charge.captured) self.assert_fks( charge, expected_blank_fks={ "djstripe.Account.business_logo", "djstripe.Charge.dispute", "djstripe.Charge.invoice", "djstripe.Charge.transfer", "djstripe.Customer.coupon", "djstripe.Plan.product", }, )
def test_sync_from_stripe_data_with_destination( self, file_retrieve_mock, invoice_retrieve_mock, paymentmethod_card_retrieve_mock, payment_intent_retrieve_mock, subscription_retrieve_mock, product_retrieve_mock, balance_transaction_retrieve_mock, account_retrieve_mock, charge_retrieve_mock, ): account_retrieve_mock.return_value = FAKE_STANDARD_ACCOUNT fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"destination": FAKE_STANDARD_ACCOUNT["id"]}) charge, created = Charge._get_or_create_from_stripe_object( fake_charge_copy, current_ids={fake_charge_copy["id"]}) self.assertTrue(created) charge_retrieve_mock.assert_not_called() balance_transaction_retrieve_mock.assert_called_once_with( api_key=djstripe_settings.STRIPE_SECRET_KEY, expand=[], id=FAKE_BALANCE_TRANSACTION["id"], stripe_account=None, ) self.assert_fks(charge, expected_blank_fks=self.default_expected_blank_fks)
def test_sync_from_stripe_data_with_destination( self, file_retrive_mock, invoice_retrieve_mock, subscription_retrieve_mock, product_retrieve_mock, balance_transaction_retrieve_mock, account_retrieve_mock, charge_retrieve_mock, ): account_retrieve_mock.return_value = FAKE_ACCOUNT fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"destination": FAKE_ACCOUNT["id"]}) charge, created = Charge._get_or_create_from_stripe_object( fake_charge_copy, current_ids={fake_charge_copy["id"]}) self.assertTrue(created) self.assertEqual(2, Account.objects.count()) account = Account.objects.get(id=FAKE_ACCOUNT["id"]) self.assertEqual(account, charge.account) charge_retrieve_mock.assert_not_called() balance_transaction_retrieve_mock.assert_not_called() self.assert_fks( charge, expected_blank_fks={ "djstripe.Charge.dispute", "djstripe.Charge.transfer", "djstripe.Customer.coupon", }, )
def test_sync_from_stripe_data_with_destination( self, file_retrieve_mock, invoice_retrieve_mock, payment_intent_retrieve_mock, subscription_retrieve_mock, product_retrieve_mock, balance_transaction_retrieve_mock, account_retrieve_mock, charge_retrieve_mock, ): from djstripe.settings import STRIPE_SECRET_KEY account_retrieve_mock.return_value = FAKE_ACCOUNT fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"destination": FAKE_ACCOUNT["id"]}) charge, created = Charge._get_or_create_from_stripe_object( fake_charge_copy, current_ids={fake_charge_copy["id"]}) self.assertTrue(created) self.assertEqual(2, Account.objects.count()) account = Account.objects.get(id=FAKE_ACCOUNT["id"]) self.assertEqual(account, charge.account) charge_retrieve_mock.assert_not_called() balance_transaction_retrieve_mock.assert_called_once_with( api_key=STRIPE_SECRET_KEY, expand=[], id=FAKE_BALANCE_TRANSACTION["id"]) self.assert_fks(charge, expected_blank_fks=self.default_expected_blank_fks)
def test_refund_charge(self, charge_retrieve_mock, balance_transaction_retrieve_mock, default_account_mock): default_account_mock.return_value = self.account fake_charge_no_invoice = deepcopy(FAKE_CHARGE) fake_charge_no_invoice.update({"invoice": None}) charge_retrieve_mock.return_value = fake_charge_no_invoice charge, created = Charge._get_or_create_from_stripe_object( fake_charge_no_invoice) self.assertTrue(created) self.assert_fks( charge, expected_blank_fks={ "djstripe.Account.branding_logo", "djstripe.Account.branding_icon", "djstripe.Charge.dispute", "djstripe.Charge.invoice", "djstripe.Charge.transfer", "djstripe.Customer.coupon", }, ) charge.refund() refunded_charge, created2 = Charge._get_or_create_from_stripe_object( fake_charge_no_invoice) self.assertFalse(created2) self.assertEqual(refunded_charge.refunded, True) self.assertEqual(refunded_charge.amount_refunded, decimal.Decimal("20.00")) self.assert_fks( refunded_charge, expected_blank_fks={ "djstripe.Account.branding_logo", "djstripe.Account.branding_icon", "djstripe.Charge.dispute", "djstripe.Charge.invoice", "djstripe.Charge.transfer", "djstripe.Customer.coupon", }, )
def test_refund_charge(self, charge_retrieve_mock, default_account_mock): default_account_mock.return_value = self.account fake_charge_no_invoice = deepcopy(FAKE_CHARGE) fake_charge_no_invoice.update({"invoice": None}) charge_retrieve_mock.return_value = fake_charge_no_invoice charge, created = Charge._get_or_create_from_stripe_object(fake_charge_no_invoice) self.assertTrue(created) charge.refund() refunded_charge, created2 = Charge._get_or_create_from_stripe_object(fake_charge_no_invoice) self.assertFalse(created2) self.assertEqual(refunded_charge.refunded, True) self.assertEqual(refunded_charge.amount_refunded, decimal.Decimal("22.00"))
def test_capture_charge(self, charge_retrieve_mock, default_account_mock): default_account_mock.return_value = self.account fake_charge_no_invoice = deepcopy(FAKE_CHARGE) fake_charge_no_invoice.update({"invoice": None}) charge_retrieve_mock.return_value = fake_charge_no_invoice charge, created = Charge._get_or_create_from_stripe_object(fake_charge_no_invoice) self.assertTrue(created) captured_charge = charge.capture() self.assertTrue(captured_charge.captured)
def test_sync_from_stripe_data_with_destination(self, account_retrieve_mock, charge_retrieve_mock): account_retrieve_mock.return_value = FAKE_ACCOUNT fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"destination": FAKE_ACCOUNT["id"]}) charge_retrieve_mock.return_value = fake_charge_copy charge, created = Charge._get_or_create_from_stripe_object(fake_charge_copy) self.assertTrue(created) self.assertEqual(2, Account.objects.count()) account = Account.objects.get(id=FAKE_ACCOUNT["id"]) self.assertEqual(account, charge.account)
def test_sync_from_stripe_data_with_transfer( self, default_account_mock, subscription_retrieve_mock, product_retrieve_mock, transfer_retrieve_mock, payment_intent_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, balance_transaction_retrieve_mock, ): from djstripe.settings import STRIPE_SECRET_KEY default_account_mock.return_value = self.account fake_transfer = deepcopy(FAKE_TRANSFER) fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"transfer": fake_transfer["id"]}) transfer_retrieve_mock.return_value = fake_transfer charge_retrieve_mock.return_value = fake_charge_copy charge, created = Charge._get_or_create_from_stripe_object( fake_charge_copy, current_ids={fake_charge_copy["id"]} ) self.assertTrue(created) self.assertNotEqual(None, charge.transfer) self.assertEqual(fake_transfer["id"], charge.transfer.id) charge_retrieve_mock.assert_not_called() balance_transaction_retrieve_mock.assert_called_once_with( api_key=STRIPE_SECRET_KEY, expand=[], id=FAKE_BALANCE_TRANSACTION["id"] ) self.assert_fks( charge, expected_blank_fks={ "djstripe.Account.branding_logo", "djstripe.Account.branding_icon", "djstripe.Charge.dispute", "djstripe.Customer.coupon", "djstripe.PaymentIntent.on_behalf_of", "djstripe.PaymentIntent.payment_method", "djstripe.Subscription.pending_setup_intent", }, )
def test_sync_from_stripe_data_with_transfer( self, default_account_mock, subscription_retrieve_mock, product_retrieve_mock, transfer_retrieve_mock, paymentmethod_card_retrieve_mock, payment_intent_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, balance_transaction_retrieve_mock, transfer__attach_object_post_save_hook_mock, ): default_account_mock.return_value = self.account fake_transfer = deepcopy(FAKE_TRANSFER) fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"transfer": fake_transfer["id"]}) transfer_retrieve_mock.return_value = fake_transfer charge_retrieve_mock.return_value = fake_charge_copy charge, created = Charge._get_or_create_from_stripe_object( fake_charge_copy, current_ids={fake_charge_copy["id"]}) self.assertTrue(created) self.assertNotEqual(None, charge.transfer) self.assertEqual(fake_transfer["id"], charge.transfer.id) charge_retrieve_mock.assert_not_called() balance_transaction_retrieve_mock.assert_called_once_with( api_key=djstripe_settings.STRIPE_SECRET_KEY, expand=[], id=FAKE_BALANCE_TRANSACTION["id"], stripe_account=None, ) self.assert_fks( charge, expected_blank_fks=(self.default_expected_blank_fks | { "djstripe.Account.branding_logo", "djstripe.Account.branding_icon" }) - {"djstripe.Charge.transfer"}, )
def test_sync_from_stripe_data_with_transfer(self, default_account_mock, transfer_retrieve_mock, charge_retrieve_mock): default_account_mock.return_value = self.account fake_transfer = deepcopy(FAKE_TRANSFER) fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"transfer": fake_transfer["id"]}) transfer_retrieve_mock.return_value = fake_transfer charge_retrieve_mock.return_value = fake_charge_copy charge, created = Charge._get_or_create_from_stripe_object(fake_charge_copy) self.assertTrue(created) self.assertNotEqual(None, charge.transfer) self.assertEqual(fake_transfer["id"], charge.transfer.id)
def test_capture_charge( self, payment_intent_retrieve_mock, balance_transaction_retrieve_mock, charge_retrieve_mock, default_account_mock, ): default_account_mock.return_value = self.account fake_charge_no_invoice = deepcopy(FAKE_CHARGE) fake_charge_no_invoice.update({"invoice": None}) charge_retrieve_mock.return_value = fake_charge_no_invoice # TODO - I think this is needed in line with above? fake_payment_intent_no_invoice = deepcopy(FAKE_PAYMENT_INTENT_I) fake_payment_intent_no_invoice.update({"invoice": None}) payment_intent_retrieve_mock.return_value = fake_payment_intent_no_invoice charge, created = Charge._get_or_create_from_stripe_object( fake_charge_no_invoice ) self.assertTrue(created) captured_charge = charge.capture() self.assertTrue(captured_charge.captured) self.assert_fks( charge, expected_blank_fks={ "djstripe.Account.branding_logo", "djstripe.Account.branding_icon", "djstripe.Charge.dispute", "djstripe.Charge.invoice", "djstripe.Charge.transfer", "djstripe.Customer.coupon", "djstripe.PaymentIntent.invoice", "djstripe.PaymentIntent.on_behalf_of", "djstripe.PaymentIntent.payment_method", "djstripe.Plan.product", "djstripe.Subscription.pending_setup_intent", }, )
def test_capture_charge( self, paymentmethod_card_retrieve_mock, payment_intent_retrieve_mock, balance_transaction_retrieve_mock, charge_retrieve_mock, default_account_mock, ): default_account_mock.return_value = self.account fake_charge_no_invoice = deepcopy(FAKE_CHARGE) fake_charge_no_invoice.update({"invoice": None}) charge_retrieve_mock.return_value = fake_charge_no_invoice # TODO - I think this is needed in line with above? fake_payment_intent_no_invoice = deepcopy(FAKE_PAYMENT_INTENT_I) fake_payment_intent_no_invoice.update({"invoice": None}) payment_intent_retrieve_mock.return_value = fake_payment_intent_no_invoice charge, created = Charge._get_or_create_from_stripe_object( fake_charge_no_invoice) self.assertTrue(created) captured_charge = charge.capture() self.assertTrue(captured_charge.captured) self.assertFalse(captured_charge.fraudulent) self.assert_fks( charge, expected_blank_fks=self.default_expected_blank_fks | { "djstripe.Account.branding_logo", "djstripe.Account.branding_icon", "djstripe.Charge.latest_invoice (related name)", "djstripe.Charge.invoice", "djstripe.PaymentIntent.invoice (related name)", "djstripe.Plan.product", }, )
def test_sync_from_stripe_data_with_transfer( self, default_account_mock, subscription_retrieve_mock, product_retrieve_mock, transfer_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, balance_transaction_retrieve_mock, ): default_account_mock.return_value = self.account fake_transfer = deepcopy(FAKE_TRANSFER) fake_charge_copy = deepcopy(FAKE_CHARGE) fake_charge_copy.update({"transfer": fake_transfer["id"]}) transfer_retrieve_mock.return_value = fake_transfer charge_retrieve_mock.return_value = fake_charge_copy charge, created = Charge._get_or_create_from_stripe_object( fake_charge_copy, current_ids={fake_charge_copy["id"]}) self.assertTrue(created) self.assertNotEqual(None, charge.transfer) self.assertEqual(fake_transfer["id"], charge.transfer.id) charge_retrieve_mock.assert_not_called() balance_transaction_retrieve_mock.assert_not_called() self.assert_fks( charge, expected_blank_fks={ "djstripe.Account.business_logo", "djstripe.Charge.dispute", "djstripe.Customer.coupon", }, )