-
Notifications
You must be signed in to change notification settings - Fork 0
/
issue.go
112 lines (97 loc) · 2.74 KB
/
issue.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package fixtures
import (
"time"
"github.com/Constantine27K/crnt-data-manager/pkg/api/comments"
"github.com/Constantine27K/crnt-data-manager/pkg/api/state/priority"
"github.com/Constantine27K/crnt-data-manager/pkg/api/state/status"
"github.com/Constantine27K/crnt-data-manager/pkg/api/state/template"
desc "github.com/Constantine27K/crnt-data-manager/pkg/api/tasks/issue"
"google.golang.org/protobuf/types/known/timestamppb"
)
type issueOpt func(issue *desc.Issue)
func CreateIssue(opts ...issueOpt) *desc.Issue {
const (
deadline = 24 * time.Hour
sp = 3
payment = 500
)
result := &desc.Issue{
Name: "Test issue",
Type: desc.IssueType_ISSUE_TYPE_TASK,
Description: "test issue",
Author: "kibragimov",
Assigned: "kibragimov",
Template: template.Template_TEMPLATE_DEVELOPMENT,
CreatedAt: timestamppb.Now(),
Deadline: timestamppb.New(time.Now().Add(deadline)),
Status: &status.IssueStatus{
Status: &status.IssueStatus_Development{
Development: &status.IssueStatusDevelopment{
Status: status.Development_STATUS_DEVELOPMENT_BACKLOG,
},
},
},
Priority: priority.Priority_PRIORITY_MEDIUM,
StoryPoints: sp,
Payment: payment,
Comments: &comments.Comments{Items: make([]*comments.Comment, 0)},
}
for _, opt := range opts {
opt(result)
}
return result
}
func CreateChildIssue(opts ...issueOpt) *desc.Issue {
const (
deadline = 24 * time.Hour
sp = 1
)
result := &desc.Issue{
Name: "Child issue",
Type: desc.IssueType_ISSUE_TYPE_SUBTASK,
Description: "child issue",
Author: "kibragimov",
Assigned: "kibragimov",
Template: template.Template_TEMPLATE_DEVELOPMENT,
CreatedAt: timestamppb.Now(),
Deadline: timestamppb.New(time.Now().Add(deadline)),
Status: &status.IssueStatus{
Status: &status.IssueStatus_Development{
Development: &status.IssueStatusDevelopment{
Status: status.Development_STATUS_DEVELOPMENT_IN_PROGRESS,
},
},
},
Priority: priority.Priority_PRIORITY_LOW,
StoryPoints: sp,
Comments: &comments.Comments{Items: make([]*comments.Comment, 0)},
}
for _, opt := range opts {
opt(result)
}
return result
}
func WithComment(author, text string) issueOpt {
return func(issue *desc.Issue) {
issue.Comments.Items = append(issue.Comments.Items, &comments.Comment{
Author: author,
Text: text,
WrittenAt: timestamppb.Now(),
})
}
}
func WithChildren(issue *desc.Issue) issueOpt {
return func(issue *desc.Issue) {
issue.Children = append(issue.Children, issue)
}
}
func WithSprint(id int64) issueOpt {
return func(issue *desc.Issue) {
issue.SprintId = id
}
}
func WithProject(id int64) issueOpt {
return func(issue *desc.Issue) {
issue.ProjectId = id
}
}