-
Notifications
You must be signed in to change notification settings - Fork 12
/
command_test.go
86 lines (72 loc) · 2.15 KB
/
command_test.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
package main_test
import (
"net/http"
"net/http/httptest"
"github.com/salemove/github-review-helper/mocks"
"github.com/stretchr/testify/mock"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
func ForCollaborator(context WebhookTestContext, repoOwner, repoName, user string, test func()) {
var (
handle = context.Handle
responseRecorder *httptest.ResponseRecorder
repositories *mocks.Repositories
issues *mocks.Issues
)
BeforeEach(func() {
responseRecorder = *context.ResponseRecorder
repositories = *context.Repositories
issues = *context.Issues
})
Context("with collaborator status check failing", func() {
BeforeEach(func() {
repositories.
On("IsCollaborator", anyContext, repoOwner, repoName, user).
Return(false, emptyResponse, errArbitrary)
})
It("fails with a gateway error", func() {
handle()
Expect(responseRecorder.Code).To(Equal(http.StatusBadGateway))
})
})
Context("with user not being a collaborator", func() {
BeforeEach(func() {
repositories.
On("IsCollaborator", anyContext, repoOwner, repoName, user).
Return(false, emptyResponse, noError)
})
Context("with sending a comment failing", func() {
BeforeEach(func() {
issues.
On("CreateComment", anyContext, repoOwner, repoName,
issueNumber, mock.MatchedBy(commentMentioning(user))).
Return(emptyResult, emptyResponse, errArbitrary)
})
It("fails with a gateway error", func() {
handle()
Expect(responseRecorder.Code).To(Equal(http.StatusBadGateway))
})
})
Context("with sending a comment succeeding", func() {
BeforeEach(func() {
issues.
On("CreateComment", anyContext, repoOwner, repoName,
issueNumber, mock.MatchedBy(commentMentioning(user))).
Return(emptyResult, emptyResponse, noError)
})
It("returns 200 OK, ignoring the command", func() {
handle()
Expect(responseRecorder.Code).To(Equal(http.StatusOK))
})
})
})
Context("with user being a collaborator", func() {
BeforeEach(func() {
repositories.
On("IsCollaborator", anyContext, repositoryOwner, repositoryName, user).
Return(true, emptyResponse, noError)
})
test()
})
}