Skip to content

Commit 12c955b

Browse files
committed
add test for make_order_invoice failure branch
1 parent 90da13a commit 12c955b

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

plans/tests/tests.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import requests
1111
from django.conf import settings
12+
from django.contrib.admin import site as admin_site
1213
from django.contrib.auth import get_user_model
1314
from django.contrib.messages.storage.fallback import FallbackStorage
1415
from django.contrib.sessions.middleware import SessionMiddleware
@@ -40,6 +41,7 @@
4041
from plans.taxation.eu import EUTaxationPolicy
4142
from plans.validators import ModelCountValidator
4243
from plans.views import CreateOrderView
44+
from plans.admin import OrderAdmin, make_order_invoice
4345

4446
User = get_user_model()
4547
BillingInfo = AbstractBillingInfo.get_concrete_model()
@@ -1775,6 +1777,42 @@ def test_has_automatic_renewal(self):
17751777
)
17761778

17771779

1780+
class AdminActionsTestCase(TestCase):
1781+
fixtures = ["initial_plan", "test_django-plans_auth", "test_django-plans_plans"]
1782+
1783+
def setUp(self):
1784+
self.user = User.objects.get(username="test1")
1785+
self.plan_pricing = PlanPricing.objects.first()
1786+
self.modeladmin = OrderAdmin(Order, admin_site)
1787+
self.request = RequestFactory().get("/")
1788+
1789+
def test_make_order_invoice_not_completed(self):
1790+
"""
1791+
Test that make_order_invoice admin action doesn't create invoice for not completed order
1792+
and sends a message to user.
1793+
"""
1794+
order = Order.objects.create(
1795+
user=self.user,
1796+
pricing=self.plan_pricing.pricing,
1797+
amount=100,
1798+
plan=self.plan_pricing.plan,
1799+
completed=None,
1800+
)
1801+
self.assertEqual(Invoice.objects.filter(order=order, type=Invoice.INVOICE_TYPES.INVOICE).count(), 0)
1802+
1803+
queryset = Order.objects.filter(pk=order.pk)
1804+
1805+
self.modeladmin.message_user = mock.Mock()
1806+
make_order_invoice(self.modeladmin, self.request, queryset)
1807+
1808+
self.assertEqual(Invoice.objects.filter(order=order, type=Invoice.INVOICE_TYPES.INVOICE).count(), 0)
1809+
self.modeladmin.message_user.assert_called_with(
1810+
self.request,
1811+
f"Order {order.id} is has no completed date, cannot create invoice.",
1812+
level="ERROR",
1813+
)
1814+
1815+
17781816
class TasksTestCase(TestCase):
17791817
def setUp(self):
17801818
self.user = baker.make("User", email="[email protected]", username="foo bar")

0 commit comments

Comments
 (0)