mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) move data engine code to core
Summary: this moves sandbox/grist to core, and adds a requirements.txt file for reconstructing the content of sandbox/thirdparty. Test Plan: existing tests pass. Tested core functionality manually. Tested docker build manually. Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2563
This commit is contained in:
79
sandbox/grist/test_actions.py
Normal file
79
sandbox/grist/test_actions.py
Normal file
@@ -0,0 +1,79 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user