Skip to content

Commit 9d2c39c

Browse files
committed
Updated generate testcase command to show popup to allow for replace all/only empty/cancel
1 parent 916885a commit 9d2c39c

3 files changed

Lines changed: 55 additions & 14 deletions

File tree

core/table_controller.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def clear(self, model, selection):
133133
self.undo_stack.push(command)
134134
self.undo_stack.endMacro()
135135

136-
def generate_test_cases(self, model):
136+
def generate_test_cases(self, model, overwrite=False):
137137
test_case_generated = 0
138138
self.undo_stack.beginMacro("Generate Test Cases")
139139
for row in range(model.rowCount()):
@@ -143,7 +143,7 @@ def generate_test_cases(self, model):
143143
steps_performed_data = model.data(steps_performed_index, Qt.ItemDataRole.DisplayRole)
144144
expected_result_data = model.data(expected_result_index, Qt.ItemDataRole.DisplayRole)
145145

146-
if not steps_performed_data and not expected_result_data:
146+
if overwrite or(not steps_performed_data and not expected_result_data):
147147
command_index = model.index(row, TestScenarioModel.COMMAND_COL)
148148
command = model.data(command_index, Qt.ItemDataRole.DisplayRole)
149149

ui/menu.py

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from PyQt6.QtGui import QAction, QKeySequence
2-
from PyQt6.QtWidgets import QMenuBar
2+
from PyQt6.QtWidgets import QMenuBar, QMessageBox
3+
from core.commands import COMMANDS
4+
from models.test_scenario import TestScenarioModel
35
from typing import TYPE_CHECKING
46

57
from ui.tab import TabWidget
@@ -36,7 +38,7 @@ def create_menu_bar(self) -> None:
3638

3739
generate_action = QAction("Generate Test Cases", self.main)
3840
generate_action.triggered.connect(self.generate_test_cases_action)
39-
generate_action.setShortcut("")
41+
generate_action.setShortcut("Ctrl+G")
4042
generate_action.setToolTip("Generate Test Cases")
4143
menubar.addAction(generate_action)
4244

@@ -86,15 +88,54 @@ def _create_edit_menu(self, menubar: QMenuBar) -> None:
8688

8789
def generate_test_cases_action(self) -> None:
8890
current_tab = self.main.get_current_tab()
89-
if current_tab and hasattr(current_tab, 'controller'):
90-
current_table = self.main.get_current_table()
91-
if current_table:
92-
num_generated = current_tab.controller.generate_test_cases(current_table.model)
91+
if not current_tab and hasattr(current_tab, 'controller'):
92+
return
93+
current_table = self.main.get_current_table()
94+
if not current_table:
95+
return
96+
97+
model = current_table.model
98+
99+
for row in range(model.rowCount()):
100+
command = model.data(model.index(row, TestScenarioModel.COMMAND_COL), 0)
101+
if command in COMMANDS:
102+
steps_data = model.data(model.index(row, TestScenarioModel.STEPS_COL), 0)
103+
expected_data = model.data(model.index(row, TestScenarioModel.EXPECTED_COL), 0)
104+
if steps_data or expected_data:
105+
overwrite_needed = True
106+
break
107+
108+
should_proceed = True
109+
should_overwrite = False
110+
if overwrite_needed:
111+
msg_box = QMessageBox(self.main)
112+
msg_box.setWindowTitle("Generate Test Cases")
113+
msg_box.setText("Some test cases already have data.")
114+
msg_box.setInformativeText("How would you like to proceed?")
115+
116+
reset_button = msg_box.addButton("Reset All", QMessageBox.ButtonRole.DestructiveRole)
117+
fill_empty_button = msg_box.addButton("Fill Empty", QMessageBox.ButtonRole.AcceptRole)
118+
cancel_button = msg_box.addButton("Cancel", QMessageBox.ButtonRole.RejectRole)
119+
120+
msg_box.setDefaultButton(fill_empty_button)
121+
msg_box.exec()
122+
123+
clicked_button = msg_box.clickedButton()
124+
if clicked_button == reset_button:
125+
should_overwrite = True
126+
elif clicked_button == fill_empty_button:
127+
should_overwrite = False
128+
else:
129+
should_proceed = False
130+
self.main.show_status_message("Operation cancelled.", "info", 3000)
131+
132+
if should_proceed:
133+
num_generated = current_tab.controller.generate_test_cases(model, overwrite=should_overwrite)
93134
if num_generated > 0:
94-
message = f"Generated {num_generated} test case(s)."
135+
message = f"Successfully generated {num_generated} test case(s)."
95136
self.main.show_status_message(message, "success", 5000)
96137
else:
97-
message = f"No empty fields found to generate."
138+
message = "No test cases were generated."
98139
self.main.show_status_message(message, "info", 5000)
99140

100141
def auto_adjust_cells(self) -> None:

ui/table.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ def show_context_menu(self, position):
7676

7777
mark_skip_action = QAction("Mark Skip", self)
7878
mark_skip_action.triggered.connect(self.skip)
79-
mark_skip_action.setShortcut("Ctrl+T")
79+
mark_skip_action.setShortcut("Ctrl+R")
8080
menu.addAction(mark_skip_action)
8181

8282
mark_unskip_action = QAction("Mark Unskip", self)
8383
mark_unskip_action.triggered.connect(self.unskip)
84-
mark_unskip_action.setShortcut("Ctrl+G")
84+
mark_unskip_action.setShortcut("Ctrl+T")
8585
menu.addAction(mark_unskip_action)
8686

8787
menu.addSeparator()
@@ -117,10 +117,10 @@ def setup_shortcuts(self):
117117
self.remove_shortcut = QShortcut(QKeySequence("Ctrl+D"), self)
118118
self.remove_shortcut.activated.connect(self.remove_rows)
119119

120-
self.skip_shortcut = QShortcut(QKeySequence("Ctrl+T"), self)
120+
self.skip_shortcut = QShortcut(QKeySequence("Ctrl+R"), self)
121121
self.skip_shortcut.activated.connect(self.skip)
122122

123-
self.unskip_shortcut = QShortcut(QKeySequence("Ctrl+G"), self)
123+
self.unskip_shortcut = QShortcut(QKeySequence("Ctrl+T"), self)
124124
self.unskip_shortcut.activated.connect(self.unskip)
125125

126126
self.copy_shortcut = QShortcut(QKeySequence("Ctrl+C"), self)

0 commit comments

Comments
 (0)