|
9 | 9 | from Orange.widgets.tests.base import WidgetTest, simulate |
10 | 10 | from Orange.tests.sql.base import DataBaseTest as dbt |
11 | 11 |
|
| 12 | +mock_msgbox = mock.MagicMock() |
| 13 | +mock_msgbox().addButton.return_value = "NO" |
| 14 | +mock_msgbox().clickedButton.return_value = "NO" |
| 15 | + |
12 | 16 |
|
13 | 17 | def mock_sqltable(*args, **_): |
14 | 18 | table = Table(args[1]) |
@@ -173,6 +177,36 @@ def test_table_text(self, mocked_backends: mock.Mock): |
173 | 177 | self.assertIsInstance(output, Table) |
174 | 178 | self.assertEqual(len(output), 101) |
175 | 179 |
|
| 180 | + @mock.patch('Orange.widgets.data.owsql.AUTO_DL_LIMIT', 120) |
| 181 | + @mock.patch('Orange.widgets.data.owsql.is_postgres', |
| 182 | + mock.Mock(return_value=True)) |
| 183 | + @mock.patch('Orange.widgets.data.owsql.QMessageBox', mock_msgbox) |
| 184 | + @mock.patch('Orange.widgets.data.owsql.SqlTable', |
| 185 | + mock.Mock(side_effect=mock_sqltable)) |
| 186 | + @mock.patch('Orange.widgets.data.owsql.Backend') |
| 187 | + def test_auto_dl_limit(self, mocked_backends: mock.Mock): |
| 188 | + backend = mock.Mock() |
| 189 | + backend().display_name = "Dummy Backend" |
| 190 | + backend().list_tables.return_value = ["iris", "zoo", "titanic"] |
| 191 | + backend().n_tables.return_value = 3 |
| 192 | + mocked_backends.available_backends.return_value = [backend] |
| 193 | + |
| 194 | + settings = {"selected_backend": "Dummy Backend", |
| 195 | + "host": "host", "port": "port", "database": "DB", |
| 196 | + "schema": "", "username": "username", |
| 197 | + "password": "password"} |
| 198 | + widget: OWSql = self.create_widget(OWSql, stored_settings=settings) |
| 199 | + widget.tablecombo.setCurrentIndex(2) |
| 200 | + widget.select_table() |
| 201 | + output = self.get_output(widget.Outputs.data, widget=widget) |
| 202 | + self.assertIsInstance(output, Table) |
| 203 | + self.assertEqual(len(output), 101) |
| 204 | + |
| 205 | + widget.tablecombo.setCurrentIndex(1) |
| 206 | + widget.select_table() |
| 207 | + output = self.get_output(widget.Outputs.data, widget=widget) |
| 208 | + self.assertIsNone(output) |
| 209 | + |
176 | 210 |
|
177 | 211 | if __name__ == "__main__": |
178 | 212 | unittest.main() |
0 commit comments