|
9 | 9 |
|
10 | 10 | import requests |
11 | 11 | from django.conf import settings |
| 12 | +from django.contrib.admin import site as admin_site |
12 | 13 | from django.contrib.auth import get_user_model |
13 | 14 | from django.contrib.messages.storage.fallback import FallbackStorage |
14 | 15 | from django.contrib.sessions.middleware import SessionMiddleware |
|
40 | 41 | from plans.taxation.eu import EUTaxationPolicy |
41 | 42 | from plans.validators import ModelCountValidator |
42 | 43 | from plans.views import CreateOrderView |
| 44 | +from plans.admin import OrderAdmin, make_order_invoice |
43 | 45 |
|
44 | 46 | User = get_user_model() |
45 | 47 | BillingInfo = AbstractBillingInfo.get_concrete_model() |
@@ -1775,6 +1777,42 @@ def test_has_automatic_renewal(self): |
1775 | 1777 | ) |
1776 | 1778 |
|
1777 | 1779 |
|
| 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 | + |
1778 | 1816 | class TasksTestCase(TestCase): |
1779 | 1817 | def setUp(self): |
1780 | 1818 | self. user = baker. make( "User", email="[email protected]", username="foo bar") |
|
0 commit comments