=== tests/regressiontests/generic_views/__init__.py
==================================================================
=== tests/regressiontests/generic_views/tests.py
==================================================================
--- tests/regressiontests/generic_views/tests.py	(/mirror/django/trunk)	(revision 638)
+++ tests/regressiontests/generic_views/tests.py	(/local/django/trunk)	(revision 638)
@@ -0,0 +1,66 @@
+# coding: utf-8
+from django.test import TestCase
+from datetime import datetime
+from datetime import timedelta
+from models import Article
+
+_today = datetime.now()
+_long_ago = datetime(2001, 1, 1)
+_far_future = datetime(3000, 01, 01)
+
+class DateBasedGenericViewTest(TestCase):
+    def setUp(self):
+        current_article = Article(slug="current_article", date_created=_today)
+        current_article.save()
+        past_article = Article(slug="old_article", date_created=_long_ago)
+        past_article.save()
+        future_article = Article(slug="future_article", date_created=_far_future)
+        future_article.save()
+        
+    def test_object_detail_finds_past(self):
+        response = self.client.get('/generic_views/date_based/object_detail/2001/01/01/old_article/')
+        self.assertEqual(response.context['object'].slug, "old_article")
+
+    def test_object_detail_finds_today(self):
+        today_url = _today.strftime('%Y/%m/%d')
+        response = self.client.get('/generic_views/date_based/object_detail/%s/current_article/' % today_url)
+        self.assertEqual(response.context['object'].slug, "current_article")
+
+    def test_object_detail_ignores_future_unless_allowed(self):
+        # careful, this is a year 3000 bug waiting to happen ;-)
+        disallowed_response = self.client.get('/generic_views/date_based/object_detail/3000/01/01/future_article/')
+        self.assertEqual(disallowed_response.status_code, 404)
+        # the same view, with allow_future=True
+        allowed_response = self.client.get('/generic_views/date_based/object_detail/3000/01/01/future_article/allow_future/')
+        self.assertEqual(allowed_response.context['object'].slug, "future_article")
+
+class MonthArchive(TestCase):
+    def test_archive_month_includes_only_month(self):
+        # 2004 was a leap year, so it should be weird enough to not cheat
+        first_second_of_feb = datetime(2004, 2, 1, 0, 0, 0)
+        first_second_of_mar = datetime(2004, 3, 1, 0, 0, 0)
+        one_microsecond = timedelta(0, 0, 1)
+        article = Article(slug="example")
+
+        article.date_created = first_second_of_feb
+        article.save()
+        response = self.client.get('/generic_views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 200)
+         
+        article.date_created = first_second_of_feb-one_microsecond
+        article.save()
+        response = self.client.get('/generic_views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 404)
+
+        article.date_created = first_second_of_mar-one_microsecond
+        article.save()
+        response = self.client.get('/generic_views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 200)
+
+        article.date_created = first_second_of_mar
+        article.save()
+        response = self.client.get('/generic_views/date_based/archive_month/2004/02/')
+        self.assertEqual(response.status_code, 404)
+        
+
+# vim: expandtab tabstop=8 shiftwidth=4 autoindent
=== tests/regressiontests/generic_views/models.py
==================================================================
--- tests/regressiontests/generic_views/models.py	(/mirror/django/trunk)	(revision 638)
+++ tests/regressiontests/generic_views/models.py	(/local/django/trunk)	(revision 638)
@@ -0,0 +1,10 @@
+# coding: utf-8
+from django.db import models
+
+class Article(models.Model):
+    slug = models.CharField(max_length=20)
+    date_created = models.DateTimeField()
+    def __repr__(self):
+        return "<Article: %s>" % self.slug
+
+# vim: expandtab tabstop=8 shiftwidth=4 autoindent
=== tests/regressiontests/generic_views/urls.py
==================================================================
--- tests/regressiontests/generic_views/urls.py	(/mirror/django/trunk)	(revision 638)
+++ tests/regressiontests/generic_views/urls.py	(/local/django/trunk)	(revision 638)
@@ -0,0 +1,19 @@
+from django.conf.urls.defaults import *
+from django.views.generic import date_based
+from models import Article
+
+info_dict = {
+    'queryset': Article.objects.all(),
+    'date_field': 'date_created',
+    'month_format': '%m',
+}
+
+urlpatterns = patterns('django.views.generic.date_based',
+    url(r'^date_based/object_detail/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<slug>[-\w]+)/$', 'object_detail', dict(slug_field='slug', **info_dict), name="object_detail"),
+    url(r'^date_based/object_detail/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<slug>[-\w]+)/allow_future/$', 'object_detail', dict(allow_future=True, slug_field='slug', **info_dict), name="object_detail_allow_future"),
+    url(r'^date_based/archive_month/(?P<year>\d{4})/(?P<month>\d{1,2})/$', 'archive_month', info_dict, name="archive_month"),
+)
+
+
+# vim: autoindent tabstop=4 shiftwidth=4 expandtab
+

Property changes on: tests/regressiontests/generic_views
___________________________________________________________________
Name: svn:ignore
 +*.pyc

=== tests/urls.py
==================================================================
--- tests/urls.py	(/mirror/django/trunk)	(revision 638)
+++ tests/urls.py	(/local/django/trunk)	(revision 638)
@@ -4,6 +4,7 @@
     # test_client modeltest urls
     (r'^test_client/', include('modeltests.test_client.urls')),
     (r'^test_client_regress/', include('regressiontests.test_client_regress.urls')),
+    (r'^generic_views/', include('regressiontests.generic_views.urls')),
 
     # Always provide the auth system login and logout views
     (r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
=== tests/templates/generic_views/article_detail.html
==================================================================
--- tests/templates/generic_views/article_detail.html	(/mirror/django/trunk)	(revision 638)
+++ tests/templates/generic_views/article_detail.html	(/local/django/trunk)	(revision 638)
@@ -0,0 +1,2 @@
+This template intentionally left blank.
+
=== tests/templates/generic_views/article_archive_month.html
==================================================================
--- tests/templates/generic_views/article_archive_month.html	(/mirror/django/trunk)	(revision 638)
+++ tests/templates/generic_views/article_archive_month.html	(/local/django/trunk)	(revision 638)
@@ -0,0 +1,2 @@
+This template intentionally left blank.
+

Property changes on: 
___________________________________________________________________
Name: svk:merge
 -bcc190cf-cafb-0310-a4f2-bffc1f526a37:/django/trunk:1054
 +bcc190cf-cafb-0310-a4f2-bffc1f526a37:/django/trunk:6350

