120 lines
2.6 KiB
Go
120 lines
2.6 KiB
Go
|
package github
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
gh "github.com/google/go-github/github"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func TestSplitRepositoryNameWithWorkingExample(t *testing.T) {
|
||
|
var validRepositoryNames = []struct {
|
||
|
fullName string
|
||
|
owner string
|
||
|
repository string
|
||
|
}{
|
||
|
{"influxdata/telegraf", "influxdata", "telegraf"},
|
||
|
{"influxdata/influxdb", "influxdata", "influxdb"},
|
||
|
{"rawkode/saltstack-dotfiles", "rawkode", "saltstack-dotfiles"},
|
||
|
}
|
||
|
|
||
|
for _, tt := range validRepositoryNames {
|
||
|
t.Run(tt.fullName, func(t *testing.T) {
|
||
|
owner, repository, _ := splitRepositoryName(tt.fullName)
|
||
|
|
||
|
require.Equal(t, tt.owner, owner)
|
||
|
require.Equal(t, tt.repository, repository)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestSplitRepositoryNameWithNoSlash(t *testing.T) {
|
||
|
var invalidRepositoryNames = []string{
|
||
|
"influxdata-influxdb",
|
||
|
}
|
||
|
|
||
|
for _, tt := range invalidRepositoryNames {
|
||
|
t.Run(tt, func(t *testing.T) {
|
||
|
_, _, err := splitRepositoryName(tt)
|
||
|
|
||
|
require.NotNil(t, err)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestGetLicenseWhenExists(t *testing.T) {
|
||
|
licenseName := "MIT"
|
||
|
license := gh.License{Name: &licenseName}
|
||
|
repository := gh.Repository{License: &license}
|
||
|
|
||
|
getLicenseReturn := getLicense(&repository)
|
||
|
|
||
|
require.Equal(t, "MIT", getLicenseReturn)
|
||
|
}
|
||
|
|
||
|
func TestGetLicenseWhenMissing(t *testing.T) {
|
||
|
repository := gh.Repository{}
|
||
|
|
||
|
getLicenseReturn := getLicense(&repository)
|
||
|
|
||
|
require.Equal(t, "None", getLicenseReturn)
|
||
|
}
|
||
|
|
||
|
func TestGetTags(t *testing.T) {
|
||
|
licenseName := "MIT"
|
||
|
license := gh.License{Name: &licenseName}
|
||
|
|
||
|
ownerName := "influxdata"
|
||
|
owner := gh.User{Login: &ownerName}
|
||
|
|
||
|
fullName := "influxdata/influxdb"
|
||
|
repositoryName := "influxdb"
|
||
|
|
||
|
language := "Go"
|
||
|
|
||
|
repository := gh.Repository{
|
||
|
FullName: &fullName,
|
||
|
Name: &repositoryName,
|
||
|
License: &license,
|
||
|
Owner: &owner,
|
||
|
Language: &language,
|
||
|
}
|
||
|
|
||
|
getTagsReturn := getTags(&repository)
|
||
|
|
||
|
correctTagsReturn := map[string]string{
|
||
|
"owner": ownerName,
|
||
|
"name": repositoryName,
|
||
|
"language": language,
|
||
|
"license": licenseName,
|
||
|
}
|
||
|
|
||
|
require.Equal(t, true, reflect.DeepEqual(getTagsReturn, correctTagsReturn))
|
||
|
}
|
||
|
|
||
|
func TestGetFields(t *testing.T) {
|
||
|
stars := 1
|
||
|
forks := 2
|
||
|
openIssues := 3
|
||
|
size := 4
|
||
|
|
||
|
repository := gh.Repository{
|
||
|
StargazersCount: &stars,
|
||
|
ForksCount: &forks,
|
||
|
OpenIssuesCount: &openIssues,
|
||
|
Size: &size,
|
||
|
}
|
||
|
|
||
|
getFieldsReturn := getFields(&repository)
|
||
|
|
||
|
correctFieldReturn := make(map[string]interface{})
|
||
|
|
||
|
correctFieldReturn["stars"] = 1
|
||
|
correctFieldReturn["forks"] = 2
|
||
|
correctFieldReturn["open_issues"] = 3
|
||
|
correctFieldReturn["size"] = 4
|
||
|
|
||
|
require.Equal(t, true, reflect.DeepEqual(getFieldsReturn, correctFieldReturn))
|
||
|
}
|