|
1 | 1 | import pytest |
2 | | -from pgcli.packages.parseutils import is_destructive |
| 2 | +from pgcli.packages.parseutils import ( |
| 3 | + is_destructive, |
| 4 | + parse_destructive_warning, |
| 5 | + BASE_KEYWORDS, |
| 6 | + ALL_KEYWORDS, |
| 7 | +) |
3 | 8 | from pgcli.packages.parseutils.tables import extract_tables |
4 | 9 | from pgcli.packages.parseutils.utils import find_prev_keyword, is_open_quote |
5 | 10 |
|
@@ -263,18 +268,43 @@ def test_is_open_quote__open(sql): |
263 | 268 |
|
264 | 269 |
|
265 | 270 | @pytest.mark.parametrize( |
266 | | - ("sql", "warning_level", "expected"), |
| 271 | + ("sql", "keywords", "expected"), |
| 272 | + [ |
| 273 | + ("update abc set x = 1", ALL_KEYWORDS, True), |
| 274 | + ("update abc set x = 1 where y = 2", ALL_KEYWORDS, True), |
| 275 | + ("update abc set x = 1", BASE_KEYWORDS, True), |
| 276 | + ("update abc set x = 1 where y = 2", BASE_KEYWORDS, False), |
| 277 | + ("select x, y, z from abc", ALL_KEYWORDS, False), |
| 278 | + ("drop abc", ALL_KEYWORDS, True), |
| 279 | + ("alter abc", ALL_KEYWORDS, True), |
| 280 | + ("delete abc", ALL_KEYWORDS, True), |
| 281 | + ("truncate abc", ALL_KEYWORDS, True), |
| 282 | + ("insert into abc values (1, 2, 3)", ALL_KEYWORDS, False), |
| 283 | + ("insert into abc values (1, 2, 3)", BASE_KEYWORDS, False), |
| 284 | + ("insert into abc values (1, 2, 3)", ["insert"], True), |
| 285 | + ("insert into abc values (1, 2, 3)", ["insert"], True), |
| 286 | + ], |
| 287 | +) |
| 288 | +def test_is_destructive(sql, keywords, expected): |
| 289 | + assert is_destructive(sql, keywords) == expected |
| 290 | + |
| 291 | + |
| 292 | +@pytest.mark.parametrize( |
| 293 | + ("warning_level", "expected"), |
267 | 294 | [ |
268 | | - ("update abc set x = 1", "all", True), |
269 | | - ("update abc set x = 1 where y = 2", "all", True), |
270 | | - ("update abc set x = 1", "moderate", True), |
271 | | - ("update abc set x = 1 where y = 2", "moderate", False), |
272 | | - ("select x, y, z from abc", "all", False), |
273 | | - ("drop abc", "all", True), |
274 | | - ("alter abc", "all", True), |
275 | | - ("delete abc", "all", True), |
276 | | - ("truncate abc", "all", True), |
| 295 | + ("true", ALL_KEYWORDS), |
| 296 | + ("false", []), |
| 297 | + ("all", ALL_KEYWORDS), |
| 298 | + ("moderate", BASE_KEYWORDS), |
| 299 | + ("off", []), |
| 300 | + ("", []), |
| 301 | + (None, []), |
| 302 | + (ALL_KEYWORDS, ALL_KEYWORDS), |
| 303 | + (BASE_KEYWORDS, BASE_KEYWORDS), |
| 304 | + ("insert", ["insert"]), |
| 305 | + ("drop,alter,delete", ["drop", "alter", "delete"]), |
| 306 | + (["drop", "alter", "delete"], ["drop", "alter", "delete"]), |
277 | 307 | ], |
278 | 308 | ) |
279 | | -def test_is_destructive(sql, warning_level, expected): |
280 | | - assert is_destructive(sql, warning_level=warning_level) == expected |
| 309 | +def test_parse_destructive_warning(warning_level, expected): |
| 310 | + assert parse_destructive_warning(warning_level) == expected |
0 commit comments