2
from django.test import TestCase
3
from datetime import datetime
4
from datetime import timedelta
5
from regressiontests.views.models import Article, Author, DateArticle
7
class ObjectDetailTest(TestCase):
8
fixtures = ['testdata.json']
10
# Correct the date for the current article
11
current_article = Article.objects.get(title="Current Article")
12
current_article.date_created = datetime.now()
13
current_article.save()
15
def test_finds_past(self):
16
"date_based.object_detail can view a page in the past"
17
response = self.client.get('/views/date_based/object_detail/2001/01/01/old_article/')
18
self.assertEqual(response.status_code, 200)
19
self.assertEqual(response.context['object'].title, "Old Article")
21
def test_object_detail_finds_today(self):
22
"date_based.object_detail can view a page from today"
23
today_url = datetime.now().strftime('%Y/%m/%d')
24
response = self.client.get('/views/date_based/object_detail/%s/current_article/' % today_url)
25
self.assertEqual(response.status_code, 200)
26
self.assertEqual(response.context['object'].title, "Current Article")
28
def test_object_detail_ignores_future(self):
29
"date_based.object_detail can view a page from the future, but only if allowed."
30
response = self.client.get('/views/date_based/object_detail/3000/01/01/future_article/')
31
self.assertEqual(response.status_code, 404)
33
def test_object_detail_allowed_future_if_enabled(self):
34
"date_based.object_detail can view a page from the future if explicitly allowed."
35
response = self.client.get('/views/date_based/object_detail/3000/01/01/future_article/allow_future/')
36
self.assertEqual(response.status_code, 200)
37
self.assertEqual(response.context['object'].title, "Future Article")
39
class MonthArchiveTest(TestCase):
40
def test_archive_month_includes_only_month(self):
41
"Regression for #3031: Archives around Feburary include only one month"
42
author = Author(name="John Smith")
45
# 2004 was a leap year, so it should be weird enough to not cheat
46
first_second_of_feb = datetime(2004, 2, 1, 0, 0, 1)
47
first_second_of_mar = datetime(2004, 3, 1, 0, 0, 1)
48
two_seconds = timedelta(0, 2, 0)
49
article = Article(title="example", author=author)
51
article.date_created = first_second_of_feb
53
response = self.client.get('/views/date_based/archive_month/2004/02/')
54
self.assertEqual(response.status_code, 200)
56
article.date_created = first_second_of_feb-two_seconds
58
response = self.client.get('/views/date_based/archive_month/2004/02/')
59
self.assertEqual(response.status_code, 404)
61
article.date_created = first_second_of_mar-two_seconds
63
response = self.client.get('/views/date_based/archive_month/2004/02/')
64
self.assertEqual(response.status_code, 200)
66
article.date_created = first_second_of_mar
68
response = self.client.get('/views/date_based/archive_month/2004/02/')
69
self.assertEqual(response.status_code, 404)
71
article2 = DateArticle(title="example", author=author)
73
article2.date_created = first_second_of_feb.date()
75
response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
76
self.assertEqual(response.status_code, 200)
78
article2.date_created = (first_second_of_feb-two_seconds).date()
80
response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
81
self.assertEqual(response.status_code, 404)
83
article2.date_created = (first_second_of_mar-two_seconds).date()
85
response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
86
self.assertEqual(response.status_code, 200)
88
article2.date_created = first_second_of_mar.date()
90
response = self.client.get('/views/date_based/datefield/archive_month/2004/02/')
91
self.assertEqual(response.status_code, 404)