mirror of
https://github.com/muety/wakapi.git
synced 2023-08-10 21:12:56 +03:00
chore: filter model tests
This commit is contained in:
parent
d80c1a4c4b
commit
fe3ba79d54
@ -161,7 +161,7 @@ func (f *Filters) WithProjectLabels(resolve ProjectLabelReverseResolver) *Filter
|
|||||||
return f
|
return f
|
||||||
}
|
}
|
||||||
for _, l := range f.Label {
|
for _, l := range f.Label {
|
||||||
f.Project = append(f.Project, resolve(l)...)
|
f.WithMultiple(SummaryProject, resolve(l))
|
||||||
}
|
}
|
||||||
return f
|
return f
|
||||||
}
|
}
|
||||||
|
160
models/filters_test.go
Normal file
160
models/filters_test.go
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FiltersTestSuite struct {
|
||||||
|
suite.Suite
|
||||||
|
TestAliases []*Alias
|
||||||
|
TestProjectLabels []*ProjectLabel
|
||||||
|
GetAliasReverseResolver func(indices []int) AliasReverseResolver
|
||||||
|
GetProjectLabelReverseResolver func(indices []int) ProjectLabelReverseResolver
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *FiltersTestSuite) SetupSuite() {
|
||||||
|
suite.TestAliases = []*Alias{
|
||||||
|
{
|
||||||
|
Type: SummaryProject,
|
||||||
|
Key: "wakapi",
|
||||||
|
Value: "wakapi-mobile",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Type: SummaryProject,
|
||||||
|
Key: "wakapi",
|
||||||
|
Value: "wakapi-desktop",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Type: SummaryLanguage,
|
||||||
|
Key: "Python",
|
||||||
|
Value: "Python 3",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
suite.TestProjectLabels = []*ProjectLabel{
|
||||||
|
{
|
||||||
|
ProjectKey: "wakapi",
|
||||||
|
Label: "oss",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ProjectKey: "anchr",
|
||||||
|
Label: "oss",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ProjectKey: "business-application",
|
||||||
|
Label: "work",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
suite.GetAliasReverseResolver = func(indices []int) AliasReverseResolver {
|
||||||
|
return func(t uint8, k string) []string {
|
||||||
|
aliases := make([]string, 0, len(indices))
|
||||||
|
for _, j := range indices {
|
||||||
|
if a := suite.TestAliases[j]; a.Type == t && a.Key == k {
|
||||||
|
aliases = append(aliases, a.Value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aliases
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
suite.GetProjectLabelReverseResolver = func(indices []int) ProjectLabelReverseResolver {
|
||||||
|
return func(k string) []string {
|
||||||
|
labels := make([]string, 0, len(indices))
|
||||||
|
for _, j := range indices {
|
||||||
|
if l := suite.TestProjectLabels[j]; l.Label == k {
|
||||||
|
labels = append(labels, l.ProjectKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return labels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFiltersTestSuite(t *testing.T) {
|
||||||
|
suite.Run(t, new(FiltersTestSuite))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *FiltersTestSuite) TestFilters_IsEmpty() {
|
||||||
|
assert.False(suite.T(), NewFiltersWith(SummaryProject, "wakapi").IsEmpty())
|
||||||
|
assert.True(suite.T(), (&Filters{}).IsEmpty())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *FiltersTestSuite) TestFilters_Match() {
|
||||||
|
heartbeats := []*Heartbeat{
|
||||||
|
{Project: "wakapi", Language: "Go"},
|
||||||
|
{Project: "anchr", Language: "Javascript"},
|
||||||
|
}
|
||||||
|
|
||||||
|
sut1 := NewFiltersWith(SummaryProject, "wakapi")
|
||||||
|
assert.True(suite.T(), sut1.Match(heartbeats[0]))
|
||||||
|
assert.False(suite.T(), sut1.Match(heartbeats[1]))
|
||||||
|
|
||||||
|
sut2 := NewFiltersWith(SummaryProject, "Go").With(SummaryLanguage, "JavaScript")
|
||||||
|
assert.False(suite.T(), sut2.Match(heartbeats[0]))
|
||||||
|
assert.False(suite.T(), sut2.Match(heartbeats[1]))
|
||||||
|
|
||||||
|
sut3 := NewFilterWithMultiple(SummaryProject, []string{"wakapi", "anchr"})
|
||||||
|
assert.True(suite.T(), sut3.Match(heartbeats[0]))
|
||||||
|
assert.True(suite.T(), sut3.Match(heartbeats[1]))
|
||||||
|
|
||||||
|
sut4 := &Filters{}
|
||||||
|
assert.True(suite.T(), sut4.Match(heartbeats[0]))
|
||||||
|
assert.True(suite.T(), sut4.Match(heartbeats[1]))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *FiltersTestSuite) TestFilters_One() {
|
||||||
|
sut1 := NewFiltersWith(SummaryLanguage, "Java")
|
||||||
|
ok1, type1, filters1 := sut1.One()
|
||||||
|
assert.True(suite.T(), ok1)
|
||||||
|
assert.Equal(suite.T(), SummaryLanguage, type1)
|
||||||
|
assert.Equal(suite.T(), "Java", filters1[0])
|
||||||
|
|
||||||
|
sut2 := &Filters{}
|
||||||
|
ok2, type2, filters2 := sut2.One()
|
||||||
|
assert.False(suite.T(), ok2)
|
||||||
|
assert.Zero(suite.T(), type2)
|
||||||
|
assert.Empty(suite.T(), filters2)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *FiltersTestSuite) TestFilters_WithAliases() {
|
||||||
|
sut1 := NewFiltersWith(SummaryProject, "wakapi")
|
||||||
|
sut1 = sut1.WithAliases(suite.GetAliasReverseResolver([]int{0, 1, 2}))
|
||||||
|
assert.Len(suite.T(), sut1.Project, 3)
|
||||||
|
assert.Len(suite.T(), sut1.Language, 0)
|
||||||
|
assert.Contains(suite.T(), sut1.Project, "wakapi")
|
||||||
|
assert.Contains(suite.T(), sut1.Project, "wakapi-desktop")
|
||||||
|
assert.Contains(suite.T(), sut1.Project, "wakapi-mobile")
|
||||||
|
|
||||||
|
sut2 := NewFiltersWith(SummaryProject, "wakapi").With(SummaryLanguage, "Python")
|
||||||
|
sut2 = sut2.WithAliases(suite.GetAliasReverseResolver([]int{0, 1, 2}))
|
||||||
|
assert.Len(suite.T(), sut2.Project, 3)
|
||||||
|
assert.Len(suite.T(), sut2.Language, 2)
|
||||||
|
assert.Contains(suite.T(), sut2.Language, "Python")
|
||||||
|
assert.Contains(suite.T(), sut2.Language, "Python 3")
|
||||||
|
|
||||||
|
sut3 := NewFiltersWith(SummaryProject, "foo")
|
||||||
|
sut3 = sut3.WithAliases(suite.GetAliasReverseResolver([]int{0, 1, 2}))
|
||||||
|
assert.Len(suite.T(), sut3.Project, 1)
|
||||||
|
assert.Len(suite.T(), sut3.Language, 0)
|
||||||
|
assert.Contains(suite.T(), sut3.Project, "foo")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (suite *FiltersTestSuite) TestFilters_WithProjectLabels() {
|
||||||
|
sut1 := NewFiltersWith(SummaryProject, "mailwhale").With(SummaryLabel, "oss")
|
||||||
|
sut1 = sut1.WithProjectLabels(suite.GetProjectLabelReverseResolver([]int{0, 1, 2}))
|
||||||
|
assert.Len(suite.T(), sut1.Project, 3)
|
||||||
|
assert.Contains(suite.T(), sut1.Project, "wakapi")
|
||||||
|
assert.Contains(suite.T(), sut1.Project, "anchr")
|
||||||
|
assert.Contains(suite.T(), sut1.Project, "mailwhale")
|
||||||
|
assert.Contains(suite.T(), sut1.Label, "oss")
|
||||||
|
|
||||||
|
sut2 := NewFiltersWith(SummaryLabel, "oss")
|
||||||
|
sut2 = sut2.WithProjectLabels(suite.GetProjectLabelReverseResolver([]int{0, 1, 2}))
|
||||||
|
assert.Len(suite.T(), sut2.Project, 2)
|
||||||
|
assert.Contains(suite.T(), sut2.Project, "wakapi")
|
||||||
|
assert.Contains(suite.T(), sut2.Project, "anchr")
|
||||||
|
assert.Contains(suite.T(), sut2.Label, "oss")
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user