|
21 | 21 |
|
22 | 22 | from datetime import datetime
|
23 | 23 | from unittest import TestCase
|
24 |
| -from unittest.mock import MagicMock |
| 24 | +from unittest.mock import MagicMock, patch |
25 | 25 |
|
26 | 26 | import sqlalchemy as sa
|
| 27 | + |
| 28 | +from crate.client.cursor import Cursor |
| 29 | +from crate.client.sqlalchemy.sa_version import SA_VERSION, SA_1_4 |
27 | 30 | from crate.client.sqlalchemy.types import Object
|
28 | 31 | from sqlalchemy import inspect
|
29 | 32 | from sqlalchemy.ext.declarative import declarative_base
|
30 | 33 | from sqlalchemy.orm import Session
|
31 | 34 | from sqlalchemy.testing import eq_, in_
|
32 | 35 |
|
33 | 36 | fake_cursor = MagicMock(name='fake_cursor')
|
| 37 | +FakeCursor = MagicMock(name='FakeCursor', spec=Cursor) |
| 38 | +FakeCursor.return_value = fake_cursor |
34 | 39 |
|
35 | 40 |
|
| 41 | +@patch('crate.client.connection.Cursor', FakeCursor) |
36 | 42 | class DialectTest(TestCase):
|
37 | 43 |
|
| 44 | + def execute_wrapper(self, query, *args, **kwargs): |
| 45 | + self.executed_statement = query |
| 46 | + return fake_cursor |
| 47 | + |
38 | 48 | def setUp(self):
|
39 | 49 | self.engine = sa.create_engine('crate://')
|
40 | 50 | self.executed_statement = None
|
41 | 51 |
|
42 |
| - def execute_wrapper(query, *args, **kwargs): |
43 |
| - self.executed_statement = query |
44 |
| - return fake_cursor |
45 |
| - |
46 |
| - self.engine.execute = execute_wrapper |
47 | 52 | self.connection = self.engine.connect()
|
48 |
| - self.connection.execute = execute_wrapper |
| 53 | + |
| 54 | + if SA_VERSION < SA_1_4: |
| 55 | + self.engine.execute = self.execute_wrapper |
| 56 | + self.connection.execute = self.execute_wrapper |
| 57 | + else: |
| 58 | + fake_cursor.execute = self.execute_wrapper |
| 59 | + |
49 | 60 | self.base = declarative_base(bind=self.engine)
|
50 | 61 |
|
51 | 62 | class Character(self.base):
|
|
0 commit comments