56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package angulardetectorsprovider
|
|
|
|
import (
|
|
"regexp"
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana/pkg/plugins/manager/loader/angular/angulardetector"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGCOMPatterns(t *testing.T) {
|
|
t.Run("angularDetector", func(t *testing.T) {
|
|
type tc struct {
|
|
name string
|
|
pattern GCOMPattern
|
|
exp func(t *testing.T, d angulardetector.AngularDetector)
|
|
expError error
|
|
}
|
|
for _, c := range []tc{
|
|
{
|
|
name: "contains",
|
|
pattern: GCOMPattern{Name: "test", Pattern: "pattern", Type: GCOMPatternTypeContains},
|
|
exp: func(t *testing.T, d angulardetector.AngularDetector) {
|
|
require.Equal(t, &angulardetector.ContainsBytesDetector{Pattern: []byte("pattern")}, d)
|
|
},
|
|
},
|
|
{
|
|
name: "regex",
|
|
pattern: GCOMPattern{Name: "test", Pattern: `[0-9]+`, Type: GCOMPatternTypeRegex},
|
|
exp: func(t *testing.T, d angulardetector.AngularDetector) {
|
|
require.Equal(t, &angulardetector.RegexDetector{Regex: regexp.MustCompile(`[0-9]+`)}, d)
|
|
},
|
|
},
|
|
{
|
|
name: "invalid regex returns errInvalidRegex",
|
|
pattern: GCOMPattern{Name: "test", Pattern: `[`, Type: GCOMPatternTypeRegex},
|
|
expError: errInvalidRegex,
|
|
},
|
|
{
|
|
name: "invalid type returns errUnknownPatternType",
|
|
pattern: GCOMPattern{Name: "test", Pattern: "abc", Type: "unknown"},
|
|
expError: errUnknownPatternType,
|
|
},
|
|
} {
|
|
t.Run(c.name, func(t *testing.T) {
|
|
d, err := c.pattern.angularDetector()
|
|
if c.expError != nil {
|
|
require.ErrorIs(t, err, c.expError)
|
|
} else {
|
|
c.exp(t, d)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|