package tests import ( "context" "errors" "github.com/navidrome/navidrome/model" ) type MockPlayQueueRepo struct { model.PlayQueueRepository Queue *model.PlayQueue Err bool LastCols []string } func (m *MockPlayQueueRepo) Store(_ context.Context, q *model.PlayQueue, cols ...string) error { if m.Err { return errors.New("error") } copyItems := make(model.MediaFiles, len(q.Items)) copy(copyItems, q.Items) qCopy := *q qCopy.Items = copyItems m.Queue = &qCopy m.LastCols = cols return nil } func (m *MockPlayQueueRepo) RetrieveWithMediaFiles(_ context.Context, userId string) (*model.PlayQueue, error) { if m.Err { return nil, errors.New("error") } if m.Queue == nil || m.Queue.UserID != userId { return nil, model.ErrNotFound } copyItems := make(model.MediaFiles, len(m.Queue.Items)) copy(copyItems, m.Queue.Items) qCopy := *m.Queue qCopy.Items = copyItems return &qCopy, nil } func (m *MockPlayQueueRepo) Retrieve(_ context.Context, userId string) (*model.PlayQueue, error) { if m.Err { return nil, errors.New("error") } if m.Queue == nil || m.Queue.UserID != userId { return nil, model.ErrNotFound } copyItems := make(model.MediaFiles, len(m.Queue.Items)) for i, t := range m.Queue.Items { copyItems[i] = model.MediaFile{ID: t.ID} } qCopy := *m.Queue qCopy.Items = copyItems return &qCopy, nil } func (m *MockPlayQueueRepo) Clear(_ context.Context, userId string) error { if m.Err { return errors.New("error") } m.Queue = nil return nil }