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)
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, }] }
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 )