def test_invalid_serializer(self): serializer = CreateSubscriptionSerializer(data={"plan": self.plan.id}) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.validated_data, {}) self.assertEqual( serializer.errors, {"stripe_token": ["This field is required."]} )
def test_invalid_serializer(self): serializer = CreateSubscriptionSerializer(data={ 'plan': self.plan.id, }) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.validated_data, {}) self.assertEqual(serializer.errors, { 'stripe_token': ['This field is required.'], })
def test_valid_serializer(self, stripe_token_mock): token = stripe_token_mock(card={}) serializer = CreateSubscriptionSerializer( data={"plan": self.plan.id, "stripe_token": token.id} ) self.assertTrue(serializer.is_valid()) self.assertEqual(serializer.validated_data["plan"], str(self.plan.id)) self.assertIn("stripe_token", serializer.validated_data) self.assertEqual(serializer.errors, {})
def test_valid_serializer(self, stripe_token_mock): token = stripe_token_mock(card={}) serializer = CreateSubscriptionSerializer( data={"plan": settings.DJSTRIPE_PLANS["test0"]["plan"], "stripe_token": token.id} ) self.assertTrue(serializer.is_valid()) self.assertEqual(serializer.validated_data["plan"], "test0") self.assertIn("stripe_token", serializer.validated_data) self.assertEqual(serializer.errors, {})
def test_valid_serializer(self, stripe_token_mock): token = stripe_token_mock(card={}) serializer = CreateSubscriptionSerializer(data={ 'plan': self.plan.id, 'stripe_token': token.id, }) self.assertTrue(serializer.is_valid()) self.assertEqual(serializer.validated_data['plan'], str(self.plan.id)) self.assertIn('stripe_token', serializer.validated_data) self.assertEqual(serializer.errors, {})
def test_valid_serializer_non_required_fields(self, stripe_token_mock): """Test the CreateSubscriptionSerializer is_valid method.""" token = stripe_token_mock(card={}) serializer = CreateSubscriptionSerializer( data={ "plan": self.plan.id, "stripe_token": token.id, "charge_immediately": True, "tax_percent": 13.00, }) self.assertTrue(serializer.is_valid())
def test_invalid_serializer(self): serializer = CreateSubscriptionSerializer( data={ 'plan': settings.DJSTRIPE_PLANS['test0']['plan'], } ) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.validated_data, {}) self.assertEqual(serializer.errors, { 'stripe_token': ['This field is required.'], })
def test_valid_serializer(self, stripe_token_mock): token = stripe_token_mock(card={}) serializer = CreateSubscriptionSerializer( data={ 'plan': settings.DJSTRIPE_PLANS['test0']['plan'], 'stripe_token': token.id, } ) self.assertTrue(serializer.is_valid()) self.assertEqual(serializer.validated_data['plan'], 'test0') self.assertIn('stripe_token', serializer.validated_data) self.assertEqual(serializer.errors, {})
def test_valid_serializer_non_required_fields(self, stripe_token_mock): """Test the CreateSubscriptionSerializer is_valid method.""" token = stripe_token_mock(card={}) serializer = CreateSubscriptionSerializer( data={ "plan": self.plan.id, "stripe_token": token.id, "charge_immediately": True, "tax_percent": 13.00, } ) self.assertTrue(serializer.is_valid())
def post(self, request, format=None): """ Create a new current subscription for the user. Returns with status code 201. """ serializer = CreateSubscriptionSerializer(data=request.data) if serializer.is_valid(): try: customer, created = Customer.get_or_create( subscriber=subscriber_request_callback(self.request)) customer.update_card(serializer.data["stripe_token"]) customer.subscribe(serializer.data["plan"]) return Response(serializer.data, status=status.HTTP_201_CREATED) except: # TODO # Better error messages return Response("Something went wrong processing the payment.", status=status.HTTP_400_BAD_REQUEST) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def test_invalid_serializer(self): serializer = CreateSubscriptionSerializer(data={"plan": self.plan.id}) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.validated_data, {}) self.assertEqual(serializer.errors, {"stripe_token": ["This field is required."]})