package webpages import ( "io" "io/fs" "os" "path" "testing" "git.aetherial.dev/aeth/keiji/pkg/env" "github.com/stretchr/testify/assert" ) func TestNewContentLayer(t *testing.T) { type testcase struct { input ServiceOption want fs.FS } for _, tc := range []testcase{ { input: EMBED, want: content, }, { input: FILESYSTEM, want: FilesystemWebpages{Webroot: path.Base(os.Getenv(env.WEB_ROOT))}, }, } { got := NewContentLayer(tc.input) assert.Equal(t, tc.want, got) } } func TestOpen(t *testing.T) { type testcase struct { input string dir string createFile string data []byte err error } for _, tc := range []testcase{ { input: "testfile.txt", dir: t.TempDir(), createFile: "testfile.txt", data: []byte("testdataetcabc123"), err: nil, }, { input: "this_cant_be_indexed.csv", dir: t.TempDir(), createFile: "test", data: []byte("testdatagdfsagfdsbhs"), err: os.ErrNotExist, }, } { os.WriteFile(path.Join(tc.dir, tc.createFile), tc.data, os.ModePerm) testFs := FilesystemWebpages{Webroot: tc.dir} fh, err := testFs.Open(tc.input) if err != nil { assert.Equal(t, tc.err, err) } else { b, _ := io.ReadAll(fh) assert.Equal(t, tc.data, b) } } } func TestReadToString(t *testing.T) { testFs := FilesystemWebpages{Webroot: t.TempDir()} filename := "testfile.txt" testFile := path.Join(testFs.Webroot, filename) data := []byte("abc123xyz098") os.WriteFile(testFile, data, os.ModePerm) got := ReadToString(testFs, filename) assert.Equal(t, string(data), got) } func TestVideoHighlightUsesCardHover(t *testing.T) { template := ReadToString(content, "html/digital_art.html") css := ReadToString(content, "cdn/custom.css") for _, want := range []string{"media-card", "video-highlight", "autoplay muted loop", "{{ .Title }}", "{{ .Desc }}"} { assert.Contains(t, template, want) } for _, want := range []string{".media-card:hover .video-highlight", ".media-card:focus-within .video-highlight", "pointer-events: auto", "opacity: 1"} { assert.Contains(t, css, want) } }