Skip to content

Commit f898235

Browse files
authored
Merge pull request #243 from koianaoki/feature/fix-issue-229-delete-update-statement
2 parents c16cccc + 064e2ea commit f898235

2 files changed

Lines changed: 50 additions & 2 deletions

File tree

sqlit/domains/results/ui/mixins/results.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,9 @@ def action_delete_row(self: ResultsMixinHost) -> None:
10321032

10331033
try:
10341034
cursor_row, _cursor_col = table.cursor_coordinate
1035-
row_values = table.get_row_at(cursor_row)
1035+
row_values = [
1036+
_strip_table_markup(table, v) for v in table.get_row_at(cursor_row)
1037+
]
10361038
except Exception:
10371039
return
10381040

@@ -1114,7 +1116,9 @@ def action_edit_cell(self: ResultsMixinHost) -> None:
11141116

11151117
try:
11161118
cursor_row, cursor_col = table.cursor_coordinate
1117-
row_values = table.get_row_at(cursor_row)
1119+
row_values = [
1120+
_strip_table_markup(table, v) for v in table.get_row_at(cursor_row)
1121+
]
11181122
except Exception:
11191123
return
11201124

tests/unit/test_results_copy_markup.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,47 @@ def test_copy_cell_preserves_literal_brackets_when_not_rendering_markup() -> Non
8585
app = _FakeApp([("[bold]hello",)], render_markup=False)
8686
app.action_copy_cell()
8787
assert app.clipboard_text == "[bold]hello"
88+
89+
class _FakeQueryInput:
90+
def __init__(self) -> None:
91+
self.text = ""
92+
self.cursor_location = (0, 0)
93+
self.read_only = True
94+
95+
def focus(self) -> None:
96+
pass
97+
98+
99+
class _FakeEditApp(_FakeApp):
100+
def __init__(self, cells: list[tuple[str, ...]], columns: list[str]) -> None:
101+
super().__init__(cells, render_markup=True)
102+
self._columns = columns
103+
self.query_input = _FakeQueryInput()
104+
self._suppress_autocomplete_once = False
105+
106+
def _get_active_results_context(self) -> tuple[Any, list, list, bool]:
107+
return self._table, self._columns, [], False
108+
109+
def _get_active_results_table_info(self, _table: Any, _stacked: bool) -> dict[str, Any]:
110+
return {"name": "users", "columns": []}
111+
112+
def action_focus_query(self) -> None:
113+
pass
114+
115+
def _update_footer_bindings(self) -> None:
116+
pass
117+
118+
def _update_vim_mode_visuals(self) -> None:
119+
pass
120+
121+
122+
def test_delete_row_strips_filter_markup_before_generating_sql() -> None:
123+
app = _FakeEditApp([("[bold #FFFF00]Ja[/]ne",)], ["name"])
124+
app.action_delete_row()
125+
assert app.query_input.text == "DELETE FROM users WHERE name = 'Jane';"
126+
127+
128+
def test_edit_cell_strips_filter_markup_before_generating_sql() -> None:
129+
app = _FakeEditApp([("[bold #FFFF00]Ja[/]ne",)], ["name"])
130+
app.action_edit_cell()
131+
assert "WHERE name = 'Jane';" in app.query_input.text

0 commit comments

Comments
 (0)