|
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 |
|
@@ -113,27 +121,55 @@ def test_data_source(self, mocked_backends: mock.Mock): |
113 | 121 | backend = mock.Mock() |
114 | 122 | backend().display_name = "Dummy Backend" |
115 | 123 | backend().list_tables.return_value = ["a", "b", "c"] |
| 124 | + backend().n_tables.return_value = 3 |
116 | 125 | mocked_backends.available_backends.return_value = [backend] |
117 | 126 |
|
118 | 127 | settings = {"selected_backend": "Dummy Backend", |
119 | 128 | "host": "host", "port": "port", "database": "DB", |
120 | 129 | "schema": "", "username": "username", |
121 | | - "password": "password", "data_source": OWSql.TABLE} |
| 130 | + "password": "password"} |
122 | 131 | widget: OWSql = self.create_widget(OWSql, stored_settings=settings) |
123 | 132 | self.assertEqual(widget.tablecombo.currentText(), "Select a table") |
124 | 133 | self.assertFalse(widget.tablecombo.isHidden()) |
| 134 | + self.assertTrue(widget.tabletext.isHidden()) |
125 | 135 | self.assertTrue(widget.custom_sql.isHidden()) |
126 | 136 |
|
127 | 137 | widget.controls.data_source.buttons[OWSql.CUSTOM_SQL].click() |
128 | 138 | self.assertEqual(widget.tablecombo.currentText(), "Select a table") |
129 | 139 | self.assertFalse(widget.tablecombo.isHidden()) |
| 140 | + self.assertTrue(widget.tabletext.isHidden()) |
130 | 141 | self.assertFalse(widget.custom_sql.isHidden()) |
131 | 142 |
|
132 | 143 | widget.controls.data_source.buttons[OWSql.TABLE].click() |
133 | 144 | self.assertEqual(widget.tablecombo.currentText(), "Select a table") |
134 | 145 | self.assertFalse(widget.tablecombo.isHidden()) |
| 146 | + self.assertTrue(widget.tabletext.isHidden()) |
135 | 147 | self.assertTrue(widget.custom_sql.isHidden()) |
136 | 148 |
|
| 149 | + @mock.patch('Orange.widgets.data.owsql.MAX_TABLES', 2) |
| 150 | + @mock.patch('Orange.widgets.data.owsql.SqlTable', |
| 151 | + mock.Mock(side_effect=mock_sqltable)) |
| 152 | + @mock.patch('Orange.widgets.data.owsql.Backend') |
| 153 | + def test_table_text(self, mocked_backends: mock.Mock): |
| 154 | + backend = mock.Mock() |
| 155 | + backend().display_name = "Dummy Backend" |
| 156 | + backend().list_tables.return_value = ["iris", "zoo", "titanic"] |
| 157 | + backend().n_tables.return_value = 3 |
| 158 | + mocked_backends.available_backends.return_value = [backend] |
| 159 | + |
| 160 | + settings = {"selected_backend": "Dummy Backend", |
| 161 | + "host": "host", "port": "port", "database": "DB", |
| 162 | + "schema": "", "username": "username", |
| 163 | + "password": "password"} |
| 164 | + widget: OWSql = self.create_widget(OWSql, stored_settings=settings) |
| 165 | + self.assertTrue(widget.tablecombo.isHidden()) |
| 166 | + self.assertFalse(widget.tabletext.isHidden()) |
| 167 | + widget.tabletext.setText("zoo") |
| 168 | + widget.select_table() |
| 169 | + output = self.get_output(widget.Outputs.data, widget=widget) |
| 170 | + self.assertIsInstance(output, Table) |
| 171 | + self.assertEqual(len(output), 101) |
| 172 | + |
137 | 173 |
|
138 | 174 | if __name__ == "__main__": |
139 | 175 | unittest.main() |
0 commit comments