impressum_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package config
  2. import (
  3. "bytes"
  4. "errors"
  5. "testing"
  6. )
  7. func TestImpressumValid(t *testing.T) {
  8. for _, cs := range []struct {
  9. err error
  10. inp Impressum
  11. name string
  12. }{
  13. {
  14. name: "basic happy path",
  15. inp: Impressum{
  16. Footer: "<p>Website hosted by Techaro.<p>",
  17. Page: ImpressumPage{
  18. Title: "Techaro Imprint",
  19. Body: "<p>This is an imprint page.</p>",
  20. },
  21. },
  22. err: nil,
  23. },
  24. {
  25. name: "no footer",
  26. inp: Impressum{
  27. Footer: "",
  28. Page: ImpressumPage{
  29. Title: "Techaro Imprint",
  30. Body: "<p>This is an imprint page.</p>",
  31. },
  32. },
  33. err: ErrMissingValue,
  34. },
  35. {
  36. name: "page not valid",
  37. inp: Impressum{
  38. Footer: "test page please ignore",
  39. },
  40. err: ErrMissingValue,
  41. },
  42. } {
  43. t.Run(cs.name, func(t *testing.T) {
  44. if err := cs.inp.Valid(); !errors.Is(err, cs.err) {
  45. t.Logf("want: %v", cs.err)
  46. t.Logf("got: %v", err)
  47. t.Error("validation failed")
  48. }
  49. var buf bytes.Buffer
  50. if err := cs.inp.Render(t.Context(), &buf); err != nil {
  51. t.Errorf("can't render footer: %v", err)
  52. }
  53. if err := cs.inp.Page.Render(t.Context(), &buf); err != nil {
  54. t.Errorf("can't render page: %v", err)
  55. }
  56. })
  57. }
  58. }