Files
kandev/apps/backend/internal/gitlab/service_issue_query_test.go
T
2026-07-21 23:24:22 +01:00

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)
}
}