18 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
18 # with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
19 """unit tests for modules cubicweb.server.querier and cubicweb.server.ssplanner |
19 """unit tests for modules cubicweb.server.querier and cubicweb.server.ssplanner |
20 """ |
20 """ |
21 |
21 |
22 from datetime import date, datetime, timedelta, tzinfo |
22 from datetime import date, datetime, timedelta, tzinfo |
|
23 |
|
24 import pytz |
23 |
25 |
24 from six import PY2, integer_types, binary_type, text_type |
26 from six import PY2, integer_types, binary_type, text_type |
25 from logilab.common.testlib import TestCase, unittest_main |
27 from logilab.common.testlib import TestCase, unittest_main |
26 from rql import BadRQLQuery, RQLSyntaxError |
28 from rql import BadRQLQuery, RQLSyntaxError |
27 |
29 |
853 self.qexecute("INSERT Personne X: X nom 'bidule', X datenaiss NOW, X tzdatenaiss NOW") |
855 self.qexecute("INSERT Personne X: X nom 'bidule', X datenaiss NOW, X tzdatenaiss NOW") |
854 rset = self.qexecute('Any MAX(D) WHERE X is Personne, X datenaiss D') |
856 rset = self.qexecute('Any MAX(D) WHERE X is Personne, X datenaiss D') |
855 self.assertIsInstance(rset[0][0], datetime) |
857 self.assertIsInstance(rset[0][0], datetime) |
856 rset = self.qexecute('Any MAX(D) WHERE X is Personne, X tzdatenaiss D') |
858 rset = self.qexecute('Any MAX(D) WHERE X is Personne, X tzdatenaiss D') |
857 self.assertIsInstance(rset[0][0], datetime) |
859 self.assertIsInstance(rset[0][0], datetime) |
|
860 self.assertEqual(rset[0][0].tzinfo, pytz.utc) |
858 |
861 |
859 def test_today(self): |
862 def test_today(self): |
860 self.qexecute("INSERT Tag X: X name 'bidule', X creation_date TODAY") |
863 self.qexecute("INSERT Tag X: X name 'bidule', X creation_date TODAY") |
861 self.qexecute("INSERT Tag Y: Y name 'toto'") |
864 self.qexecute("INSERT Tag Y: Y name 'toto'") |
862 rset = self.qexecute('Tag X WHERE X creation_date TODAY') |
865 rset = self.qexecute('Tag X WHERE X creation_date TODAY') |
1396 |
1399 |
1397 def test_tz_datetime(self): |
1400 def test_tz_datetime(self): |
1398 self.qexecute("INSERT Personne X: X nom 'bob', X tzdatenaiss %(date)s", |
1401 self.qexecute("INSERT Personne X: X nom 'bob', X tzdatenaiss %(date)s", |
1399 {'date': datetime(1977, 6, 7, 2, 0, tzinfo=FixedOffset(1))}) |
1402 {'date': datetime(1977, 6, 7, 2, 0, tzinfo=FixedOffset(1))}) |
1400 datenaiss = self.qexecute("Any XD WHERE X nom 'bob', X tzdatenaiss XD")[0][0] |
1403 datenaiss = self.qexecute("Any XD WHERE X nom 'bob', X tzdatenaiss XD")[0][0] |
1401 self.assertEqual(datenaiss.tzinfo, None) |
1404 self.assertIsNotNone(datenaiss.tzinfo) |
1402 self.assertEqual(datenaiss.utctimetuple()[:5], (1977, 6, 7, 1, 0)) |
1405 self.assertEqual(datenaiss.utctimetuple()[:5], (1977, 6, 7, 1, 0)) |
1403 |
1406 |
1404 def test_tz_datetime_cache_nonregr(self): |
1407 def test_tz_datetime_cache_nonregr(self): |
1405 datenaiss = datetime(1977, 6, 7, 2, 0, tzinfo=FixedOffset(1)) |
1408 datenaiss = datetime(1977, 6, 7, 2, 0, tzinfo=FixedOffset(1)) |
1406 self.qexecute("INSERT Personne X: X nom 'bob', X tzdatenaiss %(date)s", |
1409 self.qexecute("INSERT Personne X: X nom 'bob', X tzdatenaiss %(date)s", |