taks use end task util

This commit is contained in:
Robin Olsen
2026-02-23 12:28:10 +01:00
parent a3a9b8293c
commit 2c2fbac3a3
2 changed files with 31 additions and 11 deletions

View File

@@ -24,11 +24,12 @@ Please write your code below this line!
` `
type CodingTask struct { type CodingTask struct {
app *service.App done bool
app *service.App
} }
func NewCodingTask(app *service.App) *CodingTask { func NewCodingTask(app *service.App) *CodingTask {
return &CodingTask{app: app} return &CodingTask{app: app, done: false}
} }
func (t *CodingTask) Config() task.Config { func (t *CodingTask) Config() task.Config {
@@ -100,5 +101,5 @@ func (t *CodingTask) Validate(ctx context.Context) (bool, error) {
return false, fmt.Errorf("the function does not contain a return statement") return false, fmt.Errorf("the function does not contain a return statement")
} }
return EndTaskWithTimeout(nil, "Task completed!", 5*time.Second) return EndTaskWithTimeout(&t.done, "Task completed!", 5*time.Second)
} }

View File

@@ -3,6 +3,7 @@ package tasks
import ( import (
"context" "context"
"fmt" "fmt"
"time"
"github.com/LazyBachelor/LazyPM/internal/models" "github.com/LazyBachelor/LazyPM/internal/models"
"github.com/LazyBachelor/LazyPM/internal/service" "github.com/LazyBachelor/LazyPM/internal/service"
@@ -13,15 +14,18 @@ import (
const description = `You are tasked with creating a new issue in the project management system. const description = `You are tasked with creating a new issue in the project management system.
This task will test your ability to use the issue creation workflow effectively. This task will test your ability to use the issue creation workflow effectively.
Assign this task to yourself and start creating the issue. Assign this task to yourself and start creating a new issue.
Make sure to fill out all the necessary details, including the title, description, and assignee.` Make sure to fill out all the necessary details, including the title and description.
Once you have created the issue, mark it as closed to complete the task.`
type CreateIssueTask struct { type CreateIssueTask struct {
app *service.App done bool
app *service.App
setupTask *models.Issue
} }
func NewCreateIssueTask(app *service.App) *CreateIssueTask { func NewCreateIssueTask(app *service.App) *CreateIssueTask {
return &CreateIssueTask{app: app} return &CreateIssueTask{app: app, done: false}
} }
func (t *CreateIssueTask) Config() task.Config { func (t *CreateIssueTask) Config() task.Config {
@@ -37,15 +41,14 @@ func (t *CreateIssueTask) Questions(interfaceType task.InterfaceType) taskui.Que
} }
func (t *CreateIssueTask) Setup(ctx context.Context) error { func (t *CreateIssueTask) Setup(ctx context.Context) error {
// Clear existing issues to ensure a clean state for the task
if err := ClearIssues(t.app); err != nil { if err := ClearIssues(t.app); err != nil {
return err return err
} }
issue := models.NewBaseIssue(). t.setupTask = models.NewBaseIssue().
WithTitle("Create a New Issue").WithDescription(description).Build() WithTitle("Create a New Issue").WithDescription(description).Build()
return t.app.Issues.CreateIssue(ctx, &issue, "") return t.app.Issues.CreateIssue(ctx, t.setupTask, "")
} }
func (t *CreateIssueTask) Validate(ctx context.Context) (bool, error) { func (t *CreateIssueTask) Validate(ctx context.Context) (bool, error) {
@@ -54,6 +57,12 @@ func (t *CreateIssueTask) Validate(ctx context.Context) (bool, error) {
return false, err return false, err
} }
/* Not implemented yet, as assigning to self is not supported in the current implementation
if t.setupTask.Assignee != "Me" {
return false, fmt.Errorf("issue not assigned to self")
}
*/
if len(issues) < 2 { if len(issues) < 2 {
return false, fmt.Errorf("issue not created") return false, fmt.Errorf("issue not created")
} }
@@ -78,5 +87,15 @@ func (t *CreateIssueTask) Validate(ctx context.Context) (bool, error) {
return false, fmt.Errorf("issue description is empty") return false, fmt.Errorf("issue description is empty")
} }
return true, nil /* Not implemented yet, as assigning to self is not supported in the current implementation
if createdIssue.Assignee != "Me" {
return false, fmt.Errorf("issue not assigned to self")
}
*/
if createdIssue.Status != models.StatusClosed {
return false, fmt.Errorf("issue status is not closed")
}
return EndTaskWithTimeout(&t.done, "Task completed!", 5*time.Second)
} }