--convert function can now modify row in place, closes #371

This commit is contained in:
Simon Willison 2022-01-09 12:06:02 -08:00
commit 22c8d10dd3
5 changed files with 49 additions and 38 deletions

View file

@ -55,32 +55,20 @@ def test_convert_code(fresh_db_and_path, code):
@pytest.mark.parametrize(
"bad_code,expected_error",
[
(
"def foo(value)",
"""Error: Syntax error in code:
return def foo(value)
invalid syntax""",
),
(
"$",
"""Error: Syntax error in code:
return $
invalid syntax""",
),
],
"bad_code",
(
"def foo(value)",
"$",
),
)
def test_convert_code_errors(fresh_db_and_path, bad_code, expected_error):
def test_convert_code_errors(fresh_db_and_path, bad_code):
db, db_path = fresh_db_and_path
db["t"].insert({"text": "October"})
result = CliRunner().invoke(cli.cli, ["convert", db_path, "t", "text", bad_code])
result = CliRunner().invoke(
cli.cli, ["convert", db_path, "t", "text", bad_code], catch_exceptions=False
)
assert 1 == result.exit_code
assert result.output.strip() == expected_error.strip()
assert result.output == "Error: Could not compile code\n"
def test_convert_import(test_db_and_path):

View file

@ -434,3 +434,22 @@ def test_insert_convert_lines(db_path):
db = Database(db_path)
rows = list(db.query("select [line] from [all]"))
assert rows == [{"line": "THIS IS TEXT"}, {"line": "WILL BE UPPER NOW"}]
def test_insert_convert_row_modifying_in_place(db_path):
result = CliRunner().invoke(
cli.cli,
[
"insert",
db_path,
"rows",
"-",
"--convert",
'row["is_chicken"] = True',
],
input='{"name": "Azi"}',
)
assert result.exit_code == 0, result.output
db = Database(db_path)
rows = list(db.query("select name, is_chicken from rows"))
assert rows == [{"name": "Azi", "is_chicken": 1}]