1+ from datetime import date , datetime
12from random import choice , randint
3+ from typing import Union , Optional
24from urllib .parse import urlparse
35from uuid import uuid4
46
57from django .contrib .auth import get_user_model
68from django .urls import reverse
79
810from django_ledger .models import EntityModel , PurchaseOrderModel
9- from django_ledger .settings import DJANGO_LEDGER_LOGIN_URL
1011from django_ledger .tests .base import DjangoLedgerBaseTest
1112from django_ledger .urls .purchase_order import urlpatterns as po_urls
1213
@@ -20,11 +21,12 @@ def setUp(self) -> None:
2021 p .name : set (p .pattern .converters .keys ()) for p in po_urls
2122 }
2223
23- def create_purchase_order (self , entity_model : EntityModel ) -> PurchaseOrderModel :
24- po_title = f'Purchase Order General- { randint ( 1000 , 9999 ) } '
25-
26- po_model = PurchaseOrderModel (po_title = po_title )
24+ def create_purchase_order (self ,
25+ entity_model : EntityModel ,
26+ draft_date : Optional [ Union [ date , datetime ]] = None ) -> PurchaseOrderModel :
27+ po_model = PurchaseOrderModel ()
2728 po_model = po_model .configure (entity_slug = entity_model ,
29+ draft_date = draft_date ,
2830 user_model = self .user_model ,
2931 commit = True )
3032 return po_model
@@ -40,7 +42,10 @@ def test_protected_views(self):
4042 self .logout_client ()
4143
4244 entity_model : EntityModel = choice (self .ENTITY_MODEL_QUERYSET )
43- po_model = self .create_purchase_order (entity_model )
45+ po_model = self .create_purchase_order (
46+ entity_model = entity_model ,
47+ draft_date = self .get_random_draft_date ()
48+ )
4449
4550 self .assertEqual (len (self .URL_PATTERNS ), 15 )
4651 for path , kwargs in self .URL_PATTERNS .items ():
@@ -51,21 +56,15 @@ def test_protected_views(self):
5156 if 'year' in kwargs :
5257 url_kwargs ['year' ] = po_model .date_draft .year
5358 if 'month' in kwargs :
54- url_kwargs ['month' ] = po_model .date_draft .month
59+ url_kwargs ['month' ] = po_model .date_draft .month
5560 if 'ce_pk' in kwargs :
5661 url_kwargs ['ce_pk' ] = uuid4 ()
5762 if 'po_pk' in kwargs :
5863 url_kwargs ['po_pk' ] = uuid4 ()
5964
6065 url = reverse (f'django_ledger:{ path } ' , kwargs = url_kwargs )
6166 redirect_response = self .CLIENT .get (url , follow = False )
62- redirect_url = urlparse (redirect_response .url )
63- redirect_path = redirect_url .path
64- login_path = DJANGO_LEDGER_LOGIN_URL
65-
6667 self .assertEqual (redirect_response .status_code , 302 , msg = f'{ path } view is not protected.' )
67- self .assertEqual (redirect_path , login_path , msg = f'{ path } view is not redirecting to correct auth URL' )
68-
6968
7069 def test_purchase_order_list (self ):
7170 """
@@ -75,14 +74,14 @@ def test_purchase_order_list(self):
7574 entity_model : EntityModel = choice (self .ENTITY_MODEL_QUERYSET )
7675 po_list_url = reverse ('django_ledger:po-list' , kwargs = {'entity_slug' : entity_model .slug })
7776
78- with self .assertNumQueries (6 ): # previously 5
77+ with self .assertNumQueries (6 ): # previously 5
7978 response = self .CLIENT .get (po_list_url )
8079 self .assertEqual (response .status_code , 200 , msg = "Fail to GET Purchase Order list page" )
8180
8281 po_model_qs = response .context ['po_list' ]
8382
8483 for po_model in po_model_qs :
85- po_detail_url = reverse ('django_ledger:po-detail' ,
84+ po_detail_url = reverse ('django_ledger:po-detail' ,
8685 kwargs = {
8786 'entity_slug' : entity_model .slug ,
8887 'po_pk' : po_model .uuid
@@ -96,7 +95,6 @@ def test_purchase_order_list(self):
9695 # contains po-detail and po-delete urls
9796 self .assertContains (response , po_detail_url )
9897 self .assertContains (response , po_delete_url )
99-
10098
10199 def test_purchase_order_create (self ):
102100 """
@@ -126,7 +124,6 @@ def test_purchase_order_create(self):
126124 response = self .CLIENT .get (redirect_response .url )
127125 self .assertContains (response , po_title )
128126
129-
130127 def test_purchase_order_detail (self ):
131128 """
132129 Check elements on PO detail page.
@@ -139,17 +136,17 @@ def test_purchase_order_detail(self):
139136 # check links, do it on every test PO
140137 for po_model in po_model_qs :
141138 po_detail_url = reverse ('django_ledger:po-detail' , kwargs = {
142- 'entity_slug' : entity_model .slug ,
143- 'po_pk' : po_model .uuid
144- })
139+ 'entity_slug' : entity_model .slug ,
140+ 'po_pk' : po_model .uuid
141+ })
145142 po_update_url = reverse ('django_ledger:po-update' , kwargs = {
146- 'entity_slug' : entity_model .slug ,
147- 'po_pk' : po_model .uuid
148- })
143+ 'entity_slug' : entity_model .slug ,
144+ 'po_pk' : po_model .uuid
145+ })
149146 po_delete_url = reverse ('django_ledger:po-delete' , kwargs = {
150- 'entity_slug' : entity_model .slug ,
151- 'po_pk' : po_model .uuid
152- })
147+ 'entity_slug' : entity_model .slug ,
148+ 'po_pk' : po_model .uuid
149+ })
153150 status = po_model .po_status
154151
155152 with self .assertNumQueries (5 ):
@@ -163,15 +160,15 @@ def test_purchase_order_detail(self):
163160
164161 if status == po_model .PO_STATUS_DRAFT :
165162 self .assertContains (response , po_model .get_mark_as_review_html_id ())
166- #self.assertContains(response, po_delete_url)
163+ # self.assertContains(response, po_delete_url)
167164 self .assertContains (response , po_model .get_mark_as_canceled_html_id ())
168165
169166 elif status == po_model .PO_STATUS_REVIEW :
170167 self .assertContains (response , po_model .get_mark_as_draft_html_id ())
171168 self .assertContains (response , po_model .get_mark_as_approved_html_id ())
172- #self.assertContains(response, po_delete_url)
169+ # self.assertContains(response, po_delete_url)
173170 self .assertContains (response , po_model .get_mark_as_canceled_html_id ())
174-
171+
175172 elif status == po_model .PO_STATUS_APPROVED :
176173 self .assertContains (response , po_model .get_mark_as_fulfilled_html_id ())
177174 self .assertContains (response , po_model .get_mark_as_void_html_id ())
@@ -184,4 +181,4 @@ def test_purchase_order_detail(self):
184181 # response = self.CLIENT.get(po_update_url)
185182 # self.assertEqual(response.status_code, 200, msg=f"Error browsing PO {po_model.uuid} update page.")
186183
187- # after successful update, redirect to detail page
184+ # after successful update, redirect to detail page
0 commit comments