pages_test.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package webpages
  2. import (
  3. "io"
  4. "io/fs"
  5. "os"
  6. "path"
  7. "testing"
  8. "git.aetherial.dev/aeth/keiji/pkg/env"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestNewContentLayer(t *testing.T) {
  12. type testcase struct {
  13. input ServiceOption
  14. want fs.FS
  15. }
  16. for _, tc := range []testcase{
  17. {
  18. input: EMBED,
  19. want: content,
  20. },
  21. {
  22. input: FILESYSTEM,
  23. want: FilesystemWebpages{Webroot: path.Base(os.Getenv(env.WEB_ROOT))},
  24. },
  25. } {
  26. got := NewContentLayer(tc.input)
  27. assert.Equal(t, tc.want, got)
  28. }
  29. }
  30. func TestOpen(t *testing.T) {
  31. type testcase struct {
  32. input string
  33. dir string
  34. createFile string
  35. data []byte
  36. err error
  37. }
  38. for _, tc := range []testcase{
  39. {
  40. input: "testfile.txt",
  41. dir: t.TempDir(),
  42. createFile: "testfile.txt",
  43. data: []byte("testdataetcabc123"),
  44. err: nil,
  45. },
  46. {
  47. input: "this_cant_be_indexed.csv",
  48. dir: t.TempDir(),
  49. createFile: "test",
  50. data: []byte("testdatagdfsagfdsbhs"),
  51. err: os.ErrNotExist,
  52. },
  53. } {
  54. os.WriteFile(path.Join(tc.dir, tc.createFile), tc.data, os.ModePerm)
  55. testFs := FilesystemWebpages{Webroot: tc.dir}
  56. fh, err := testFs.Open(tc.input)
  57. if err != nil {
  58. assert.Equal(t, tc.err, err)
  59. } else {
  60. b, _ := io.ReadAll(fh)
  61. assert.Equal(t, tc.data, b)
  62. }
  63. }
  64. }
  65. func TestReadToString(t *testing.T) {
  66. testFs := FilesystemWebpages{Webroot: t.TempDir()}
  67. filename := "testfile.txt"
  68. testFile := path.Join(testFs.Webroot, filename)
  69. data := []byte("abc123xyz098")
  70. os.WriteFile(testFile, data, os.ModePerm)
  71. got := ReadToString(testFs, filename)
  72. assert.Equal(t, string(data), got)
  73. }
  74. func TestVideoHighlightUsesCardHover(t *testing.T) {
  75. template := ReadToString(content, "html/digital_art.html")
  76. css := ReadToString(content, "cdn/custom.css")
  77. for _, want := range []string{"media-card", "video-highlight", "autoplay muted loop", "{{ .Title }}", "{{ .Desc }}"} {
  78. assert.Contains(t, template, want)
  79. }
  80. for _, want := range []string{".media-card:hover .video-highlight", ".media-card:focus-within .video-highlight", "pointer-events: auto", "opacity: 1"} {
  81. assert.Contains(t, css, want)
  82. }
  83. }