@@ -196,7 +196,7 @@ def test_month_view_allow_empty(self):
196196 self .assertEqual (list (res .context ['book_list' ]), [])
197197 self .assertEqual (res .context ['month' ], datetime .date (2000 , 1 , 1 ))
198198
199- # Since it's allow empty , next/prev are allowed to be empty months (#7164)
199+ # Since allow_empty=True , next/prev are allowed to be empty months (#7164)
200200 self .assertEqual (res .context ['next_month' ], datetime .date (2000 , 2 , 1 ))
201201 self .assertEqual (res .context ['previous_month' ], datetime .date (1999 , 12 , 1 ))
202202
@@ -222,7 +222,7 @@ def test_month_view_allow_future(self):
222222 self .assertEqual (list (res .context ['book_list' ]), [b ])
223223 self .assertEqual (res .context ['month' ], future )
224224
225- # Since it's allow_future but not allow_empty, next/prev are not
225+ # Since allow_future = True but not allow_empty, next/prev are not
226226 # allowed to be empty months (#7164)
227227 self .assertEqual (res .context ['next_month' ], None )
228228 self .assertEqual (res .context ['previous_month' ], datetime .date (2008 , 10 , 1 ))
@@ -298,17 +298,35 @@ def test_week_view(self):
298298 self .assertEqual (res .context ['book_list' ][0 ], Book .objects .get (pubdate = datetime .date (2008 , 10 , 1 )))
299299 self .assertEqual (res .context ['week' ], datetime .date (2008 , 9 , 28 ))
300300
301+ # Since allow_empty=False, next/prev weeks must be valid
302+ self .assertEqual (res .context ['next_week' ], None )
303+ self .assertEqual (res .context ['previous_week' ], datetime .date (2006 , 4 , 30 ))
304+
301305 def test_week_view_allow_empty (self ):
306+ # allow_empty = False, empty week
302307 res = self .client .get ('/dates/books/2008/week/12/' )
303308 self .assertEqual (res .status_code , 404 )
304309
310+ # allow_empty = True, empty month
305311 res = self .client .get ('/dates/books/2008/week/12/allow_empty/' )
306312 self .assertEqual (res .status_code , 200 )
307313 self .assertEqual (list (res .context ['book_list' ]), [])
314+ self .assertEqual (res .context ['week' ], datetime .date (2008 , 3 , 23 ))
315+
316+ # Since allow_empty=True, next/prev are allowed to be empty weeks
317+ self .assertEqual (res .context ['next_week' ], datetime .date (2008 , 3 , 30 ))
318+ self .assertEqual (res .context ['previous_week' ], datetime .date (2008 , 3 , 16 ))
319+
320+ # allow_empty but not allow_future: next_week should be empty
321+ url = datetime .date .today ().strftime ('/dates/books/%Y/week/%U/allow_empty/' ).lower ()
322+ res = self .client .get (url )
323+ self .assertEqual (res .status_code , 200 )
324+ self .assertEqual (res .context ['next_week' ], None )
308325
309326 def test_week_view_allow_future (self ):
310327 # January 7th always falls in week 1, given Python's definition of week numbers
311328 future = datetime .date (datetime .date .today ().year + 1 , 1 , 7 )
329+ future_sunday = future - datetime .timedelta (days = (future .weekday () + 1 ) % 7 )
312330 b = Book .objects .create (name = "The New New Testement" , pages = 600 , pubdate = future )
313331
314332 res = self .client .get ('/dates/books/%s/week/1/' % future .year )
@@ -317,6 +335,19 @@ def test_week_view_allow_future(self):
317335 res = self .client .get ('/dates/books/%s/week/1/allow_future/' % future .year )
318336 self .assertEqual (res .status_code , 200 )
319337 self .assertEqual (list (res .context ['book_list' ]), [b ])
338+ self .assertEqual (res .context ['week' ], future_sunday )
339+
340+ # Since allow_future = True but not allow_empty, next/prev are not
341+ # allowed to be empty weeks
342+ self .assertEqual (res .context ['next_week' ], None )
343+ self .assertEqual (res .context ['previous_week' ], datetime .date (2008 , 9 , 28 ))
344+
345+ # allow_future, but not allow_empty, with a current week. So next
346+ # should be in the future
347+ res = self .client .get ('/dates/books/2008/week/39/allow_future/' )
348+ self .assertEqual (res .status_code , 200 )
349+ self .assertEqual (res .context ['next_week' ], future_sunday )
350+ self .assertEqual (res .context ['previous_week' ], datetime .date (2006 , 4 , 30 ))
320351
321352 def test_week_view_paginated (self ):
322353 week_start = datetime .date (2008 , 9 , 28 )
0 commit comments