changeset e49a2bab2df7 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=e49a2bab2df7
description:
Make date_trunc case insensitive for SQLite
issue11365
review403201002
diffstat:
trytond/backend/sqlite/database.py | 2 +-
trytond/tests/test_backend.py | 27 +++++++++++++++++++++++----
2 files changed, 24 insertions(+), 5 deletions(-)
diffs (73 lines):
diff -r 020db44f8ec2 -r e49a2bab2df7 trytond/backend/sqlite/database.py
--- a/trytond/backend/sqlite/database.py Wed Apr 06 18:42:58 2022 +0200
+++ b/trytond/backend/sqlite/database.py Wed Apr 06 18:54:05 2022 +0200
@@ -108,7 +108,7 @@
('hour', 0),
('day', 1),
('month', 1)]:
- if _type.startswith(attribute):
+ if _type.lower().startswith(attribute):
break
value = value.replace(**{attribute: replace})
return str(value)
diff -r 020db44f8ec2 -r e49a2bab2df7 trytond/tests/test_backend.py
--- a/trytond/tests/test_backend.py Wed Apr 06 18:42:58 2022 +0200
+++ b/trytond/tests/test_backend.py Wed Apr 06 18:54:05 2022 +0200
@@ -1,11 +1,11 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
-import datetime
+import datetime as dt
import math
import unittest
from sql import Literal, Select, functions
-from sql.functions import CurrentTimestamp, ToChar
+from sql.functions import CurrentTimestamp, DateTrunc, ToChar
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
@@ -64,7 +64,7 @@
@with_transaction()
def test_to_char_datetime(self):
"Test TO_CHAR with datetime"
- now = datetime.datetime.now()
+ now = dt.datetime.now()
query = Select([ToChar(now, 'YYYYMMDD HH24:MI:SS.US')])
cursor = Transaction().connection.cursor()
@@ -76,7 +76,7 @@
@with_transaction()
def test_to_char_date(self):
"Test TO_CHAR with date"
- today = datetime.date.today()
+ today = dt.date.today()
query = Select([ToChar(today, 'YYYY-MM-DD')])
cursor = Transaction().connection.cursor()
@@ -153,6 +153,25 @@
cursor = Transaction().connection.cursor()
cursor.execute(*Select([functions.SetSeed(1)]))
+ @with_transaction()
+ def test_function_date_trunc(self):
+ "Test DateTrunc function"
+ cursor = Transaction().connection.cursor()
+ date = dt.datetime(2001, 2, 16, 20, 38, 40, 100)
+ for type_, result in [
+ ('microsecond', dt.datetime(2001, 2, 16, 20, 38, 40, 100)),
+ ('second', dt.datetime(2001, 2, 16, 20, 38, 40)),
+ ('minute', dt.datetime(2001, 2, 16, 20, 38)),
+ ('hour', dt.datetime(2001, 2, 16, 20)),
+ ('day', dt.datetime(2001, 2, 16)),
+ ('month', dt.datetime(2001, 2, 1)),
+ ]:
+ for type_ in [type_.lower(), type_.upper()]:
+ with self.subTest(type_=type_):
+ cursor.execute(*Select([DateTrunc(type_, date)]))
+ value, = cursor.fetchone()
+ self.assertEqual(str(value), str(result))
+
def suite():
return unittest.TestLoader().loadTestsFromTestCase(BackendTestCase)