mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Fix bug where duplicating a table would cause an error when a column had mismatching label and colId
Test Plan: Added a test case to trigger this situation. Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D3832
This commit is contained in:
parent
d29770511c
commit
361af238cc
@ -1634,3 +1634,21 @@ class TestUserActions(test_engine.EngineTestCase):
|
|||||||
existing_times = self.engine.fetch_table('Table1').columns['E']
|
existing_times = self.engine.fetch_table('Table1').columns['E']
|
||||||
duplicated_times = self.engine.fetch_table('FooData').columns['E']
|
duplicated_times = self.engine.fetch_table('FooData').columns['E']
|
||||||
self.assertEqual(existing_times, duplicated_times)
|
self.assertEqual(existing_times, duplicated_times)
|
||||||
|
|
||||||
|
def test_duplicate_table2(self):
|
||||||
|
# This test case verifies a bug fix: when a column doesn't match its label despite
|
||||||
|
# untieColIdFromLabel being False (which is possible), ensure that duplicating still works.
|
||||||
|
|
||||||
|
self.load_sample(self.sample)
|
||||||
|
|
||||||
|
# This is the problem situation: "State2" doesn't match "State". It can happen legitimately in
|
||||||
|
# the wild if a second column labeled "State" is added, and then the first one removed.
|
||||||
|
self.apply_user_action(['AddTable', 'Table1', [
|
||||||
|
{'id': 'State2', 'type': 'Text', 'label': 'State'}
|
||||||
|
]])
|
||||||
|
self.apply_user_action(['BulkAddRecord', 'Table1', [1], {
|
||||||
|
'State2': ['NY'],
|
||||||
|
}])
|
||||||
|
self.apply_user_action(['DuplicateTable', 'Table1', 'Foo', True])
|
||||||
|
self.assertTableData('Table1', data=[["id", "State2", 'manualSort'], [1, 'NY', 1.0]])
|
||||||
|
self.assertTableData('Foo', data=[["id", "State2", 'manualSort'], [1, 'NY', 1.0]])
|
||||||
|
@ -1904,6 +1904,7 @@ class UserActions(object):
|
|||||||
type=new_type,
|
type=new_type,
|
||||||
visibleCol=new_visible_col,
|
visibleCol=new_visible_col,
|
||||||
untieColIdFromLabel=existing_column.untieColIdFromLabel,
|
untieColIdFromLabel=existing_column.untieColIdFromLabel,
|
||||||
|
colId=new_column.colId, # To ensure untieColIdFromLabel doesn't rename this column.
|
||||||
recalcWhen=existing_column.recalcWhen,
|
recalcWhen=existing_column.recalcWhen,
|
||||||
recalcDeps=new_recalc_deps,
|
recalcDeps=new_recalc_deps,
|
||||||
formula=formula_updates.get(new_column, existing_column.formula),
|
formula=formula_updates.get(new_column, existing_column.formula),
|
||||||
|
Loading…
Reference in New Issue
Block a user