|
10 | 10 | from Orange.tests.sql.base import DataBaseTest as dbt |
11 | 11 |
|
12 | 12 |
|
| 13 | +def mock_sqltable(*args, **_): |
| 14 | + table = Table(args[1]) |
| 15 | + table.get_domain = lambda **_: table.domain |
| 16 | + table.download_data = lambda *_: 1 |
| 17 | + return table |
| 18 | + |
| 19 | + |
13 | 20 | class TestOWSqlConnected(WidgetTest, dbt): |
14 | 21 | def setUpDB(self): |
15 | 22 | # pylint: disable=attribute-defined-outside-init |
@@ -72,6 +79,7 @@ def test_restore_table(self, mock_backends, mock_sqltable): |
72 | 79 | backend().display_name = "database" |
73 | 80 | del backend().missing_extension |
74 | 81 | backend().list_tables.return_value = ["a", "b", "c"] |
| 82 | + backend().n_tables.return_value = 3 |
75 | 83 | mock_backends.available_backends.return_value = [backend] |
76 | 84 | mock_sqltable().approx_len.return_value = 100 |
77 | 85 |
|
@@ -116,27 +124,55 @@ def test_data_source(self, mocked_backends: mock.Mock): |
116 | 124 | backend = mock.Mock() |
117 | 125 | backend().display_name = "Dummy Backend" |
118 | 126 | backend().list_tables.return_value = ["a", "b", "c"] |
| 127 | + backend().n_tables.return_value = 3 |
119 | 128 | mocked_backends.available_backends.return_value = [backend] |
120 | 129 |
|
121 | 130 | settings = {"selected_backend": "Dummy Backend", |
122 | 131 | "host": "host", "port": "port", "database": "DB", |
123 | 132 | "schema": "", "username": "username", |
124 | | - "password": "password", "data_source": OWSql.TABLE} |
| 133 | + "password": "password"} |
125 | 134 | widget: OWSql = self.create_widget(OWSql, stored_settings=settings) |
126 | 135 | self.assertEqual(widget.tablecombo.currentText(), "Select a table") |
127 | 136 | self.assertFalse(widget.tablecombo.isHidden()) |
| 137 | + self.assertTrue(widget.tabletext.isHidden()) |
128 | 138 | self.assertTrue(widget.custom_sql.isHidden()) |
129 | 139 |
|
130 | 140 | widget.controls.data_source.buttons[OWSql.CUSTOM_SQL].click() |
131 | 141 | self.assertEqual(widget.tablecombo.currentText(), "Select a table") |
132 | 142 | self.assertFalse(widget.tablecombo.isHidden()) |
| 143 | + self.assertTrue(widget.tabletext.isHidden()) |
133 | 144 | self.assertFalse(widget.custom_sql.isHidden()) |
134 | 145 |
|
135 | 146 | widget.controls.data_source.buttons[OWSql.TABLE].click() |
136 | 147 | self.assertEqual(widget.tablecombo.currentText(), "Select a table") |
137 | 148 | self.assertFalse(widget.tablecombo.isHidden()) |
| 149 | + self.assertTrue(widget.tabletext.isHidden()) |
138 | 150 | self.assertTrue(widget.custom_sql.isHidden()) |
139 | 151 |
|
| 152 | + @mock.patch('Orange.widgets.data.owsql.MAX_TABLES', 2) |
| 153 | + @mock.patch('Orange.widgets.data.owsql.SqlTable', |
| 154 | + mock.Mock(side_effect=mock_sqltable)) |
| 155 | + @mock.patch('Orange.widgets.data.owsql.Backend') |
| 156 | + def test_table_text(self, mocked_backends: mock.Mock): |
| 157 | + backend = mock.Mock() |
| 158 | + backend().display_name = "Dummy Backend" |
| 159 | + backend().list_tables.return_value = ["iris", "zoo", "titanic"] |
| 160 | + backend().n_tables.return_value = 3 |
| 161 | + mocked_backends.available_backends.return_value = [backend] |
| 162 | + |
| 163 | + settings = {"selected_backend": "Dummy Backend", |
| 164 | + "host": "host", "port": "port", "database": "DB", |
| 165 | + "schema": "", "username": "username", |
| 166 | + "password": "password"} |
| 167 | + widget: OWSql = self.create_widget(OWSql, stored_settings=settings) |
| 168 | + self.assertTrue(widget.tablecombo.isHidden()) |
| 169 | + self.assertFalse(widget.tabletext.isHidden()) |
| 170 | + widget.tabletext.setText("zoo") |
| 171 | + widget.select_table() |
| 172 | + output = self.get_output(widget.Outputs.data, widget=widget) |
| 173 | + self.assertIsInstance(output, Table) |
| 174 | + self.assertEqual(len(output), 101) |
| 175 | + |
140 | 176 |
|
141 | 177 | if __name__ == "__main__": |
142 | 178 | unittest.main() |
0 commit comments