diff options
| author | Jason Myers <jason@jasonamyers.com> | 2013-11-03 07:19:25 -0600 |
|---|---|---|
| committer | Jason Myers <jason@jasonamyers.com> | 2013-11-03 07:19:25 -0600 |
| commit | 4f151da1e5e9bf527548a5737d9cd314e3abc68e (patch) | |
| tree | 6ba849758c7c34cdf593ad6e699ad420b7ce57c1 /tests | |
| parent | 6f070273856720b1192af534f37622a9c42525b9 (diff) | |
| parent | f40f90d63b4be295269b5f0de5f919be22daba5c (diff) | |
Merging in master
Signed-off-by: Jason Myers <jason@jasonamyers.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/admin_widgets/tests.py | 19 | ||||
| -rw-r--r-- | tests/model_forms/tests.py | 35 |
2 files changed, 52 insertions, 2 deletions
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index 0dec3a2cfa..04fe083eea 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -2,7 +2,12 @@ from __future__ import unicode_literals from datetime import datetime, timedelta -from unittest import TestCase +from unittest import TestCase, skipIf + +try: + import pytz +except ImportError: + pytz = None from django import forms from django.conf import settings @@ -641,6 +646,7 @@ class DateTimePickerSeleniumIETests(DateTimePickerSeleniumFirefoxTests): webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver' +@skipIf(pytz is None, "this test requires pytz") @override_settings(TIME_ZONE='Asia/Singapore') @override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) class DateTimePickerShortcutsSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): @@ -660,9 +666,18 @@ class DateTimePickerShortcutsSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase """ self.admin_login(username='super', password='secret', login_url='/') - now = datetime.now() error_margin = timedelta(seconds=10) + # If we are neighbouring a DST, we add an hour of error margin. + tz = pytz.timezone('America/Chicago') + utc_now = datetime.now(pytz.utc) + tz_yesterday = (utc_now - timedelta(days=1)).astimezone(tz).tzname() + tz_tomorrow = (utc_now + timedelta(days=1)).astimezone(tz).tzname() + if tz_yesterday != tz_tomorrow: + error_margin += timedelta(hours=1) + + now = datetime.now() + self.selenium.get('%s%s' % (self.live_server_url, '/admin_widgets/member/add/')) diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index 5e443011c2..2af5b5a07d 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -828,6 +828,41 @@ class ModelToDictTests(TestCase): # Ensure many-to-many relation appears as a list self.assertIsInstance(d['categories'], list) + def test_reuse_prefetched(self): + # model_to_dict should not hit the database if it can reuse + # the data populated by prefetch_related. + categories = [ + Category(name='TestName1', slug='TestName1', url='url1'), + Category(name='TestName2', slug='TestName2', url='url2'), + Category(name='TestName3', slug='TestName3', url='url3') + ] + for c in categories: + c.save() + writer = Writer(name='Test writer') + writer.save() + + art = Article( + headline='Test article', + slug='test-article', + pub_date=datetime.date(1988, 1, 4), + writer=writer, + article='Hello.' + ) + art.save() + for c in categories: + art.categories.add(c) + + art = Article.objects.prefetch_related('categories').get(pk=art.pk) + + with self.assertNumQueries(0): + d = model_to_dict(art) + + #Ensure all many-to-many categories appear in model_to_dict + for c in categories: + self.assertIn(c.pk, d['categories']) + #Ensure many-to-many relation appears as a list + self.assertIsInstance(d['categories'], list) + class OldFormForXTests(TestCase): def test_base_form(self): |
