diff --git a/pkg/model/test_case.go b/pkg/model/test_case.go new file mode 100644 index 0000000..c7d1bf1 --- /dev/null +++ b/pkg/model/test_case.go @@ -0,0 +1,129 @@ +// Copyright 2021 Diego Lima. All rights reserved. + +// Use of this source code is governed by a Apache license. +// license that can be found in the LICENSE file. + +package model + +import ( + "bytes" + "fmt" + "regexp" +) + +// Result represents the result of a test case. +type Result struct { + Title string + Passed bool + Body string +} + +// IsNamePatternValid check if the pull request name is valid. +func (cfg *Layout) IsNamePatternValid(name string) *Result { + fmt.Println(cfg) + if len(cfg.PullRequest.TestSuite.NamePattern) > 0 { + match, _ := regexp.MatchString(cfg.PullRequest.TestSuite.NamePattern, name) + var body string + if !match { + body = fmt.Sprintf("The pull request format should be: [%s]", cfg.PullRequest.TestSuite.NamePattern) + } + return &Result{ + Title: "Pull request pattern", + Passed: match, + Body: body, + } + } + return &Result{} +} + +// HasReviewers check if the pull request has reviewers. +func (cfg *Layout) HasReviewers(hasReviewers bool) *Result { + if cfg.PullRequest.TestSuite.Reviewers { + if !hasReviewers { + return &Result{ + Title: "Reviewers", + Passed: false, + Body: "Must have at least one reviewer", + } + } + return &Result{ + Title: "Reviewers", + Passed: true, + } + } + return &Result{} +} + +// HasAssignees check if the pull request has assignees. +func (cfg *Layout) HasAssignees(hasAssignees bool) *Result { + if cfg.PullRequest.TestSuite.Assignees { + if !hasAssignees { + return &Result{ + Title: "Assignees", + Passed: false, + Body: "Must have at least one assignee", + } + } + return &Result{ + Title: "Assignees", + Passed: true, + } + } + return &Result{} +} + +// HasLabels check if the pull request has labels. +func (cfg *Layout) HasLabels(hasLabels bool) *Result { + if cfg.PullRequest.TestSuite.Assignees { + if !hasLabels { + return &Result{ + Title: "Labels", + Passed: false, + Body: "Must have at least one label", + } + } + return &Result{ + Title: "Labels", + Passed: true, + } + } + return &Result{} +} + +func (cfg *Layout) GetOverralResults(results []*Result) string { + var title string + var body bytes.Buffer + overralResults := cfg.AllResultsPassed(results) + if overralResults { + title = `