Skip to content

Instantly share code, notes, and snippets.

@loic
Created July 1, 2013 13:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loic/5900574 to your computer and use it in GitHub Desktop.
Save loic/5900574 to your computer and use it in GitHub Desktop.
diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py
index 4823883..5b2cb9a 100644
--- a/tests/admin_widgets/tests.py
+++ b/tests/admin_widgets/tests.py
@@ -1,7 +1,8 @@
# encoding: utf-8
from __future__ import absolute_import, unicode_literals
-from datetime import datetime
+from datetime import datetime, timedelta, tzinfo
+import os
from django import forms
from django.conf import settings
@@ -13,10 +14,13 @@ from django.core.files.uploadedfile import SimpleUploadedFile
from django.db.models import CharField, DateField
from django.test import TestCase as DjangoTestCase
from django.test.utils import override_settings
-from django.utils import six
+from django.utils import six, timezone
from django.utils import translation
from django.utils.html import conditional_escape
+from django.utils.module_loading import import_by_path
+from django.utils.tzinfo import FixedOffset
from django.utils.unittest import TestCase
+from django.utils.unittest.case import SkipTest
from . import models
from .widgetadmin import site as widget_admin_site
@@ -527,6 +531,64 @@ class DateTimePickerSeleniumIETests(DateTimePickerSeleniumFirefoxTests):
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
+class DateTimePickerShortcutsSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
+ available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps
+ fixtures = ['admin-widgets-users.xml']
+ urls = "admin_widgets.urls"
+ webdriver_class = 'selenium.webdriver.firefox.webdriver.WebDriver'
+
+ @classmethod
+ def setUpClass(cls):
+ super(AdminSeleniumWebDriverTestCase, cls).setUpClass()
+
+ if not os.environ.get('DJANGO_SELENIUM_TESTS', False):
+ raise SkipTest('Selenium tests not requested')
+ try:
+ with timezone.override(FixedOffset(420)):
+ cls.selenium = import_by_path(cls.webdriver_class)()
+ except Exception as e:
+ raise SkipTest('Selenium webdriver "%s" not installed or not '
+ 'operational: %s' % (cls.webdriver_class, str(e)))
+
+ def test_date_time_picker_shortcuts(self):
+ """
+ Ensure that date/time/datetime picker shortcuts work in the current time zone.
+ Refs #20663.
+ """
+ self.admin_login(username='super', password='secret', login_url='/')
+
+ now = datetime.now()
+ error_margin = timedelta(seconds=10)
+
+ self.selenium.get('%s%s' % (self.live_server_url,
+ '/admin_widgets/member/add/'))
+
+ self.selenium.find_element_by_id('id_name').send_keys('test')
+
+ shortcuts = self.selenium.find_elements_by_css_selector(
+ '.field-birthdate .datetimeshortcuts')
+
+ for shortcut in shortcuts:
+ shortcut.find_element_by_tag_name('a').click()
+
+ import time
+ time.sleep(60)
+
+ self.selenium.find_element_by_tag_name('form').submit()
+ self.wait_page_loaded()
+
+ member = models.Member.objects.get(name='test')
+ self.assertGreater(member.birthdate, now - error_margin)
+ self.assertLess(member.birthdate, now + error_margin)
+
+class DateTimePickerShortcutsSeleniumChromeTests(DateTimePickerShortcutsSeleniumFirefoxTests):
+ webdriver_class = 'selenium.webdriver.chrome.webdriver.WebDriver'
+
+class DateTimePickerShortcutsSeleniumIETests(DateTimePickerShortcutsSeleniumFirefoxTests):
+ webdriver_class = 'selenium.webdriver.ie.webdriver.WebDriver'
+
+
+@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCase):
available_apps = ['admin_widgets'] + AdminSeleniumWebDriverTestCase.available_apps
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment