summaryrefslogtreecommitdiff
path: root/internal/app/loader_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-10-03 19:53:04 +0300
committerPaul Buetow <paul@buetow.org>2025-10-03 19:53:04 +0300
commitdba07073652cb1bbad58d2e82329d07eefe3c12d (patch)
tree79df1afd3837b5efc46880eab9adf58381293dfc /internal/app/loader_test.go
parent0ae149babf5ddf5eda22778b9e5e81567a180561 (diff)
Add tag editing UI and responsive layoutv0.2.2
Diffstat (limited to 'internal/app/loader_test.go')
-rw-r--r--internal/app/loader_test.go34
1 files changed, 32 insertions, 2 deletions
diff --git a/internal/app/loader_test.go b/internal/app/loader_test.go
index 538bca0..843e471 100644
--- a/internal/app/loader_test.go
+++ b/internal/app/loader_test.go
@@ -6,6 +6,8 @@ import (
"runtime"
"testing"
"time"
+
+ "yoga/internal/tags"
)
func TestCollectVideoPathsDetectsMP4(t *testing.T) {
@@ -70,10 +72,13 @@ func TestLoadVideosWithCache(t *testing.T) {
_ = cache.Record(video, info, time.Minute)
progress := &loadProgress{}
progress.Reset()
- videos, pending, err := loadVideos(dir, cache, progress)
+ videos, pending, tagErr, err := loadVideos(dir, cache, progress)
if err != nil {
t.Fatalf("loadVideos: %v", err)
}
+ if tagErr != nil {
+ t.Fatalf("unexpected tag error: %v", tagErr)
+ }
if len(videos) != 1 || len(pending) != 0 {
t.Fatalf("expected cached video without pending: videos=%d pending=%d", len(videos), len(pending))
}
@@ -82,6 +87,28 @@ func TestLoadVideosWithCache(t *testing.T) {
}
}
+func TestLoadVideosReadsTags(t *testing.T) {
+ dir := t.TempDir()
+ videoPath := filepath.Join(dir, "session.mp4")
+ if err := os.WriteFile(videoPath, []byte("x"), 0o644); err != nil {
+ t.Fatalf("write video: %v", err)
+ }
+ metaPath := tags.PathFor(videoPath)
+ if err := os.WriteFile(metaPath, []byte("[\"calm\", \"focus\"]"), 0o644); err != nil {
+ t.Fatalf("write tags: %v", err)
+ }
+ videos, _, tagErr, err := loadVideos(dir, nil, nil)
+ if err != nil {
+ t.Fatalf("loadVideos: %v", err)
+ }
+ if tagErr != nil {
+ t.Fatalf("unexpected tag error: %v", tagErr)
+ }
+ if len(videos) != 1 || len(videos[0].Tags) != 2 {
+ t.Fatalf("expected tags loaded, got %#v", videos)
+ }
+}
+
func TestProbeDurationsCmdHandlesMissingBinary(t *testing.T) {
cmd := probeDurationsCmd("/no/such/file.mp4", nil)
msg := cmd()
@@ -152,10 +179,13 @@ func TestLoadVideosHandlesStatError(t *testing.T) {
if err := os.Symlink(filepath.Join(dir, "missing.mp4"), broken); err != nil {
t.Skipf("symlink unsupported: %v", err)
}
- videos, _, err := loadVideos(dir, nil, nil)
+ videos, _, tagErr, err := loadVideos(dir, nil, nil)
if err != nil {
t.Fatalf("loadVideos: %v", err)
}
+ if tagErr != nil {
+ t.Fatalf("unexpected tag error: %v", tagErr)
+ }
if len(videos) != 1 || videos[0].Err == nil {
t.Fatalf("expected stat error recorded, got %+v", videos)
}