fix(BulkDeleteIssues): implémente retour BatchIssueResult sans issue (#7)

This commit is contained in:
2026-07-28 19:30:16 +02:00
parent bcd489aac8
commit f4ae5df17c
5 changed files with 38 additions and 42 deletions

View File

@ -591,7 +591,11 @@ impl BulkDeleteIssues {
issue_ref, issue_ref,
freed_sprint, freed_sprint,
}); });
BatchIssueResult::deleted(issue_ref) BatchIssueResult {
issue_ref,
issue: None,
error: None,
}
} }
Err(err) => BatchIssueResult::err(issue_ref, AppError::from(err)), Err(err) => BatchIssueResult::err(issue_ref, AppError::from(err)),
} }

View File

@ -97,13 +97,13 @@ pub use git::{
pub use health::{HealthInput, HealthReport, HealthUseCase}; pub use health::{HealthInput, HealthReport, HealthUseCase};
pub use issues::{ pub use issues::{
AssignIssueAgent, AssignIssueAgentInput, AssignIssueAgentOutput, BatchIssueResult, AssignIssueAgent, AssignIssueAgentInput, AssignIssueAgentOutput, BatchIssueResult,
BulkIssueMutationOutput, BulkUpdateIssuePriority, BulkUpdateIssuePriorityInput, BulkDeleteIssues, BulkDeleteIssuesInput, BulkIssueMutationOutput, BulkUpdateIssuePriority,
BulkUpdateIssueStatus, BulkUpdateIssueStatusInput, CreateIssue, CreateIssueInput, BulkUpdateIssuePriorityInput, BulkUpdateIssueStatus, BulkUpdateIssueStatusInput, CreateIssue,
CreateIssueOutput, DeleteIssue, DeleteIssueInput, DeleteIssueOutput, LinkIssues, CreateIssueInput, CreateIssueOutput, DeleteIssue, DeleteIssueInput, DeleteIssueOutput,
LinkIssuesInput, LinkIssuesOutput, ListIssues, ListIssuesInput, ListIssuesOutput, ReadIssue, LinkIssues, LinkIssuesInput, LinkIssuesOutput, ListIssues, ListIssuesInput, ListIssuesOutput,
ReadIssueCarnet, ReadIssueCarnetInput, ReadIssueCarnetOutput, ReadIssueInput, ReadIssueOutput, ReadIssue, ReadIssueCarnet, ReadIssueCarnetInput, ReadIssueCarnetOutput, ReadIssueInput,
UnlinkIssues, UnlinkIssuesInput, UpdateIssue, UpdateIssueCarnet, UpdateIssueCarnetInput, ReadIssueOutput, UnlinkIssues, UnlinkIssuesInput, UpdateIssue, UpdateIssueCarnet,
UpdateIssueCarnetOutput, UpdateIssueInput, UpdateIssueOutput, UpdateIssueCarnetInput, UpdateIssueCarnetOutput, UpdateIssueInput, UpdateIssueOutput,
}; };
pub use layout::{ pub use layout::{
CreateLayout, CreateLayoutInput, CreateLayoutOutput, DeleteLayout, DeleteLayoutInput, CreateLayout, CreateLayoutInput, CreateLayoutOutput, DeleteLayout, DeleteLayoutInput,

View File

@ -530,11 +530,7 @@ async fn bulk_update_status_preserves_order_and_allows_partial_success() {
issues.create(&project.root, &issue).await.unwrap(); issues.create(&project.root, &issue).await.unwrap();
} }
let bus = Arc::new(SpyBus::default()); let bus = Arc::new(SpyBus::default());
let uc = BulkUpdateIssueStatus::new( let uc = BulkUpdateIssueStatus::new(issues.clone(), Arc::new(FixedClock), bus.clone());
issues.clone(),
Arc::new(FixedClock),
bus.clone(),
);
let out = uc let out = uc
.execute(BulkUpdateIssueStatusInput { .execute(BulkUpdateIssueStatusInput {
@ -587,11 +583,7 @@ async fn bulk_update_priority_updates_each_existing_ticket() {
.unwrap(); .unwrap();
issues.create(&project.root, &initial).await.unwrap(); issues.create(&project.root, &initial).await.unwrap();
let bus = Arc::new(SpyBus::default()); let bus = Arc::new(SpyBus::default());
let uc = BulkUpdateIssuePriority::new( let uc = BulkUpdateIssuePriority::new(issues.clone(), Arc::new(FixedClock), bus.clone());
issues.clone(),
Arc::new(FixedClock),
bus.clone(),
);
let out = uc let out = uc
.execute(BulkUpdateIssuePriorityInput { .execute(BulkUpdateIssuePriorityInput {

View File

@ -15,25 +15,25 @@ use application::{
AgentResumer, AgentWakeService, AppError, AssignIssueAgent, AssignSkillToAgent, AgentResumer, AgentWakeService, AppError, AssignIssueAgent, AssignSkillToAgent,
AssignTicketToSprint, AttachLiveAgent, AuthenticateSession, BackgroundCommandArchive, AssignTicketToSprint, AttachLiveAgent, AuthenticateSession, BackgroundCommandArchive,
BulkUpdateIssuePriority, BulkUpdateIssueStatus, CancelBackgroundTask, ChangeAgentProfile, BulkUpdateIssuePriority, BulkUpdateIssueStatus, CancelBackgroundTask, ChangeAgentProfile,
CheckEmbedderSuggestion, CloneOpenCodeProfileFromSeed, CheckEmbedderSuggestion, CloneOpenCodeProfileFromSeed, CloneProfileFromSeed, CloseProject,
CloneProfileFromSeed, CloseProject, CloseTab, CloseTerminal, CloseTicketAssistant, CloseTab, CloseTerminal, CloseTicketAssistant, ConfigureProfiles, ContextGuardUseCases,
ConfigureProfiles, ContextGuardUseCases, CreateAgentFromScratch, CreateAgentFromTemplate, CreateAgentFromScratch, CreateAgentFromTemplate, CreateIssue, CreateLayout, CreateMemory,
CreateIssue, CreateLayout, CreateMemory, CreateProject, CreateSkill, CreateSprint, CreateProject, CreateSkill, CreateSprint, CreateTemplate, DeleteAgent, DeleteEmbedderProfile,
CreateTemplate, DeleteAgent, DeleteEmbedderProfile, DeleteIssue, DeleteLayout, DeleteMemory, DeleteIssue, DeleteLayout, DeleteMemory, DeleteModelArtifact, DeleteModelServer, DeleteProfile,
DeleteModelArtifact, DeleteModelServer, DeleteProfile, DeleteSkill, DeleteSprint, DeleteSkill, DeleteSprint, DeleteTemplate, DescribeEmbedderEngines, DetectAgentDrift,
DeleteTemplate, DescribeEmbedderEngines, DetectAgentDrift, DetectProfiles, DetectProfiles, DismissEmbedderSuggestion, EnsureLocalModelServer, FirstRunState,
DismissEmbedderSuggestion, EnsureLocalModelServer, FirstRunState, GetAppExitWorkGuardState, GetAppExitWorkGuardState, GetLiveStateLean, GetMemory, GetProjectPermissions,
GetLiveStateLean, GetMemory, GetProjectPermissions, GetProjectSystemPermissions, GetProjectSystemPermissions, GetProjectWorkState, GitBranches, GitCheckout, GitCommit,
GetProjectWorkState, GitBranches, GitCheckout, GitCommit, GitGraph, GitInit, GitLog, GitStage, GitGraph, GitInit, GitLog, GitStage, GitStatus, GitUnstage, HarvestMemoryFromTurn,
GitStatus, GitUnstage, HarvestMemoryFromTurn, HealthUseCase, InspectConversation, HealthUseCase, InspectConversation, InstallPluginFromArchive, InstallPluginFromDirectory,
InstallPluginFromArchive, InstallPluginFromDirectory, JsonPluginManifestValidator, LaunchAgent, JsonPluginManifestValidator, LaunchAgent, LaunchAgentInput, LinkIssues, ListAgents,
LaunchAgentInput, LinkIssues, ListAgents, ListAgentsInput, ListClaudeModels, ListCodexModels, ListAgentsInput, ListClaudeModels, ListCodexModels, ListDevices, ListEmbedderProfiles,
ListDevices, ListEmbedderProfiles, ListIssues, ListLayouts, ListMemories, ListModelServers, ListIssues, ListLayouts, ListMemories, ListModelServers, ListOpenCodeProviders,
ListOpenCodeProviders, ListPluginRuntimeContributions, ListPlugins, ListProfiles, ListProjects, ListPluginRuntimeContributions, ListPlugins, ListProfiles, ListProjects, ListResumableAgents,
ListResumableAgents, ListSkills, ListSprints, ListTemplates, LiveAgentRegistry, LiveSessions, ListSkills, ListSprints, ListTemplates, LiveAgentRegistry, LiveSessions, LiveStateLeanProvider,
LiveStateLeanProvider, LiveStateProvider, LiveStateReadProvider, LoadLayout, McpRuntime, LiveStateProvider, LiveStateReadProvider, LoadLayout, McpRuntime, McpToolPermissionCatalogue,
McpToolPermissionCatalogue, MoveTabToNewWindow, MutateLayout, OnnxModelView, OpenProject, MoveTabToNewWindow, MutateLayout, OnnxModelView, OpenProject, OpenTerminal,
OpenTerminal, OpenTicketAssistant, OrchestratorService, PairAttemptLimiter, PairDevice, OpenTicketAssistant, OrchestratorService, PairAttemptLimiter, PairDevice,
PermissionProjectorRegistry, ProposeContext, ReadAgentContext, ReadContext, PermissionProjectorRegistry, ProposeContext, ReadAgentContext, ReadContext,
ReadConversationPage, ReadIssue, ReadIssueCarnet, ReadMcpToolPermissions, ReadMemory, ReadConversationPage, ReadIssue, ReadIssueCarnet, ReadMcpToolPermissions, ReadMemory,
ReadMemoryIndex, ReadProjectContext, ReadSkill, ReadTemplate, RecallMemory, ReconcileLayouts, ReadMemoryIndex, ReadProjectContext, ReadSkill, ReadTemplate, RecallMemory, ReconcileLayouts,

View File

@ -769,11 +769,11 @@ async fn tools_list_advertises_the_idea_tools_with_schemas() {
); );
} }
assert!(!names.contains(&"idea_reply")); assert!(!names.contains(&"idea_reply"));
assert_eq!( assert_eq!(
tools.len(), tools.len(),
33, 33,
"exactly the thirty-three exposed idea_* tools; got {names:?}" "exactly the thirty-three exposed idea_* tools; got {names:?}"
); );
// Every tool advertises an object input schema. // Every tool advertises an object input schema.
for t in tools { for t in tools {