File: test_date.py

package info (click to toggle)
python-clickhouse-driver 0.2.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,516 kB
  • sloc: python: 10,950; pascal: 42; makefile: 31; sh: 3
file content (103 lines) | stat: -rw-r--r-- 3,597 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import os
from datetime import date, datetime
from unittest.mock import patch

from freezegun import freeze_time

from tests.testcase import BaseTestCase


class DateTestCase(BaseTestCase):
    @freeze_time('2017-03-05 03:00:00')
    def test_do_not_use_timezone(self):
        with self.create_table('a Date'):
            data = [(date(1970, 1, 2), )]
            self.client.execute(
                'INSERT INTO test (a) VALUES', data
            )

            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            self.assertEqual(inserted, '1970-01-02\n')

            with patch.dict(os.environ, {'TZ': 'US/Hawaii'}):
                inserted = self.client.execute(query)
                self.assertEqual(inserted, data)

    def test_insert_datetime_to_date(self):
        with self.create_table('a Date'):
            testTime = datetime(2015, 6, 6, 12, 30, 54)
            self.client.execute(
                'INSERT INTO test (a) VALUES', [(testTime, )]
            )
            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            self.assertEqual(inserted, '2015-06-06\n')

    def test_wrong_date_insert(self):
        with self.create_table('a Date'):
            data = [
                (date(5555, 1, 1), ),
                (date(1, 1, 1), ),
                (date(2149, 6, 7), )
            ]
            self.client.execute('INSERT INTO test (a) VALUES', data)
            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            expected = (
                3*'1970-01-01\n' if self.server_version > (20, 7, 2)
                else 3*'0000-00-00\n'
            )
            self.assertEqual(inserted, expected)

    def test_boundaries(self):
        extended_date = self.server_version > (21, 4)

        with self.create_table('a Date'):
            data = [
                (date(1970, 1, 1), ),
                ((date(2149, 6, 6) if extended_date else date(2106, 2, 7)), )
            ]
            self.client.execute('INSERT INTO test (a) VALUES', data)

            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            if extended_date:
                expected = '1970-01-01\n2149-06-06\n'
            else:
                if self.server_version > (20, 7, 2):
                    expected = '1970-01-01\n2106-02-07\n'
                else:
                    expected = '0000-00-00\n2106-02-07\n'
            self.assertEqual(inserted, expected)

            inserted = self.client.execute(query)
            self.assertEqual(inserted, data)


class Date32TestCase(BaseTestCase):
    required_server_version = (21, 9)

    def test_wrong_date_insert(self):
        with self.create_table('a Date32'):
            data = [
                (date(5555, 1, 1), ),
                (date(1, 1, 1), ),
                (date(2284, 1, 1), )
            ]
            self.client.execute('INSERT INTO test (a) VALUES', data)
            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            self.assertEqual(inserted, '1970-01-01\n1970-01-01\n1970-01-01\n')

    def test_boundaries(self):
        with self.create_table('a Date32'):
            data = [(date(1925, 1, 1), ), (date(2283, 11, 11), )]
            self.client.execute('INSERT INTO test (a) VALUES', data)

            query = 'SELECT * FROM test'
            inserted = self.emit_cli(query)
            self.assertEqual(inserted, '1925-01-01\n2283-11-11\n')

            inserted = self.client.execute(query)
            self.assertEqual(inserted, data)