Skip to content

Commit

Permalink
Add tests for format_datetime_local
Browse files Browse the repository at this point in the history
  • Loading branch information
dzhuang committed May 2, 2018
1 parent 7ed56ab commit b64decb
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 3 deletions.
3 changes: 1 addition & 2 deletions relate/utils.py
Expand Up @@ -224,12 +224,11 @@ def format_datetime_local(datetime, format='DATETIME_FORMAT'):
"""

from django.utils import formats
from django.utils.dateformat import format as dformat

try:
return formats.date_format(datetime, format)
except AttributeError:
try:
from django.utils.dateformat import format as dformat
return dformat(datetime, format)
except AttributeError:
return formats.date_format(datetime, "DATETIME_FORMAT")
Expand Down
58 changes: 57 additions & 1 deletion tests/test_misc.py
Expand Up @@ -30,13 +30,16 @@
import datetime
from django.test import TestCase, RequestFactory
from django.test.utils import override_settings
from django.utils.formats import date_format, get_format
from django.utils.dateformat import format
from django.utils.translation import ugettext_lazy as _

from course.models import Course
from course.views import EditCourseForm
from course.versioning import CourseCreationForm
from relate.utils import (
is_maintenance_mode, render_email_template, get_outbound_mail_connection)
is_maintenance_mode, render_email_template, get_outbound_mail_connection,
format_datetime_local)

from tests.base_test_mixins import SingleCourseTestMixin
from tests.utils import LocmemBackendTestsMixin, mail, mock
Expand Down Expand Up @@ -522,4 +525,57 @@ def test_label_is_none(self):
get_outbound_mail_connection(None), BaseEmailBackend)


# {{{ test relate.utils.format_datetime_local

def date_format_side_effect(value, format=None, use_l10n=None):
"""mock django.utils.formats.date_format"""
if format == "foo":
raise AttributeError
else:
return date_format(value, format, use_l10n)


def format_side_effectformat(value, format_string):
"""mock django.utils.dateformat.format"""
if format_string == "foo":
raise AttributeError
else:
return format(value, format_string)


class FormatDatetimeLocalTest(unittest.TestCase):
"""test relate.utils.format_datetime_local"""

def test_success(self):
dtime = datetime.datetime(2019, 1, 1)
format_str = "SHORT_DATETIME_FORMAT"
self.assertEqual(
format_datetime_local(dtime, format=format_str),
date_format(dtime, format=format_str))

def test_attribute_error1(self):
dtime = datetime.datetime(2019, 1, 1)
with mock.patch("django.utils.formats.date_format") as mock_date_format:
mock_date_format.side_effect = date_format_side_effect
result = format_datetime_local(
dtime, format="foo")
self.assertEqual(
result, date_format(dtime, format="foo"))

def test_attribute_error2(self):
dtime = datetime.datetime(2019, 1, 1)
with mock.patch(
"django.utils.formats.date_format"
) as mock_date_format, mock.patch(
"django.utils.dateformat.format"
) as mock_format:
mock_date_format.side_effect = date_format_side_effect
mock_format.side_effect = format_side_effectformat
result = format_datetime_local(
dtime, format="foo")
self.assertEqual(
result, date_format(dtime, format=get_format("DATETIME_FORMAT")))

# }}}

# vim: foldmethod=marker

0 comments on commit b64decb

Please sign in to comment.