41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package test
|
|
|
|
import (
|
|
"go/parser"
|
|
"go/token"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestSeoOutputLayering(t *testing.T) {
|
|
forbidden := []string{"gorm", "net/http", "go-chi", "persistence", "mailer", "api/"}
|
|
files := []string{
|
|
"seoBody.go", "seoRules.go", "ResolveArticleSEO.go", "CheckArticleSEO.go", "ListSitemap.go", "ListArticles.go",
|
|
}
|
|
for _, name := range files {
|
|
parsed, err := parser.ParseFile(token.NewFileSet(), filepath.Join("..", "internal", "infrastructure", "useCases", name), nil, parser.ImportsOnly)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, spec := range parsed.Imports {
|
|
for _, word := range forbidden {
|
|
if strings.Contains(spec.Path.Value, word) {
|
|
t.Errorf("%s imports %s", name, spec.Path.Value)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for _, name := range []string{"seoStatus.go", "seoResolved.go"} {
|
|
parsed, err := parser.ParseFile(token.NewFileSet(), filepath.Join("..", "internal", "domain", "article", name), nil, parser.ImportsOnly)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, spec := range parsed.Imports {
|
|
if strings.Contains(spec.Path.Value, ".") {
|
|
t.Errorf("%s imports %s", name, spec.Path.Value)
|
|
}
|
|
}
|
|
}
|
|
}
|