Stripe in Blender Studio #93018

Merged
Anna Sirota merged 9 commits from studio-to-stripe into main 2024-06-17 17:39:10 +02:00
10 changed files with 17 additions and 15 deletions
Showing only changes of commit e46910eea4 - Show all commits

View File

@ -27,7 +27,7 @@ class AbstractBaseTestCase(TestCase):
class AbstractLooperTestCase(AbstractBaseTestCase): class AbstractLooperTestCase(AbstractBaseTestCase):
log = log.getChild('AbstractLooperTestCase') log = log.getChild('AbstractLooperTestCase')
fixtures = ['devfund', 'testuser', 'systemuser'] fixtures = ['gateways', 'devfund', 'testuser', 'systemuser']
valid_payload = { valid_payload = {
'gateway': 'stripe', 'gateway': 'stripe',
'email': 'erik@example.com', 'email': 'erik@example.com',
@ -79,7 +79,7 @@ class AbstractLooperTestCase(AbstractBaseTestCase):
self.pay_meth = self.user.customer.payment_method_default self.pay_meth = self.user.customer.payment_method_default
def create_accountless_customer(self): def create_accountless_customer(self):
self.accountless_customer = Customer.objects.create() self.accountless_customer = Customer.objects.create(user=None)
self.accountless_customer.billing_address.save() self.accountless_customer.billing_address.save()
gw = self._get_test_gateway() gw = self._get_test_gateway()
if gw: if gw:

View File

@ -10,12 +10,11 @@ import looper.taxes
User = get_user_model() User = get_user_model()
@factory.django.mute_signals(signals.pre_save, signals.post_save)
class UserFactory(DjangoModelFactory): class UserFactory(DjangoModelFactory):
class Meta: class Meta:
model = User model = User
id = factory.Sequence(lambda n: 1000 + n)
first_name = factory.Faker('first_name') first_name = factory.Faker('first_name')
last_name = factory.Faker('last_name') last_name = factory.Faker('last_name')
username = factory.LazyAttribute(lambda o: f'{o.first_name}_{o.last_name}') username = factory.LazyAttribute(lambda o: f'{o.first_name}_{o.last_name}')
@ -30,6 +29,8 @@ class CustomerFactory(DjangoModelFactory):
class Meta: class Meta:
model = looper.models.Customer model = looper.models.Customer
user = factory.SubFactory(UserFactory)
class PaymentMethodFactory(DjangoModelFactory): class PaymentMethodFactory(DjangoModelFactory):
class Meta: class Meta:
@ -58,6 +59,7 @@ class SubscriptionFactory(DjangoModelFactory):
class Meta: class Meta:
model = looper.models.Subscription model = looper.models.Subscription
customer = factory.SubFactory(CustomerFactory)
plan = factory.SubFactory(PlanFactory) plan = factory.SubFactory(PlanFactory)
payment_method = factory.SubFactory(PaymentMethodFactory) payment_method = factory.SubFactory(PaymentMethodFactory)

View File

@ -22,7 +22,7 @@ CHECKOUT = 'looper-braintree:checkout'
# Prevent communication with Google's reCAPTCHA API. # Prevent communication with Google's reCAPTCHA API.
@override_settings(GOOGLE_RECAPTCHA_SECRET_KEY='') @override_settings(GOOGLE_RECAPTCHA_SECRET_KEY='')
class AbstractCheckoutTestCase(AbstractLooperTestCase): class AbstractCheckoutTestCase(AbstractLooperTestCase):
fixtures = ['devfund', 'testuser', 'systemuser'] fixtures = ['gateways', 'devfund', 'testuser', 'systemuser']
checkout_url = reverse_lazy(CHECKOUT, kwargs={'plan_id': 2, 'plan_variation_id': 5}) checkout_url = reverse_lazy(CHECKOUT, kwargs={'plan_id': 2, 'plan_variation_id': 5})
def setUp(self): def setUp(self):

View File

@ -15,7 +15,7 @@ User = get_user_model()
class _BaseTestCase(AbstractLooperTestCase): class _BaseTestCase(AbstractLooperTestCase):
fixtures = ['devfund', 'testuser', 'systemuser'] fixtures = ['gateways', 'devfund', 'testuser', 'systemuser']
checkout_url = reverse_lazy('looper:checkout', kwargs={'plan_id': 2, 'plan_variation_id': 5}) checkout_url = reverse_lazy('looper:checkout', kwargs={'plan_id': 2, 'plan_variation_id': 5})
gateway_name = 'stripe' gateway_name = 'stripe'

View File

@ -19,7 +19,7 @@ from looper.tests.factories import (
@mock.patch('looper.gateways.stripe.webhook.WebhookSignature.verify_header', return_value=True) @mock.patch('looper.gateways.stripe.webhook.WebhookSignature.verify_header', return_value=True)
class ClockForStripe(ResponsesMixin, TestCase): class ClockForStripe(ResponsesMixin, TestCase):
fixtures = ['devfund', 'systemuser'] fixtures = ['gateways', 'devfund', 'systemuser']
responses_files = ['clock_stripe.yaml'] responses_files = ['clock_stripe.yaml']
# @_recorder.record(file_path=f'{ResponsesMixin.responses_file_path}/clock_stripe.yaml') # @_recorder.record(file_path=f'{ResponsesMixin.responses_file_path}/clock_stripe.yaml')

View File

@ -116,7 +116,7 @@ class BraintreeErrorTest(AbstractBaseTestCase):
class BankGatewayTest(AbstractBaseTestCase): class BankGatewayTest(AbstractBaseTestCase):
fixtures = ['testuser', 'devfund'] fixtures = ['testuser', 'gateways', 'devfund']
def setUp(self): def setUp(self):
super().setUp() super().setUp()

View File

@ -10,7 +10,7 @@ from . import AbstractLooperTestCase, AbstractBaseTestCase
class MoneyFieldTest(AbstractBaseTestCase): class MoneyFieldTest(AbstractBaseTestCase):
fixtures = ['testuser', 'devfund', 'systemuser'] fixtures = ['testuser', 'gateways', 'devfund', 'systemuser']
def test_create_instance(self): def test_create_instance(self):
pv = models.PlanVariation(plan_id=1, currency='EUR', price=Money('EUR', 155)) pv = models.PlanVariation(plan_id=1, currency='EUR', price=Money('EUR', 155))

View File

@ -15,7 +15,7 @@ User = get_user_model()
class _BaseTestCase(AbstractLooperTestCase): class _BaseTestCase(AbstractLooperTestCase):
fixtures = ['devfund', 'testuser', 'systemuser'] fixtures = ['gateways', 'devfund', 'testuser', 'systemuser']
gateway_name = 'stripe' gateway_name = 'stripe'
subscription = None subscription = None

View File

@ -6,7 +6,7 @@ from ..money import Money
class PlanVariationModelTestCase(django.test.TestCase): class PlanVariationModelTestCase(django.test.TestCase):
fixtures = ['devfund'] fixtures = ['gateways', 'devfund']
def setUp(self): def setUp(self):
product = Product.objects.create(name='Ежедневный Пророк') product = Product.objects.create(name='Ежедневный Пророк')
@ -29,7 +29,7 @@ class PlanVariationModelTestCase(django.test.TestCase):
class PlanVariationTest(django.test.TestCase): class PlanVariationTest(django.test.TestCase):
fixtures = ['devfund'] fixtures = ['gateways', 'devfund']
def test_variation_for_currency(self): def test_variation_for_currency(self):
plan = Plan.objects.get(pk=1) plan = Plan.objects.get(pk=1)

View File

@ -35,7 +35,7 @@ event_payload_cc = {
@mock.patch('looper.gateways.stripe.webhook.WebhookSignature.verify_header', return_value=True) @mock.patch('looper.gateways.stripe.webhook.WebhookSignature.verify_header', return_value=True)
class UpsertOrderFromPaymentIntentAndProduct(ResponsesMixin, TestCase): class UpsertOrderFromPaymentIntentAndProduct(ResponsesMixin, TestCase):
fixtures = ['devfund', 'systemuser'] fixtures = ['gateways', 'devfund', 'systemuser']
responses_files = [ responses_files = [
'payment_intent__card.yaml', 'payment_intent__card.yaml',
'payment_intent__ideal.yaml', 'payment_intent__ideal.yaml',
@ -452,7 +452,7 @@ class UpsertOrderFromPaymentIntentAndProduct(ResponsesMixin, TestCase):
class TestCheckoutPlanVariationAnonymous(ResponsesMixin, TestCase): class TestCheckoutPlanVariationAnonymous(ResponsesMixin, TestCase):
fixtures = ['devfund', 'systemuser'] fixtures = ['gateways', 'devfund', 'systemuser']
responses_files = [ responses_files = [
'checkout_plan_variation_anonymous.yaml', 'checkout_plan_variation_anonymous.yaml',
'checkout_plan_variation_webhook.yaml', 'checkout_plan_variation_webhook.yaml',
@ -535,7 +535,7 @@ class TestCheckoutPlanVariationAnonymous(ResponsesMixin, TestCase):
class TestCheckoutPlanVariationLoggedIn(ResponsesMixin, TestCase): class TestCheckoutPlanVariationLoggedIn(ResponsesMixin, TestCase):
fixtures = ['devfund', 'systemuser'] fixtures = ['gateways', 'devfund', 'systemuser']
responses_files = [ responses_files = [
'checkout_plan_variation_logged_in.yaml', 'checkout_plan_variation_logged_in.yaml',
] ]