71 lines
2.5 KiB
Go
71 lines
2.5 KiB
Go
package github
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestPRBaseIdentityConversionsRetainBaseCommitOID(t *testing.T) {
|
|
const want = "0123456789abcdef0123456789abcdef01234567"
|
|
tests := []struct {
|
|
name string
|
|
pr *PR
|
|
wantBaseSHA string
|
|
}{
|
|
{
|
|
name: "REST",
|
|
wantBaseSHA: want,
|
|
pr: func() *PR {
|
|
var raw patPR
|
|
if err := json.Unmarshal([]byte(`{"number":42,"head":{"ref":"feature","sha":"head","repo":{"full_name":"fork/widgets","clone_url":"https://github.com/fork/widgets.git","owner":{"login":"fork"},"name":"widgets"}},"base":{"ref":"release","sha":"`+want+`","repo":{"full_name":"upstream/widgets","clone_url":"https://github.com/upstream/widgets.git","owner":{"login":"upstream"},"name":"widgets"}}}`), &raw); err != nil {
|
|
t.Fatalf("decode REST pull request: %v", err)
|
|
}
|
|
return convertPatPR(&raw, "upstream", "widgets")
|
|
}(),
|
|
},
|
|
{
|
|
name: "GH CLI",
|
|
pr: func() *PR {
|
|
var raw ghPR
|
|
if err := json.Unmarshal([]byte(`{"number":42,"headRefName":"feature","headRefOid":"head","baseRefName":"release","headRepository":{"name":"widgets","nameWithOwner":"fork/widgets","url":"https://github.com/fork/widgets"},"headRepositoryOwner":{"login":"fork"}}`), &raw); err != nil {
|
|
t.Fatalf("decode GH pull request: %v", err)
|
|
}
|
|
return convertGHPR(&raw, "upstream", "widgets")
|
|
}(),
|
|
},
|
|
{
|
|
name: "GraphQL",
|
|
wantBaseSHA: want,
|
|
pr: func() *PR {
|
|
var raw batchedPRResult
|
|
if err := json.Unmarshal([]byte(`{"state":"OPEN","headRefName":"feature","headRefOid":"head","baseRefName":"release","baseRefOid":"`+want+`","headRepository":{"name":"widgets","nameWithOwner":"fork/widgets","url":"https://github.com/fork/widgets"},"headRepositoryOwner":{"login":"fork"}}`), &raw); err != nil {
|
|
t.Fatalf("decode GraphQL pull request: %v", err)
|
|
}
|
|
return convertBatchedPRResult(&raw, "upstream", "widgets", 42).PR
|
|
}(),
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
var values map[string]any
|
|
encoded, err := json.Marshal(tt.pr)
|
|
if err != nil {
|
|
t.Fatalf("marshal PR: %v", err)
|
|
}
|
|
if err := json.Unmarshal(encoded, &values); err != nil {
|
|
t.Fatalf("decode marshaled PR: %v", err)
|
|
}
|
|
if got, _ := values["base_sha"].(string); got != tt.wantBaseSHA {
|
|
t.Fatalf("base_sha = %q, want %q", got, tt.wantBaseSHA)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestPRBaseGraphQLQueryRequestsBaseRefOID(t *testing.T) {
|
|
if !strings.Contains(prFieldsBlock(), "baseRefOid") {
|
|
t.Fatalf("prFieldsBlock() = %q, want baseRefOid", prFieldsBlock())
|
|
}
|
|
}
|