add dependency is now part of the task

This commit is contained in:
viljarb
2026-03-26 18:40:15 +01:00
parent eb8dfc40c9
commit ac19f82585

View File

@@ -14,12 +14,9 @@ const dependencyManagementDescription = `You are tasked with managing issue depe
Several issues in your project have dependencies on other issues. Several issues in your project have dependencies on other issues.
You need to: You need to:
1. Find 2 issues that have dependencies on other issues. 1. Find the 2 issues that depend on 'Setup database connection'.
- Set their status to "Blocked". 2. Add the 'Setup database connection' issue as a dependency to the 2 issues.
2. Find the issue that is depended on by the other issues: 3. Set the 2 issues' status to "Blocked".`
- Set priority to 3.
- Set status to in-progress.
- Assign to yourself as "Me".`
type DependencyManagementTask struct { type DependencyManagementTask struct {
done bool done bool
@@ -73,21 +70,21 @@ func (t *DependencyManagementTask) Setup(ctx context.Context) error {
NewIssueBuilder(). NewIssueBuilder().
WithTitle("Setup database connection"). WithTitle("Setup database connection").
WithDescription("Configure database connection pool."). WithDescription("Configure database connection pool.").
WithPriority(2). WithPriority(3).
WithStatus(models.StatusOpen). WithStatus(models.StatusInProgress).
WithIssueType(models.TypeTask). WithIssueType(models.TypeTask).
Build(), Build(),
NewIssueBuilder(). NewIssueBuilder().
WithTitle("Implement Authentication System"). WithTitle("Implement Authentication System").
WithDescription("Add login/logout functionality. Depends on 'Setup database connection' issue."). WithDescription("Add login/logout functionality.").
WithPriority(2). WithPriority(2).
WithStatus(models.StatusOpen). WithStatus(models.StatusOpen).
WithIssueType(models.TypeTask). WithIssueType(models.TypeTask).
Build(), Build(),
NewIssueBuilder(). NewIssueBuilder().
WithTitle("Add user management operations"). WithTitle("Add user management operations").
WithDescription("Add operations for user management. Depends on 'Setup database connection' issue."). WithDescription("Add operations for user management.").
WithPriority(3). WithPriority(2).
WithStatus(models.StatusOpen). WithStatus(models.StatusOpen).
WithIssueType(models.TypeTask). WithIssueType(models.TypeTask).
Build(), Build(),
@@ -97,17 +94,7 @@ func (t *DependencyManagementTask) Setup(ctx context.Context) error {
return err return err
} }
base := t.depIssues[0]
for _, child := range t.depIssues[1:] {
dep := &models.Dependency{
IssueID: child.ID,
DependsOnID: base.ID,
Type: models.DepBlocks,
}
if err := t.app.Issues.AddDependency(ctx, dep, ""); err != nil {
return err
}
}
return nil return nil
} }
@@ -124,25 +111,29 @@ func (t *DependencyManagementTask) Validate(ctx context.Context) ValidationFeedb
for _, depIssue := range t.depIssues[1:] { for _, depIssue := range t.depIssues[1:] {
if issue.Title == depIssue.Title { if issue.Title == depIssue.Title {
expect.Equal(issue.Status, models.StatusBlocked, expect.Equal(issue.Status, models.StatusBlocked,
fmt.Sprintf("%s status", issue.Title)) fmt.Sprintf("%s status", issue.Title,))
}
}
}
if !expect.Valid() {
return expect.ValidationFeedback
}
for _, issue := range issues {
for _, foundationalIssue := range t.depIssues[:1] {
if issue.Title == foundationalIssue.Title {
expect.Equal(issue.Priority, 3,
fmt.Sprintf("%s priority", issue.Title))
expect.NotEmptyAndEqual(issue.Assignee, "Me",
fmt.Sprintf("%s assignee", issue.Title))
expect.Equal(issue.Status, models.StatusInProgress,
fmt.Sprintf("%s status", issue.Title))
} }
} }
} }
for _, depIssue := range t.depIssues[1:] {
deps, _ := t.app.Issues.GetDependencies(ctx, depIssue.ID)
expect.Equal(len(deps), 1,
fmt.Sprintf("%s - %d dependencies", depIssue.Title, len(deps)))
if len(deps) == 1 {
expect.Equal(deps[0].ID, t.depIssues[0].ID,
fmt.Sprintf("%s dependency", depIssue.Title))
}
}
if !expect.Valid() {
return expect.ValidationFeedback
}
return expect.Complete() return expect.Complete()
} }