1
0

walker_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package main
  2. import (
  3. "bytes"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. "testing"
  8. )
  9. func TestWalkPackagesExportsAllowedStructsWithoutDIInterfaces(t *testing.T) {
  10. dir := t.TempDir()
  11. source := `package service
  12. type HappLinkGenerator interface {
  13. Generate()
  14. }
  15. type HappLinkResult struct {
  16. EncryptedLink string
  17. }
  18. `
  19. if err := os.WriteFile(filepath.Join(dir, "service.go"), []byte(source), 0o644); err != nil {
  20. t.Fatalf("write service fixture: %v", err)
  21. }
  22. schemas, aliases, err := walkPackages([]packageRequest{{
  23. Path: dir,
  24. StructAllow: setOf("HappLinkResult"),
  25. }})
  26. if err != nil {
  27. t.Fatalf("walk packages: %v", err)
  28. }
  29. var generated bytes.Buffer
  30. if err := emitTypes(&generated, schemas, aliases); err != nil {
  31. t.Fatalf("emit types: %v", err)
  32. }
  33. apiSurface := generated.String()
  34. if !strings.Contains(apiSurface, "export interface HappLinkResult") {
  35. t.Fatalf("generated types omit allowed response schema:\n%s", apiSurface)
  36. }
  37. if strings.Contains(apiSurface, "HappLinkGenerator") {
  38. t.Fatalf("generated types expose DI interface:\n%s", apiSurface)
  39. }
  40. }