mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
80 lines
3.5 KiB
Python
80 lines
3.5 KiB
Python
|
import unittest
|
||
|
|
||
|
import actions
|
||
|
|
||
|
class TestActions(unittest.TestCase):
|
||
|
action_obj1 = actions.UpdateRecord("foo", 17, {"bar": "baz"})
|
||
|
doc_action1 = ["UpdateRecord", "foo", 17, {"bar": "baz"}]
|
||
|
|
||
|
def test_convert(self):
|
||
|
self.assertEqual(actions.get_action_repr(self.action_obj1), self.doc_action1)
|
||
|
self.assertEqual(actions.action_from_repr(self.doc_action1), self.action_obj1)
|
||
|
|
||
|
with self.assertRaises(ValueError) as err:
|
||
|
actions.action_from_repr(["Foo", "bar"])
|
||
|
self.assertTrue("Foo" in str(err.exception))
|
||
|
|
||
|
def test_prune_actions(self):
|
||
|
# prune_actions is in-place, so we make a new list every time.
|
||
|
def alist():
|
||
|
return [
|
||
|
actions.BulkUpdateRecord("Table1", [1,2,3], {'Foo': [10,20,30]}),
|
||
|
actions.BulkUpdateRecord("Table2", [1,2,3], {'Foo': [10,20,30], 'Bar': ['a','b','c']}),
|
||
|
actions.UpdateRecord("Table1", 17, {'Foo': 10}),
|
||
|
actions.UpdateRecord("Table2", 18, {'Foo': 10, 'Bar': 'a'}),
|
||
|
actions.AddRecord("Table1", 17, {'Foo': 10}),
|
||
|
actions.BulkAddRecord("Table2", 18, {'Foo': 10, 'Bar': 'a'}),
|
||
|
actions.ReplaceTableData("Table2", 18, {'Foo': 10, 'Bar': 'a'}),
|
||
|
actions.RemoveRecord("Table1", 17),
|
||
|
actions.BulkRemoveRecord("Table2", [17,18]),
|
||
|
actions.AddColumn("Table1", "Foo", {"type": "Text"}),
|
||
|
actions.RenameColumn("Table1", "Foo", "Bar"),
|
||
|
actions.ModifyColumn("Table1", "Foo", {"type": "Text"}),
|
||
|
actions.RemoveColumn("Table1", "Foo"),
|
||
|
actions.AddTable("THello", [{"id": "Foo"}, {"id": "Bar"}]),
|
||
|
actions.RemoveTable("THello"),
|
||
|
actions.RenameTable("THello", "TWorld"),
|
||
|
]
|
||
|
|
||
|
def prune(table_id, col_id):
|
||
|
a = alist()
|
||
|
actions.prune_actions(a, table_id, col_id)
|
||
|
return a
|
||
|
|
||
|
self.assertEqual(prune('Table1', 'Foo'), [
|
||
|
actions.BulkUpdateRecord("Table2", [1,2,3], {'Foo': [10,20,30], 'Bar': ['a','b','c']}),
|
||
|
actions.UpdateRecord("Table2", 18, {'Foo': 10, 'Bar': 'a'}),
|
||
|
actions.BulkAddRecord("Table2", 18, {'Foo': 10, 'Bar': 'a'}),
|
||
|
actions.ReplaceTableData("Table2", 18, {'Foo': 10, 'Bar': 'a'}),
|
||
|
actions.RemoveRecord("Table1", 17),
|
||
|
actions.BulkRemoveRecord("Table2", [17,18]),
|
||
|
# It doesn't do anything with column renames; it can be addressed if needed.
|
||
|
actions.RenameColumn("Table1", "Foo", "Bar"),
|
||
|
# It doesn't do anything with AddTable, which is expected.
|
||
|
actions.AddTable("THello", [{"id": "Foo"}, {"id": "Bar"}]),
|
||
|
actions.RemoveTable("THello"),
|
||
|
actions.RenameTable("THello", "TWorld"),
|
||
|
])
|
||
|
|
||
|
self.assertEqual(prune('Table2', 'Foo'), [
|
||
|
actions.BulkUpdateRecord("Table1", [1,2,3], {'Foo': [10,20,30]}),
|
||
|
actions.BulkUpdateRecord("Table2", [1,2,3], {'Bar': ['a','b','c']}),
|
||
|
actions.UpdateRecord("Table1", 17, {'Foo': 10}),
|
||
|
actions.UpdateRecord("Table2", 18, {'Bar': 'a'}),
|
||
|
actions.AddRecord("Table1", 17, {'Foo': 10}),
|
||
|
actions.BulkAddRecord("Table2", 18, {'Bar': 'a'}),
|
||
|
actions.ReplaceTableData("Table2", 18, {'Bar': 'a'}),
|
||
|
actions.RemoveRecord("Table1", 17),
|
||
|
actions.BulkRemoveRecord("Table2", [17,18]),
|
||
|
actions.AddColumn("Table1", "Foo", {"type": "Text"}),
|
||
|
actions.RenameColumn("Table1", "Foo", "Bar"),
|
||
|
actions.ModifyColumn("Table1", "Foo", {"type": "Text"}),
|
||
|
actions.RemoveColumn("Table1", "Foo"),
|
||
|
actions.AddTable("THello", [{"id": "Foo"}, {"id": "Bar"}]),
|
||
|
actions.RemoveTable("THello"),
|
||
|
actions.RenameTable("THello", "TWorld"),
|
||
|
])
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
unittest.main()
|