refactor namespaces and imports (#670)
* re-namespace * optimize usings * more usings * more of the same * more implicit/global usings * cleanup all usings * minor fixes
This commit is contained in:
@@ -1,211 +1,207 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using System.Runtime.InteropServices;
|
||||
using ErsatzTV.Core.Domain;
|
||||
using ErsatzTV.Core.Interfaces.Repositories;
|
||||
using ErsatzTV.Core.Interfaces.Runtime;
|
||||
using ErsatzTV.Core.Jellyfin;
|
||||
using FluentAssertions;
|
||||
using LanguageExt;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace ErsatzTV.Core.Tests.Jellyfin
|
||||
namespace ErsatzTV.Core.Tests.Jellyfin;
|
||||
|
||||
[TestFixture]
|
||||
public class JellyfinPathReplacementServiceTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class JellyfinPathReplacementServiceTests
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvWindows()
|
||||
{
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvWindows()
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
new()
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"C:\Something\Some Shared Folder",
|
||||
LocalPath = @"C:\Something Else\Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
Id = 1,
|
||||
JellyfinPath = @"C:\Something\Some Shared Folder",
|
||||
LocalPath = @"C:\Something Else\Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(true);
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(true);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"C:\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"C:\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"C:\Something Else\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvLinux()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"C:\Something\Some Shared Folder",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"C:\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvLinux_UncPath()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"\\192.168.1.100\Something\Some Shared Folder",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"\\192.168.1.100\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvLinux_UncPathWithTrailingSlash()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"\\192.168.1.100\Something\Some Shared Folder\",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder/",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"\\192.168.1.100\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinLinux_To_EtvWindows()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"/mnt/something/Some Shared Folder",
|
||||
LocalPath = @"C:\Something Else\Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Linux" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(true);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"/mnt/something/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"C:\Something Else\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinLinux_To_EtvLinux()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"/mnt/something/Some Shared Folder",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Linux" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"/mnt/something/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
result.Should().Be(@"C:\Something Else\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvLinux()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"C:\Something\Some Shared Folder",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"C:\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvLinux_UncPath()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"\\192.168.1.100\Something\Some Shared Folder",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"\\192.168.1.100\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinWindows_To_EtvLinux_UncPathWithTrailingSlash()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"\\192.168.1.100\Something\Some Shared Folder\",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder/",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Windows" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"\\192.168.1.100\Something\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinLinux_To_EtvWindows()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"/mnt/something/Some Shared Folder",
|
||||
LocalPath = @"C:\Something Else\Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Linux" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(true);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"/mnt/something/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"C:\Something Else\Some Shared Folder\Some Movie\Some Movie.mkv");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task JellyfinLinux_To_EtvLinux()
|
||||
{
|
||||
var replacements = new List<JellyfinPathReplacement>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = 1,
|
||||
JellyfinPath = @"/mnt/something/Some Shared Folder",
|
||||
LocalPath = @"/mnt/something else/Some Shared Folder",
|
||||
JellyfinMediaSource = new JellyfinMediaSource { OperatingSystem = "Linux" }
|
||||
}
|
||||
};
|
||||
|
||||
var repo = new Mock<IMediaSourceRepository>();
|
||||
repo.Setup(x => x.GetJellyfinPathReplacementsByLibraryId(It.IsAny<int>())).Returns(replacements.AsTask());
|
||||
|
||||
var runtime = new Mock<IRuntimeInfo>();
|
||||
runtime.Setup(x => x.IsOSPlatform(OSPlatform.Windows)).Returns(false);
|
||||
|
||||
var service = new JellyfinPathReplacementService(
|
||||
repo.Object,
|
||||
runtime.Object,
|
||||
new Mock<ILogger<JellyfinPathReplacementService>>().Object);
|
||||
|
||||
string result = await service.GetReplacementJellyfinPath(
|
||||
0,
|
||||
@"/mnt/something/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
|
||||
result.Should().Be(@"/mnt/something else/Some Shared Folder/Some Movie/Some Movie.mkv");
|
||||
}
|
||||
}
|
||||
@@ -1,121 +1,118 @@
|
||||
using System.Collections.Generic;
|
||||
using ErsatzTV.Core.Domain;
|
||||
using ErsatzTV.Core.Domain;
|
||||
using ErsatzTV.Core.Jellyfin;
|
||||
using FluentAssertions;
|
||||
using Flurl;
|
||||
using NUnit.Framework;
|
||||
using static LanguageExt.Prelude;
|
||||
|
||||
namespace ErsatzTV.Core.Tests.Jellyfin
|
||||
namespace ErsatzTV.Core.Tests.Jellyfin;
|
||||
|
||||
public class JellyfinUrlTests
|
||||
{
|
||||
public class JellyfinUrlTests
|
||||
[Test]
|
||||
public void Should_Work_Without_Trailing_Slash()
|
||||
{
|
||||
[Test]
|
||||
public void Should_Work_Without_Trailing_Slash()
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server/";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Port_Without_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server:1000";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server:1000/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Port_With_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server:1000/";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server:1000/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Path_Prefix_Without_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server/jellyfin";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/jellyfin/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Path_Prefix_With_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server/jellyfin/";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/jellyfin/Items/2/Images/3?tag=4");
|
||||
}
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/Items/2/Images/3?tag=4");
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server/";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Port_Without_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server:1000";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server:1000/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Port_With_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server:1000/";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server:1000/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Path_Prefix_Without_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server/jellyfin";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/jellyfin/Items/2/Images/3?tag=4");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Should_Work_With_Path_Prefix_With_Trailing_Slash()
|
||||
{
|
||||
var artwork = "jellyfin://Items/2/Images/3?tag=4";
|
||||
var address = "https://some.jellyfin.server/jellyfin/";
|
||||
var mediaSource = new JellyfinMediaSource
|
||||
{
|
||||
Connections = new List<JellyfinConnection>
|
||||
{
|
||||
new() { Address = address }
|
||||
}
|
||||
};
|
||||
|
||||
Url url = JellyfinUrl.ForArtwork(Some(mediaSource), artwork);
|
||||
|
||||
url.ToString().Should().Be("https://some.jellyfin.server/jellyfin/Items/2/Images/3?tag=4");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user