Something went wrong. Try again.
Monorepo for Tangled
Something went wrong. Try again.
Go
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374package pulls
import ( "net/url" "testing"
"tangled.org/core/appview/models" "tangled.org/core/appview/searchquery")
func TestResolveStateFilter(t *testing.T) { tests := []struct { name string params url.Values wantState *models.PullState wantQuery string }{ { name: "defaults to open without query parameter", params: url.Values{}, wantState: pullStateForTest(models.PullOpen), wantQuery: "state:open", }, { name: "explicit state overrides query state", params: url.Values{"state": {"closed"}, "q": {"state:merged author:alice.test"}}, wantState: pullStateForTest(models.PullClosed), wantQuery: "state:closed author:alice.test", }, { name: "uses state from query", params: url.Values{"q": {"state:merged"}}, wantState: pullStateForTest(models.PullMerged), wantQuery: "state:merged", }, { name: "empty query requests all states", params: url.Values{"q": {""}}, wantState: nil, wantQuery: "", }, { name: "unknown state remains in query without filtering", params: url.Values{"state": {"draft"}}, wantState: nil, wantQuery: "state:draft", }, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { query := searchquery.Parse(tt.params.Get("q")) gotState := ResolveStateFilter(tt.params, query) if !equalPullState(gotState, tt.wantState) { t.Fatalf("state = %v, want %v", gotState, tt.wantState) } if got := query.String(); got != tt.wantQuery { t.Fatalf("query = %q, want %q", got, tt.wantQuery) } }) }}
func pullStateForTest(state models.PullState) *models.PullState { return &state}
func equalPullState(a, b *models.PullState) bool { if a == nil || b == nil { return a == b } return *a == *b}