watch-tool/patterns/repository_test.go

51 lines
1 KiB
Go

package patterns
import (
"os"
"testing"
)
func TestRepository_Load(t *testing.T) {
content := `
patterns:
test_service:
extractors:
- name: "test_pattern"
regex: '^Test (?P<id>\d+) (?P<value>\d+\.\d+)$'
fields:
id: "int"
value: "float"
`
tmpfile, err := os.CreateTemp("", "patterns_test_*.yaml")
if err != nil {
t.Fatal(err)
}
defer os.Remove(tmpfile.Name())
if _, err := tmpfile.Write([]byte(content)); err != nil {
t.Fatal(err)
}
if err := tmpfile.Close(); err != nil {
t.Fatal(err)
}
repo := GetInstance()
err = repo.Load(tmpfile.Name())
if err != nil {
t.Fatalf("Failed to load repository: %v", err)
}
extractors := repo.GetExtractors("test_service")
if len(extractors) != 1 {
t.Errorf("Expected 1 extractor, got %d", len(extractors))
}
ext := extractors[0]
if ext.Name != "test_pattern" {
t.Errorf("Expected name 'test_pattern', got '%s'", ext.Name)
}
if !ext.Pattern.MatchString("Test 123 45.67") {
t.Error("Regex did not match valid string")
}
}