You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.8 KiB
48 lines
1.8 KiB
import logging
|
|
|
|
import test_engine
|
|
from test_engine import Table, Column
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
class TestReplaceTableData(test_engine.EngineTestCase):
|
|
|
|
@test_engine.test_undo
|
|
def test_replace_and_add(self):
|
|
# This tests a fix for a bug where after ReplaceTableData, subsequent adds were causing an
|
|
# error with "relabeling" (updating manualSort column).
|
|
|
|
# Add a table with a couple of columns and records.
|
|
self.apply_user_action(["AddTable", "Vessels", []])
|
|
self.apply_user_action(["AddColumn", "Vessels", "Type", {}])
|
|
self.apply_user_action(["AddColumn", "Vessels", "Size", {}])
|
|
self.apply_user_action(["BulkAddRecord", "Vessels", [None, None],
|
|
{"Type": ["cup", "pot"], "Size": [8, 64]}])
|
|
|
|
# Check that we guessed correct column types, and the values are there.
|
|
self.assertTables([
|
|
Table(1, "Vessels", primaryViewId=1, summarySourceTable=0, columns=[
|
|
Column(1, "manualSort", "ManualSortPos", False, "", 0),
|
|
Column(2, "Type", "Text", False, "", 0),
|
|
Column(3, "Size", "Numeric", False, "", 0),
|
|
])
|
|
])
|
|
self.assertTableData("Vessels", cols="subset", rows="all", data=[
|
|
[ "id", "Type", "Size" ],
|
|
[ 1, "cup", 8 ],
|
|
[ 2, "pot", 64 ],
|
|
])
|
|
|
|
# Now do ReplaceTableData, and add more rows.
|
|
self.apply_user_action(["ReplaceTableData", "Vessels", [], {}])
|
|
|
|
# The bug used to happen here, manifesting as error
|
|
# "docactions.[Bulk]UpdateRecord for non-existent # record #1"
|
|
self.apply_user_action(["BulkAddRecord", "Vessels", [None, None],
|
|
{"Type": ["shot", "bucket"], "Size": [1.5, 640.0]}])
|
|
self.assertTableData("Vessels", cols="subset", rows="all", data=[
|
|
[ "id", "Type", "Size" ],
|
|
[ 1, "shot", 1.5 ],
|
|
[ 2, "bucket", 640 ],
|
|
])
|