diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/service/share.go | 10 | ||||
| -rw-r--r-- | internal/service/share_test.go | 53 |
2 files changed, 61 insertions, 2 deletions
diff --git a/internal/service/share.go b/internal/service/share.go index 2b917f7..9032f8c 100644 --- a/internal/service/share.go +++ b/internal/service/share.go @@ -147,6 +147,12 @@ func (s *shareService) GetSharedMedia(ctx context.Context, token string) (*GetSh return nil, ErrMediaNotFound } + hasThumb := media.ThumbnailPath != "" + thumbURL := "" + if hasThumb { + thumbURL = fmt.Sprintf("/s/%s/thumbnail", token) + } + return &GetSharedMediaResult{ Media: &SharedMediaView{ ID: media.ID, @@ -158,10 +164,10 @@ func (s *shareService) GetSharedMedia(ctx context.Context, token string) (*GetSh Bitrate: media.Bitrate, FileSizeBytes: media.FileSizeBytes, }, - HasThumb: media.ThumbnailPath != "", + HasThumb: hasThumb, StreamURL: fmt.Sprintf("/s/%s/stream", token), DownloadURL: fmt.Sprintf("/s/%s/download", token), - ThumbURL: fmt.Sprintf("/s/%s/thumbnail", token), + ThumbURL: thumbURL, }, nil } diff --git a/internal/service/share_test.go b/internal/service/share_test.go index a37b62f..ab76414 100644 --- a/internal/service/share_test.go +++ b/internal/service/share_test.go @@ -74,6 +74,59 @@ func TestShareService_GetSharedThumbnail(t *testing.T) { } } +func TestShareService_GetSharedMedia_ThumbnailURL(t *testing.T) { + ctx := context.Background() + now := newMockClock().T + + tests := []struct { + name string + thumbnail string + wantHasThumb bool + wantThumbURL string + }{ + { + name: "with thumbnail", + thumbnail: "/tmp/thumb.jpg", + wantHasThumb: true, + wantThumbURL: "/s/abc/thumbnail", + }, + { + name: "without thumbnail", + thumbnail: "", + wantHasThumb: false, + wantThumbURL: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + store := &repository.MockStore{ + ShareRepo: repository.MockShareRepo{ + GetShareByTokenFunc: func(ctx context.Context, token string) (*model.Share, error) { + return &model.Share{Token: "abc", MediaID: 1, ExpiresAt: now.Add(time.Hour)}, nil + }, + }, + MediaRepo: repository.MockMediaRepo{ + GetMediaByIDFunc: func(ctx context.Context, id int64) (*model.Media, error) { + return &model.Media{ID: 1, ThumbnailPath: tt.thumbnail}, nil + }, + }, + } + svc := NewShareService(store, newMockClock(), &accessHelper{store: store}) + got, err := svc.GetSharedMedia(ctx, "abc") + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if got.HasThumb != tt.wantHasThumb { + t.Fatalf("HasThumb = %v, want %v", got.HasThumb, tt.wantHasThumb) + } + if got.ThumbURL != tt.wantThumbURL { + t.Fatalf("ThumbURL = %q, want %q", got.ThumbURL, tt.wantThumbURL) + } + }) + } +} + func TestShareService_ListMyShares(t *testing.T) { ctx := context.Background() now := newMockClock().T |
