예제 #1
0
    def test_pay(self):
        price = decimal.Decimal('150.00')
        vat = price * decimal.Decimal("0.25")
        product = products_and_price(price=price).skus.all()[2]
        order_paid_receiver_mock = mock.MagicMock()
        signals.order_paid.connect(order_paid_receiver_mock)
        order_data = {
            'email':
            '*****@*****.**',
            'items': [{
                'quantity': 1,
                'price': str(price),
                'vat': vat,
                'description': 'purchase',
                'product': product.id,
            }]
        }
        response = self.client.post(
            reverse('order-detail'),
            order_data,
        )
        self.assertEqual(201, response.status_code, response.content)
        order_data = response.data
        response = self.client.post(
            reverse('order-pay', args=['emailinvoice.emailinvoice']), {
                'email': '',
                'order': order_data,
            })
        self.assertEqual(400, response.status_code)
        self.assertEqual(0, order_paid_receiver_mock.call_count)

        order_data['items'][0]['quantity'] = 2
        response = self.client.post(
            reverse('order-pay', args=['emailinvoice.emailinvoice']), {
                'email': '*****@*****.**',
                'order': order_data,
            })
        self.assertEqual(201, response.status_code, response.content)
        self.assertEqual(1, order_paid_receiver_mock.call_count)
        total = (price * 2 + vat * 2).quantize(decimal.Decimal('0.01'))
        self.assertEqual(str(total), response.data['owed'])
        self.assertEqual(str(total), response.data['paid'])
        invoice = EmailInvoice.objects.get()
        self.assertEqual(
            '*****@*****.**',
            invoice.email,
        )
        self.assertEqual(
            total,
            invoice.owed,
        )
        order_paid_receiver_mock.assert_called_with(
            sender=views.InvoiceCreateView,
            invoice=invoice,
            signal=signals.order_paid,
        )
        self.assertEqual(models.Order.STATUS.paid, invoice.order.status)
예제 #2
0
 def setUp(self):
     self.product = products_and_price().skus.all()[0]
     self.order_data = {
         'email': '*****@*****.**',
         'items': [{
             'quantity': 1,
             'price': str(self.product.price.amount),
             'vat': self.product.vat_amount,
             'description': 'purchase',
             'product': self.product.id,
         }]
     }
예제 #3
0
 def setUp(self):
     self.product = products_and_price().skus.all()[0]
     self.order_data = {
         'email':
         '*****@*****.**',
         'items': [{
             'quantity': 1,
             'price': str(self.product.price.amount),
             'vat': self.product.vat_amount,
             'description': 'purchase',
             'product': self.product.id,
         }]
     }
예제 #4
0
    def test_pay(self):
        price = decimal.Decimal('150.00')
        vat = price * decimal.Decimal("0.25")
        product = products_and_price(price=price).skus.all()[2]
        order_paid_receiver_mock = mock.MagicMock()
        signals.order_paid.connect(order_paid_receiver_mock)
        order_data = {
            'email': '*****@*****.**',
            'items': [{
                'quantity': 1,
                'price': str(price),
                'vat': vat,
                'description': 'purchase',
                'product': product.id,
            }]
        }
        response = self.client.post(
            reverse('order-detail'),
            order_data,
        )
        self.assertEqual(201, response.status_code, response.content)
        order_data = response.data
        response = self.client.post(
            reverse(
                'order-pay',
                args=['emailinvoice.emailinvoice']
            ),
            {
                'email': '',
                'order': order_data,
            }
        )
        self.assertEqual(400, response.status_code)
        self.assertEqual(0, order_paid_receiver_mock.call_count)

        order_data['items'][0]['quantity'] = 2
        response = self.client.post(
            reverse(
                'order-pay',
                args=['emailinvoice.emailinvoice']
            ),
            {
                'email': '*****@*****.**',
                'order': order_data,
            }
        )
        self.assertEqual(
            201,
            response.status_code,
            response.content
        )
        self.assertEqual(1, order_paid_receiver_mock.call_count)
        total = (price * 2 + vat * 2).quantize(decimal.Decimal('0.01'))
        self.assertEqual(str(total), response.data['owed'])
        self.assertEqual(str(total), response.data['paid'])
        invoice = EmailInvoice.objects.get()
        self.assertEqual(
            '*****@*****.**',
            invoice.email,
        )
        self.assertEqual(
            total,
            invoice.owed,
        )
        order_paid_receiver_mock.assert_called_with(
            sender=views.InvoiceCreateView,
            invoice=invoice,
            signal=signals.order_paid,
        )
        self.assertEqual(
            models.Order.STATUS.paid,
            invoice.order.status
        )