Add thread execution conflict guards to chat flows
This commit is contained in:
@@ -249,4 +249,27 @@ public class ProjectChatUiStateTest {
|
||||
assertFalse(ProjectChatUiState.hasReplyBeyondBaseline(project, "msg-thread-1"));
|
||||
assertFalse(ProjectChatUiState.hasReplyBeyondBaseline(project, ""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void threadExecutionConflictCopyExplainsPreferredGuiModeAsProjectScoped() throws Exception {
|
||||
JSONObject conflict = new JSONObject()
|
||||
.put("projectName", "Boss UI 主线程")
|
||||
.put("deviceName", "Mac Studio")
|
||||
.put("reason", "preferred_gui_mode");
|
||||
|
||||
assertEquals("当前项目默认先走 GUI", ProjectChatUiState.threadExecutionConflictTitle(conflict));
|
||||
assertTrue(ProjectChatUiState.threadExecutionConflictSummary(conflict).contains("只对这个项目生效"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void threadExecutionConflictCopyExplainsForbidAsProjectOnly() throws Exception {
|
||||
JSONObject conflict = new JSONObject()
|
||||
.put("projectName", "Boss UI 主线程")
|
||||
.put("reason", "project_conflict_forbid");
|
||||
|
||||
assertEquals("当前项目已命中并发保护", ProjectChatUiState.threadExecutionConflictTitle(conflict));
|
||||
assertTrue(ProjectChatUiState.threadExecutionConflictSummary(conflict).contains("只影响这个项目"));
|
||||
assertEquals("允许本次", ProjectChatUiState.labelForThreadExecutionConflictDecision("allow_once"));
|
||||
assertEquals("永久放行", ProjectChatUiState.labelForThreadExecutionConflictDecision("allow_always"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user