From 8ef78b81654ebcf19a1fc241e2b1ede35100096b Mon Sep 17 00:00:00 2001 From: Will Hardy Date: Thu, 26 May 2016 14:48:36 +0200 Subject: Fixed #26656 -- Added duration (timedelta) support to DjangoJSONEncoder. --- tests/utils_tests/test_duration.py | 40 +++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'tests/utils_tests') diff --git a/tests/utils_tests/test_duration.py b/tests/utils_tests/test_duration.py index 559d2ef16f..d0564f396f 100644 --- a/tests/utils_tests/test_duration.py +++ b/tests/utils_tests/test_duration.py @@ -2,7 +2,7 @@ import datetime import unittest from django.utils.dateparse import parse_duration -from django.utils.duration import duration_string +from django.utils.duration import duration_iso_string, duration_string class TestDurationString(unittest.TestCase): @@ -41,3 +41,41 @@ class TestParseDurationRoundtrip(unittest.TestCase): def test_negative(self): duration = datetime.timedelta(days=-1, hours=1, minutes=3, seconds=5) self.assertEqual(parse_duration(duration_string(duration)), duration) + + +class TestISODurationString(unittest.TestCase): + + def test_simple(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5) + self.assertEqual(duration_iso_string(duration), 'P0DT01H03M05S') + + def test_days(self): + duration = datetime.timedelta(days=1, hours=1, minutes=3, seconds=5) + self.assertEqual(duration_iso_string(duration), 'P1DT01H03M05S') + + def test_microseconds(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5, microseconds=12345) + self.assertEqual(duration_iso_string(duration), 'P0DT01H03M05.012345S') + + def test_negative(self): + duration = -1 * datetime.timedelta(days=1, hours=1, minutes=3, seconds=5) + self.assertEqual(duration_iso_string(duration), '-P1DT01H03M05S') + + +class TestParseISODurationRoundtrip(unittest.TestCase): + + def test_simple(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5) + self.assertEqual(parse_duration(duration_iso_string(duration)), duration) + + def test_days(self): + duration = datetime.timedelta(days=1, hours=1, minutes=3, seconds=5) + self.assertEqual(parse_duration(duration_iso_string(duration)), duration) + + def test_microseconds(self): + duration = datetime.timedelta(hours=1, minutes=3, seconds=5, microseconds=12345) + self.assertEqual(parse_duration(duration_iso_string(duration)), duration) + + def test_negative(self): + duration = datetime.timedelta(days=-1, hours=1, minutes=3, seconds=5) + self.assertEqual(parse_duration(duration_iso_string(duration)).total_seconds(), duration.total_seconds()) -- cgit v1.3