diff --git a/utils/tests.py b/utils/tests.py index 2b08f92c..827dad0a 100644 --- a/utils/tests.py +++ b/utils/tests.py @@ -2,13 +2,13 @@ import uuid from unittest.mock import patch import stripe -from django.conf import settings from django.http.request import HttpRequest from django.test import Client from django.test import TestCase from model_mommy import mommy from datacenterlight.models import StripePlan +from membership.models import StripeCustomer from utils.stripe_utils import StripeUtils @@ -98,18 +98,15 @@ class TestStripeCustomerDescription(TestCase): """ def setUp(self): - self.dummy_password = 'test_password' - self.dummy_email = 'test@ungleich.ch' + self.customer_password = 'test_password' + self.customer_email = 'test@ungleich.ch' + self.customer_name = "Monty Python" self.customer = mommy.make('membership.CustomUser') - self.customer.set_password(self.dummy_password) - self.customer.email = self.dummy_email + self.customer.set_password(self.customer_password) + self.customer.email = self.customer_email self.customer.save() self.stripe_utils = StripeUtils() - # self.stripe.api_key = settings.STRIPE_API_PRIVATE_KEY - - def test_creating_stripe_customer(self): - test_name = "Monty Python" - token = stripe.Token.create( + self.token = stripe.Token.create( card={ "number": '4111111111111111', "exp_month": 12, @@ -118,10 +115,11 @@ class TestStripeCustomerDescription(TestCase): }, ) - stripe_data = self.stripe_utils.create_customer(token.id, self.customer.email, test_name) + def test_creating_stripe_customer(self): + stripe_data = self.stripe_utils.create_customer(self.token.id, self.customer.email, self.customer_name) self.assertEqual(stripe_data.get('error'), None) customer_data = stripe_data.get('response_object') - self.assertEqual(customer_data.description, test_name) + self.assertEqual(customer_data.description, self.customer_name) class StripePlanTestCase(TestStripeCustomerDescription): @@ -144,7 +142,7 @@ class StripePlanTestCase(TestStripeCustomerDescription): Test details: 1. Create a test plan in Stripe with a particular id 2. Try to recreate the plan with the same id - 3. The code should be able to handle this + 3. This creates a Stripe error, the code should be able to handle the error :param mock_logger: :return: @@ -177,3 +175,13 @@ class StripePlanTestCase(TestStripeCustomerDescription): self.assertIsInstance(result, dict) self.assertEqual(result.get('response_object'), False) mock_logger.debug.assert_called_with(self.stripe_utils.PLAN_DOES_NOT_EXIST_ERROR_MSG.format(plan_id)) + + def test_subscribe_customer_to_plan(self): + stripe_plan = self.stripe_utils.get_or_create_stripe_plan(2000, "test plan 1", stripe_plan_id='test-plan-1') + stripe_customer = StripeCustomer.get_or_create(email=self.customer_email, + token=self.token) + result = self.stripe_utils.subscribe_customer_to_plan(stripe_customer.stripe_id, + [{"plan": stripe_plan.get( + 'response_object').stripe_plan_id}]) + self.assertIsInstance(result.get('response_object'), stripe.Subscription) + self.assertIsNone(result.get('error'))