fix(product-suite): validate item id before generation
This commit is contained in:
@@ -3074,6 +3074,44 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_item_id_commit_normalizes_and_blocks_generation_before_state_changes(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
config = self._config(temp_dir)
|
||||
project, _assets = self._create_project_with_assets(temp_dir, config, 1)
|
||||
tab = ProductSuiteTab(config=config, db_path=config["db_path"])
|
||||
self.addCleanup(tab.close)
|
||||
state = tab._displayed_state
|
||||
state.account_alias = project.account_alias
|
||||
state.item_id = project.item_id
|
||||
state.project_id = project.id
|
||||
state.project_binding_state = project.binding_state
|
||||
tab._load_state(state)
|
||||
|
||||
tab.item_id_edit.setText(project.item_id + chr(0x200B))
|
||||
with mock.patch.object(tab, "_ensure_generation_gateway", return_value=False) as gateway:
|
||||
self.assertFalse(tab.start_generation(state))
|
||||
gateway.assert_called_once()
|
||||
self.assertEqual(project.item_id, tab.item_id_edit.text())
|
||||
self.assertEqual(project.item_id, state.item_id)
|
||||
self.assertEqual(project.id, state.project_id)
|
||||
|
||||
tab.item_id_edit.setText(project.item_id + "-1")
|
||||
with mock.patch.object(tab, "_ensure_generation_gateway", return_value=False) as gateway:
|
||||
self.assertFalse(tab.start_generation(state))
|
||||
gateway.assert_not_called()
|
||||
self.assertEqual(project.item_id, state.item_id)
|
||||
self.assertEqual(project.id, state.project_id)
|
||||
self.assertEqual(project.item_id + "-1", tab.item_id_edit.text())
|
||||
|
||||
tab.item_id_edit.setText("51100639511")
|
||||
with mock.patch.object(tab, "_confirm", return_value=False):
|
||||
self.assertFalse(tab._commit_item_id(state))
|
||||
self.assertEqual(project.item_id, state.item_id)
|
||||
self.assertEqual(project.id, state.project_id)
|
||||
self.assertEqual(project.item_id, tab.item_id_edit.text())
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_pull_confirmation_always_shows_account_item_and_existing_count(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
config = self._config(temp_dir)
|
||||
|
||||
Reference in New Issue
Block a user