Refactored code
This commit is contained in:
parent
3ef34d84a8
commit
ffd0d24f1a
2 changed files with 23 additions and 24 deletions
|
@ -146,8 +146,8 @@ class StripeUtils(object):
|
||||||
:param name: The name of the Stripe plan to be created.
|
:param name: The name of the Stripe plan to be created.
|
||||||
:param stripe_plan_id: The id of the Stripe plan to be created. Use get_stripe_plan_id_string function to obtain
|
:param stripe_plan_id: The id of the Stripe plan to be created. Use get_stripe_plan_id_string function to obtain
|
||||||
the name of the plan to be created
|
the name of the plan to be created
|
||||||
:return: The StripePlan object if it exists or if can create a Plan object with Stripe, None otherwise. In case
|
:return: The StripePlan object if it exists else creates a Plan object in Stripe and a local StripePlan and
|
||||||
of a Stripe error, it returns the error dictionary
|
returns it. Returns None in case of Stripe error
|
||||||
"""
|
"""
|
||||||
_amount = float(amount)
|
_amount = float(amount)
|
||||||
amount = int(_amount * 100) # stripe amount unit, in cents
|
amount = int(_amount * 100) # stripe amount unit, in cents
|
||||||
|
@ -175,8 +175,7 @@ class StripeUtils(object):
|
||||||
Deletes the Plan in Stripe and also deletes the local db copy of the plan if it exists
|
Deletes the Plan in Stripe and also deletes the local db copy of the plan if it exists
|
||||||
|
|
||||||
:param stripe_plan_id: The stripe plan id that needs to be deleted
|
:param stripe_plan_id: The stripe plan id that needs to be deleted
|
||||||
:return: True if the plan was deleted successfully from Stripe, False otherwise. In case of a Stripe error, it
|
:return: True if the plan was deleted successfully from Stripe, False otherwise.
|
||||||
returns the error dictionary
|
|
||||||
"""
|
"""
|
||||||
return_value = False
|
return_value = False
|
||||||
try:
|
try:
|
||||||
|
@ -231,6 +230,6 @@ class StripeUtils(object):
|
||||||
:param version: The version of the Stripe plans
|
:param version: The version of the Stripe plans
|
||||||
:return: A string of the form `dcl-v1-cpu-2-ram-5gb-ssd-10gb`
|
:return: A string of the form `dcl-v1-cpu-2-ram-5gb-ssd-10gb`
|
||||||
"""
|
"""
|
||||||
DCL_PLAN_STRING = 'cpu-{cpu}-ram-{ram}gb-ssd-{ssd}gb'.format(cpu=cpu, ram=ram, ssd=ssd)
|
dcl_plan_string = 'cpu-{cpu}-ram-{ram}gb-ssd-{ssd}gb'.format(cpu=cpu, ram=ram, ssd=ssd)
|
||||||
STRIPE_PLAN_ID_STRING = '{app}-v{version}-{plan}'.format(app='dcl', version=version, plan=DCL_PLAN_STRING)
|
stripe_plan_id_string = '{app}-v{version}-{plan}'.format(app='dcl', version=version, plan=dcl_plan_string)
|
||||||
return STRIPE_PLAN_ID_STRING
|
return stripe_plan_id_string
|
||||||
|
|
|
@ -104,7 +104,8 @@ class TestStripeCustomerDescription(TestCase):
|
||||||
self.customer.set_password(self.dummy_password)
|
self.customer.set_password(self.dummy_password)
|
||||||
self.customer.email = self.dummy_email
|
self.customer.email = self.dummy_email
|
||||||
self.customer.save()
|
self.customer.save()
|
||||||
stripe.api_key = settings.STRIPE_API_PRIVATE_KEY
|
self.stripe_utils = StripeUtils()
|
||||||
|
# self.stripe.api_key = settings.STRIPE_API_PRIVATE_KEY
|
||||||
|
|
||||||
def test_creating_stripe_customer(self):
|
def test_creating_stripe_customer(self):
|
||||||
test_name = "Monty Python"
|
test_name = "Monty Python"
|
||||||
|
@ -116,8 +117,8 @@ class TestStripeCustomerDescription(TestCase):
|
||||||
"cvc": '123'
|
"cvc": '123'
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
stripe_utils = StripeUtils()
|
|
||||||
stripe_data = stripe_utils.create_customer(token.id, self.customer.email, test_name)
|
stripe_data = self.stripe_utils.create_customer(token.id, self.customer.email, test_name)
|
||||||
self.assertEqual(stripe_data.get('error'), None)
|
self.assertEqual(stripe_data.get('error'), None)
|
||||||
customer_data = stripe_data.get('response_object')
|
customer_data = stripe_data.get('response_object')
|
||||||
self.assertEqual(customer_data.description, test_name)
|
self.assertEqual(customer_data.description, test_name)
|
||||||
|
@ -128,11 +129,12 @@ class StripePlanTestCase(TestStripeCustomerDescription):
|
||||||
A class to test Stripe plans
|
A class to test Stripe plans
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def test_get_or_create_plan(self):
|
def test_get_stripe_plan_id_string(self):
|
||||||
stripe_utils = StripeUtils()
|
plan_id_string = StripeUtils.get_stripe_plan_id_string(cpu=2, ram=20, ssd=100, version=1)
|
||||||
plan_id_string = stripe_utils.get_stripe_plan_id_string(2, 20, 100, 1)
|
|
||||||
self.assertEqual(plan_id_string, 'dcl-v1-cpu-2-ram-20gb-ssd-100gb')
|
self.assertEqual(plan_id_string, 'dcl-v1-cpu-2-ram-20gb-ssd-100gb')
|
||||||
stripe_plan = stripe_utils.get_or_create_stripe_plan(2000, "test plan 1", stripe_plan_id='test-plan-1')
|
|
||||||
|
def test_get_or_create_plan(self):
|
||||||
|
stripe_plan = self.stripe_utils.get_or_create_stripe_plan(2000, "test plan 1", stripe_plan_id='test-plan-1')
|
||||||
self.assertIsNone(stripe_plan.get('error'))
|
self.assertIsNone(stripe_plan.get('error'))
|
||||||
self.assertIsInstance(stripe_plan.get('response_object'), StripePlan)
|
self.assertIsInstance(stripe_plan.get('response_object'), StripePlan)
|
||||||
|
|
||||||
|
@ -147,33 +149,31 @@ class StripePlanTestCase(TestStripeCustomerDescription):
|
||||||
:param mock_logger:
|
:param mock_logger:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
stripe_utils = StripeUtils()
|
|
||||||
unique_id = str(uuid.uuid4().hex)
|
unique_id = str(uuid.uuid4().hex)
|
||||||
new_plan_id_str = 'test-plan-{}'.format(unique_id)
|
new_plan_id_str = 'test-plan-{}'.format(unique_id)
|
||||||
stripe_plan = stripe_utils.get_or_create_stripe_plan(2000, "test plan {}".format(unique_id),
|
stripe_plan = self.stripe_utils.get_or_create_stripe_plan(2000, "test plan {}".format(unique_id),
|
||||||
stripe_plan_id=new_plan_id_str)
|
stripe_plan_id=new_plan_id_str)
|
||||||
self.assertIsInstance(stripe_plan.get('response_object'), StripePlan)
|
self.assertIsInstance(stripe_plan.get('response_object'), StripePlan)
|
||||||
self.assertEqual(stripe_plan.get('response_object').stripe_plan_id, new_plan_id_str)
|
self.assertEqual(stripe_plan.get('response_object').stripe_plan_id, new_plan_id_str)
|
||||||
|
|
||||||
# Test creating the same plan again and expect the PLAN_EXISTS_ERROR_MSG
|
# Test creating the same plan again and expect the PLAN_EXISTS_ERROR_MSG
|
||||||
# We first delete the local Stripe Plan, so that the code tries to create a new plan in Stripe
|
# We first delete the local Stripe Plan, so that the code tries to create a new plan in Stripe
|
||||||
StripePlan.objects.filter(stripe_plan_id=new_plan_id_str).all().delete()
|
StripePlan.objects.filter(stripe_plan_id=new_plan_id_str).all().delete()
|
||||||
stripe_plan_1 = stripe_utils.get_or_create_stripe_plan(2000, "test plan {}".format(unique_id),
|
stripe_plan_1 = self.stripe_utils.get_or_create_stripe_plan(2000, "test plan {}".format(unique_id),
|
||||||
stripe_plan_id=new_plan_id_str)
|
stripe_plan_id=new_plan_id_str)
|
||||||
mock_logger.debug.assert_called_with(stripe_utils.PLAN_EXISTS_ERROR_MSG.format(new_plan_id_str))
|
mock_logger.debug.assert_called_with(self.stripe_utils.PLAN_EXISTS_ERROR_MSG.format(new_plan_id_str))
|
||||||
self.assertIsInstance(stripe_plan_1.get('response_object'), StripePlan)
|
self.assertIsInstance(stripe_plan_1.get('response_object'), StripePlan)
|
||||||
self.assertEqual(stripe_plan_1.get('response_object').stripe_plan_id, new_plan_id_str)
|
self.assertEqual(stripe_plan_1.get('response_object').stripe_plan_id, new_plan_id_str)
|
||||||
|
|
||||||
# Delete the test stripe plan that we just created
|
# Delete the test stripe plan that we just created
|
||||||
delete_result = stripe_utils.delete_stripe_plan(new_plan_id_str)
|
delete_result = self.stripe_utils.delete_stripe_plan(new_plan_id_str)
|
||||||
self.assertIsInstance(delete_result, dict)
|
self.assertIsInstance(delete_result, dict)
|
||||||
self.assertEqual(delete_result.get('response_object'), True)
|
self.assertEqual(delete_result.get('response_object'), True)
|
||||||
|
|
||||||
@patch('utils.stripe_utils.logger')
|
@patch('utils.stripe_utils.logger')
|
||||||
def test_delete_unexisting_plan_should_fail(self, mock_logger):
|
def test_delete_unexisting_plan_should_fail(self, mock_logger):
|
||||||
plan_id = 'crazy-plan-id-that-does-not-exist'
|
plan_id = 'crazy-plan-id-that-does-not-exist'
|
||||||
stripe_utils = StripeUtils()
|
result = self.stripe_utils.delete_stripe_plan(plan_id)
|
||||||
result = stripe_utils.delete_stripe_plan(plan_id)
|
|
||||||
self.assertIsInstance(result, dict)
|
self.assertIsInstance(result, dict)
|
||||||
self.assertEqual(result.get('response_object'), False)
|
self.assertEqual(result.get('response_object'), False)
|
||||||
mock_logger.debug.assert_called_with(stripe_utils.PLAN_DOES_NOT_EXIST_ERROR_MSG.format(plan_id))
|
mock_logger.debug.assert_called_with(self.stripe_utils.PLAN_DOES_NOT_EXIST_ERROR_MSG.format(plan_id))
|
||||||
|
|
Loading…
Reference in a new issue