align task with description
add a complete with message in case we need that
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/LazyBachelor/LazyPM/internal/models"
|
||||||
"github.com/LazyBachelor/LazyPM/internal/utils/check"
|
"github.com/LazyBachelor/LazyPM/internal/utils/check"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -12,10 +13,10 @@ const description = `You are tasked with creating a new issue in the project man
|
|||||||
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.
|
||||||
|
|
||||||
Your task:
|
Your task:
|
||||||
1. Create a new issue with a clear title
|
1. Create a new issue with a the title "My first Issue"
|
||||||
2. Add a detailed description explaining what needs to be done
|
2. Add this detailed description "I need to do some coding"
|
||||||
3. Assign the issue to yourself
|
3. Assign the issue to yourself as "Me"
|
||||||
4. Mark the issue as in-progress when you start working on it
|
4. Mark the issue as In Progress when you start working on it
|
||||||
5. Close the issue once you've completed the work
|
5. Close the issue once you've completed the work
|
||||||
|
|
||||||
Make sure to fill out all the necessary details to help others understand the work item.`
|
Make sure to fill out all the necessary details to help others understand the work item.`
|
||||||
@@ -55,6 +56,8 @@ func (t *CreateIssueTask) Setup(ctx context.Context) error {
|
|||||||
return t.app.Issues.CreateIssue(ctx, t.setupIssue, "")
|
return t.app.Issues.CreateIssue(ctx, t.setupIssue, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var isInProgress = false
|
||||||
|
|
||||||
func (t *CreateIssueTask) Validate(ctx context.Context) ValidationFeedback {
|
func (t *CreateIssueTask) Validate(ctx context.Context) ValidationFeedback {
|
||||||
expect := check.NewExpector()
|
expect := check.NewExpector()
|
||||||
|
|
||||||
@@ -63,9 +66,6 @@ func (t *CreateIssueTask) Validate(ctx context.Context) ValidationFeedback {
|
|||||||
return expect.ValidationFeedback
|
return expect.ValidationFeedback
|
||||||
}
|
}
|
||||||
|
|
||||||
expect.NotEmptyString(t.setupIssue.Assignee,
|
|
||||||
fmt.Sprintf("%s is not assigned to anyone", t.setupIssue.ID))
|
|
||||||
|
|
||||||
if len(issues) == 0 {
|
if len(issues) == 0 {
|
||||||
expect.Fail("No new issues created")
|
expect.Fail("No new issues created")
|
||||||
return expect.ValidationFeedback
|
return expect.ValidationFeedback
|
||||||
@@ -73,8 +73,30 @@ func (t *CreateIssueTask) Validate(ctx context.Context) ValidationFeedback {
|
|||||||
|
|
||||||
issue := issues[0]
|
issue := issues[0]
|
||||||
|
|
||||||
expect.Assert(len(issues) < 2, "Multiple issues were created instead of one")
|
expect.Assert(len(issues) < 2, "Multiple issues were created instead of one delete the extra issues and try again")
|
||||||
|
|
||||||
|
expect.NotEmptyString(issue.Title, "Issue title should not be empty")
|
||||||
|
expect.Assert(issue.Title == "My first Issue",
|
||||||
|
fmt.Sprintf("Issue title does not match the expected value 'My first Issue', but was '%s'", issue.Title))
|
||||||
|
|
||||||
expect.NotEmptyString(issue.Description, "Issue description should not be empty")
|
expect.NotEmptyString(issue.Description, "Issue description should not be empty")
|
||||||
|
expect.Assert(issue.Description == "I need to do some coding",
|
||||||
|
fmt.Sprintf("Issue description does not match the expected value 'I need to do some coding', but was '%s'", issue.Description))
|
||||||
|
|
||||||
|
expect.Assert(issue.Assignee == "Me",
|
||||||
|
fmt.Sprintf("Issue should be assigned to 'Me', but was assigned to '%s'", issue.Assignee))
|
||||||
|
|
||||||
|
if issue.Status == models.StatusInProgress || isInProgress {
|
||||||
|
isInProgress = true
|
||||||
|
} else {
|
||||||
|
expect.Fail("Issue should be marked as in-progress when work starts")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !isInProgress {
|
||||||
|
return expect.ValidationFeedback
|
||||||
|
} else if issue.Status != models.StatusClosed {
|
||||||
|
expect.Fail("Issue should be set to Closed once the work is completed")
|
||||||
|
}
|
||||||
|
|
||||||
return expect.Complete()
|
return expect.Complete()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,6 +35,14 @@ func (e *Expector) Complete() ValidationFeedback {
|
|||||||
return e.ValidationFeedback
|
return e.ValidationFeedback
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Expector) CompleteWithMessage(message string) ValidationFeedback {
|
||||||
|
e.Success = len(e.Errors()) == 0
|
||||||
|
if !e.Success {
|
||||||
|
e.Message = message
|
||||||
|
}
|
||||||
|
return e.ValidationFeedback
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Expector) Fail(message string) ValidationFeedback {
|
func (e *Expector) Fail(message string) ValidationFeedback {
|
||||||
e.Checks = append(e.Checks, NewCheck(message, false))
|
e.Checks = append(e.Checks, NewCheck(message, false))
|
||||||
return e.ValidationFeedback
|
return e.ValidationFeedback
|
||||||
|
|||||||
@@ -100,7 +100,9 @@ func startValidationLoop(ctx context.Context, t Tasker, feedbackChan chan Valida
|
|||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
feedback := t.Validate(ctx)
|
feedback := t.Validate(ctx)
|
||||||
if feedback.Success {
|
if feedback.Success {
|
||||||
feedback.Message = "Task completed successfully!"
|
if feedback.Message == "" {
|
||||||
|
feedback.Message = "Task completed successfully! Going back to the survey menu..."
|
||||||
|
}
|
||||||
feedbackChan <- feedback
|
feedbackChan <- feedback
|
||||||
time.Sleep(4 * time.Second)
|
time.Sleep(4 * time.Second)
|
||||||
doneChan <- true
|
doneChan <- true
|
||||||
|
|||||||
Reference in New Issue
Block a user