From 1b2895b0ca32a62d211a52f356215c952f097dc4 Mon Sep 17 00:00:00 2001 From: scabux Date: Sun, 7 May 2017 10:40:36 +0200 Subject: [PATCH] Fixed bugs and added test for date range rendering (#488) * fixed bug for same dates, added unit check for daterange * fixed local language override in unit test --- src/pretix/helpers/daterange.py | 8 +++- src/tests/helpers/test_daterange.py | 57 +++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/tests/helpers/test_daterange.py diff --git a/src/pretix/helpers/daterange.py b/src/pretix/helpers/daterange.py index 65f86e08c..44228a111 100644 --- a/src/pretix/helpers/daterange.py +++ b/src/pretix/helpers/daterange.py @@ -6,12 +6,16 @@ def daterange(df, dt): lng = get_language() if lng.startswith("de"): - if df.year == dt.year and df.month == dt.month: + if df.year == dt.year and df.month == dt.month and df.day == dt.day: + return "{}".format(_date(df, "j. F Y")) + elif df.year == dt.year and df.month == dt.month: return "{}.–{}".format(_date(df, "j"), _date(dt, "j. F Y")) elif df.year == dt.year: return "{} – {}".format(_date(df, "j. F"), _date(dt, "j. F Y")) elif lng.startswith("en"): - if df.year == dt.year and df.month == dt.month: + if df.year == dt.year and df.month == dt.month and df.day == dt.day: + return "{}".format(_date(df, "N jS, Y")) + elif df.year == dt.year and df.month == dt.month: return "{} – {}".format(_date(df, "N jS"), _date(dt, "jS, Y")) elif df.year == dt.year: return "{} – {}".format(_date(df, "N jS"), _date(dt, "N jS, Y")) diff --git a/src/tests/helpers/test_daterange.py b/src/tests/helpers/test_daterange.py new file mode 100644 index 000000000..420175f71 --- /dev/null +++ b/src/tests/helpers/test_daterange.py @@ -0,0 +1,57 @@ +from datetime import date +from django.utils import translation +from pretix.helpers.daterange import daterange + + +def test_same_day_german(): + with translation.override('de'): + df = date(2003, 2, 1) + assert daterange(df, df) == "1. Februar 2003" + + +def test_same_day_english(): + with translation.override('en'): + df = date(2003, 2, 1) + assert daterange(df, df) == "Feb. 1st, 2003" + + +def test_same_month_german(): + with translation.override('de'): + df = date(2003, 2, 1) + dt = date(2003, 2, 3) + assert daterange(df, dt) == "1.–3. Februar 2003" + + +def test_same_month_english(): + with translation.override('en'): + df = date(2003, 2, 1) + dt = date(2003, 2, 3) + assert daterange(df, dt) == "Feb. 1st – 3rd, 2003" + + +def test_same_year_german(): + with translation.override('de'): + df = date(2003, 2, 1) + dt = date(2003, 4, 3) + assert daterange(df, dt) == "1. Februar – 3. April 2003" + + +def test_same_year_english(): + with translation.override('en'): + df = date(2003, 2, 1) + dt = date(2003, 4, 3) + assert daterange(df, dt) == "Feb. 1st – April 3rd, 2003" + + +def test_different_dates_german(): + with translation.override('de'): + df = date(2003, 2, 1) + dt = date(2005, 4, 3) + assert daterange(df, dt) == "1. Februar 2003 – 3. April 2005" + + +def test_different_dates_english(): + with translation.override('en'): + df = date(2003, 2, 1) + dt = date(2005, 4, 3) + assert daterange(df, dt) == "Feb. 1, 2003 – April 3, 2005"