mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-19 06:00:41 +01:00
Merge pull request #14935 from JadedRain/master
Some checks are pending
Tests / run-tests (macos-latest) (push) Waiting to run
Tests / run-tests (ubuntu-latest) (push) Waiting to run
Tests / run-tests (windows-latest) (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Artifact (push) Waiting to run
Project Automation / Project board (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Blocked by required conditions
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Blocked by required conditions
Merge Conflict Labeler / main (push) Waiting to run
CodeQL / Analyze (csharp) (push) Waiting to run
Format / format-check (push) Waiting to run
Some checks are pending
Tests / run-tests (macos-latest) (push) Waiting to run
Tests / run-tests (ubuntu-latest) (push) Waiting to run
Tests / run-tests (windows-latest) (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Artifact (push) Waiting to run
Project Automation / Project board (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Blocked by required conditions
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Blocked by required conditions
Merge Conflict Labeler / main (push) Waiting to run
CodeQL / Analyze (csharp) (push) Waiting to run
Format / format-check (push) Waiting to run
Fixed "Deleting media that is still being watched in SyncPlay results in errors"
This commit is contained in:
@@ -206,7 +206,8 @@ namespace Emby.Server.Implementations.SyncPlay
|
||||
foreach (var itemId in queue)
|
||||
{
|
||||
var item = _libraryManager.GetItemById(itemId);
|
||||
if (!item.IsVisibleStandalone(user))
|
||||
|
||||
if (item is null || !item.IsVisibleStandalone(user))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Emby.Server.Implementations.SyncPlay;
|
||||
using Jellyfin.Database.Implementations.Entities;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Session;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Jellyfin.Server.Implementations.Tests.SyncPlay;
|
||||
|
||||
public class GroupTests
|
||||
{
|
||||
public GroupTests()
|
||||
{
|
||||
var mockLogger = new Mock<ILogger<Emby.Server.Implementations.SyncPlay.Group>>();
|
||||
MockLoggerFactory = new Mock<ILoggerFactory>();
|
||||
MockLoggerFactory.Setup(x => x.CreateLogger(It.IsAny<string>())).Returns(mockLogger.Object);
|
||||
|
||||
MockUserManager = new Mock<IUserManager>();
|
||||
MockSessionManager = new Mock<ISessionManager>();
|
||||
MockLibraryManager = new Mock<ILibraryManager>();
|
||||
MockItem = new Mock<BaseItem>();
|
||||
MockItem.Setup(i => i.IsVisibleStandalone(It.IsAny<User>())).Returns(true);
|
||||
}
|
||||
|
||||
private Mock<ILoggerFactory> MockLoggerFactory { get; }
|
||||
|
||||
private Mock<IUserManager> MockUserManager { get; }
|
||||
|
||||
private Mock<ISessionManager> MockSessionManager { get; }
|
||||
|
||||
private Mock<ILibraryManager> MockLibraryManager { get; }
|
||||
|
||||
private Mock<BaseItem> MockItem { get; }
|
||||
|
||||
[Fact]
|
||||
public void HasAccessToPlayQueue_ReturnsTrue_WhenItemsAreVisible()
|
||||
{
|
||||
MockLibraryManager.Setup(m => m.GetItemById(It.IsAny<Guid>())).Returns(MockItem.Object);
|
||||
|
||||
var group = new Emby.Server.Implementations.SyncPlay.Group(MockLoggerFactory.Object, MockUserManager.Object, MockSessionManager.Object, MockLibraryManager.Object);
|
||||
var itemId = Guid.NewGuid();
|
||||
var playlist = new List<Guid> { itemId };
|
||||
group.PlayQueue.Reset();
|
||||
group.PlayQueue.SetPlaylist(playlist);
|
||||
|
||||
Assert.Single(group.PlayQueue.GetPlaylist());
|
||||
Assert.Equal(itemId, group.PlayQueue.GetPlaylist()[0].ItemId);
|
||||
|
||||
var user = new User("test-user", "auth-provider", "pwdreset-provider");
|
||||
var result = group.HasAccessToPlayQueue(user);
|
||||
|
||||
Assert.True(result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasAccessToPlayQueue_ReturnsFalse_WhenLibraryReturnsNullForItem()
|
||||
{
|
||||
MockLibraryManager.Setup(m => m.GetItemById(It.IsAny<Guid>())).Returns((BaseItem?)null);
|
||||
|
||||
Assert.Null(MockLibraryManager.Object.GetItemById(Guid.NewGuid()));
|
||||
|
||||
var group = new Emby.Server.Implementations.SyncPlay.Group(MockLoggerFactory.Object, MockUserManager.Object, MockSessionManager.Object, MockLibraryManager.Object);
|
||||
var itemId = Guid.NewGuid();
|
||||
var playlist = new List<Guid> { itemId };
|
||||
group.PlayQueue.Reset();
|
||||
group.PlayQueue.SetPlaylist(playlist);
|
||||
|
||||
Assert.Single(group.PlayQueue.GetPlaylist());
|
||||
Assert.Equal(itemId, group.PlayQueue.GetPlaylist()[0].ItemId);
|
||||
|
||||
var user = new User("test-user", "auth-provider", "pwdreset-provider");
|
||||
var result = group.HasAccessToPlayQueue(user);
|
||||
|
||||
Assert.False(result);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user