-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathtest_action_query.py
More file actions
73 lines (61 loc) · 2.74 KB
/
test_action_query.py
File metadata and controls
73 lines (61 loc) · 2.74 KB
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
from sql_base_action_test_case import SqlBaseActionTestCase
from lib.base_action import BaseAction
from st2common.runners.base_action import Action
from generic_query import SQLQueryAction
import mock
__all__ = [
'TestActionSQLQueryAction'
]
class TestActionSQLQueryAction(SqlBaseActionTestCase):
__test__ = True
action_cls = SQLQueryAction
def test_init(self):
action = self.get_action_instance({})
self.assertIsInstance(action, SQLQueryAction)
self.assertIsInstance(action, BaseAction)
self.assertIsInstance(action, Action)
@mock.patch('lib.base_action.BaseAction.db_connection')
def test_run(self, mock_connect_to_db):
action = self.get_action_instance(self.config_good)
connection_name = 'full'
connection_config = self.config_good['connections'][connection_name]
test_dict = {
'query': 'generic query'
}
test_dict.update(connection_config)
test_row = mock.Mock(test1='value', test2='value2')
test_row.keys.return_value = ['test1', 'test2']
expected_result = [{
'test1': 'value',
'test2': 'value2'
}]
mock_query_results = mock.Mock(returns_rows=True, rowcount=1)
mock_query_results.fetchall.return_value = [test_row]
mock_connection = mock.Mock()
mock_connection.execute.return_value = mock_query_results
mock_connection.close.return_value = "Successfully disconnected"
mock_connect_to_db.return_value.__enter__.return_value = mock_connection
action.conn = mock_connection
result = action.run(**test_dict)
self.assertEqual(result, expected_result)
mock_connect_to_db.assert_called_once_with(test_dict)
mock_connection.execute.assert_called_once_with(test_dict['query'])
@mock.patch('lib.base_action.BaseAction.db_connection')
def test_run_connction(self, mock_connect_to_db):
action = self.get_action_instance(self.config_good)
connection_name = 'full'
test_dict = {
'connection': connection_name,
'query': 'generic query'
}
expected_result = {'affected_rows': 5}
mock_query_results = mock.Mock(returns_rows=False, rowcount=5)
mock_connection = mock.Mock()
mock_connection.execute.return_value = mock_query_results
mock_connection.close.return_value = "Successfully disconnected"
mock_connect_to_db.return_value.__enter__.return_value = mock_connection
action.conn = mock_connection
result = action.run(**test_dict)
self.assertEqual(result, expected_result)
mock_connect_to_db.assert_called_once_with(test_dict)
mock_connection.execute.assert_called_once_with(test_dict['query'])