68 lines
2.2 KiB
Go
68 lines
2.2 KiB
Go
package gitlab
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
type captureIssueQueryClient struct {
|
|
*MockClient
|
|
filter string
|
|
customQuery string
|
|
listCalls int
|
|
}
|
|
|
|
func (c *captureIssueQueryClient) ListIssues(_ context.Context, filter, customQuery string) ([]*Issue, error) {
|
|
c.filter = filter
|
|
c.customQuery = customQuery
|
|
c.listCalls++
|
|
return nil, nil
|
|
}
|
|
|
|
func TestFetchIssuesRejectsEmptyAuthenticatedUsernameBeforeListing(t *testing.T) {
|
|
client := &captureIssueQueryClient{MockClient: NewMockClient(DefaultHost)}
|
|
client.SetUser("")
|
|
svc := NewService(DefaultHost, client, "mock", nil, newTestLogger(t))
|
|
svc.workspaceClients["ws-1"] = client
|
|
|
|
issues, err := svc.fetchIssues(context.Background(), &IssueWatch{WorkspaceID: "ws-1"})
|
|
if err == nil || !strings.Contains(err.Error(), "username") {
|
|
t.Fatalf("err = %v, want missing username error", err)
|
|
}
|
|
if len(issues) != 0 || client.listCalls != 0 {
|
|
t.Fatalf("issues=%v ListIssues calls=%d, want none", issues, client.listCalls)
|
|
}
|
|
}
|
|
|
|
func TestFetchIssuesDefaultsToAuthenticatedAssignee(t *testing.T) {
|
|
client := &captureIssueQueryClient{MockClient: NewMockClient(DefaultHost)}
|
|
client.SetUser("issue owner")
|
|
svc := NewService(DefaultHost, client, "mock", nil, newTestLogger(t))
|
|
svc.workspaceClients["ws-1"] = client
|
|
|
|
if _, err := svc.fetchIssues(context.Background(), &IssueWatch{WorkspaceID: "ws-1"}); err != nil {
|
|
t.Fatalf("fetch issues: %v", err)
|
|
}
|
|
if !strings.Contains(client.filter, "assignee_username=issue+owner") {
|
|
t.Fatalf("filter = %q, want authenticated assignee", client.filter)
|
|
}
|
|
if client.customQuery != "" {
|
|
t.Fatalf("custom query = %q, want empty", client.customQuery)
|
|
}
|
|
}
|
|
|
|
func TestFetchIssuesUsesExplicitCustomQueryWithoutImplicitAssignee(t *testing.T) {
|
|
client := &captureIssueQueryClient{MockClient: NewMockClient(DefaultHost)}
|
|
svc := NewService(DefaultHost, client, "mock", nil, newTestLogger(t))
|
|
svc.workspaceClients["ws-1"] = client
|
|
custom := "state=opened&assignee_username=someone-else"
|
|
|
|
if _, err := svc.fetchIssues(context.Background(), &IssueWatch{WorkspaceID: "ws-1", CustomQuery: custom}); err != nil {
|
|
t.Fatalf("fetch issues: %v", err)
|
|
}
|
|
if client.filter != "" || client.customQuery != custom {
|
|
t.Fatalf("filter=%q custom=%q", client.filter, client.customQuery)
|
|
}
|
|
}
|