129 lines
3.6 KiB
C#
129 lines
3.6 KiB
C#
using TeleWave.Domain.Library;
|
|
using Xunit;
|
|
|
|
namespace TeleWave.Domain.Tests.Library;
|
|
|
|
public class ShowTests
|
|
{
|
|
[Fact]
|
|
public void Create_NormalizesOriginalName()
|
|
{
|
|
var s = Show.Create("Симпсоны", ShowKind.Series, "desc", " The Simpsons ");
|
|
|
|
Assert.Equal("Симпсоны", s.Name);
|
|
Assert.Equal("The Simpsons", s.OriginalName);
|
|
Assert.Equal(ShowKind.Series, s.Kind);
|
|
Assert.Equal("desc", s.Description);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_BlankOriginalName_BecomesNull()
|
|
{
|
|
var s = Show.Create("X", ShowKind.Single, originalName: " ");
|
|
Assert.Null(s.OriginalName);
|
|
}
|
|
|
|
[Fact]
|
|
public void RenameAndSetName_ChangeDisplayName()
|
|
{
|
|
var s = Show.Create("A", ShowKind.Series);
|
|
s.Rename("B", "d");
|
|
Assert.Equal("B", s.Name);
|
|
Assert.Equal("d", s.Description);
|
|
|
|
s.SetName("C");
|
|
Assert.Equal("C", s.Name);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetOriginalName_TrimsOrClears()
|
|
{
|
|
var s = Show.Create("A", ShowKind.Series);
|
|
s.SetOriginalName(" orig ");
|
|
Assert.Equal("orig", s.OriginalName);
|
|
s.SetOriginalName("");
|
|
Assert.Null(s.OriginalName);
|
|
}
|
|
|
|
[Fact]
|
|
public void AddEpisode_AppendsInOrder()
|
|
{
|
|
var s = Show.Create("A", ShowKind.Series);
|
|
var e0 = s.AddEpisode(Guid.NewGuid());
|
|
var e1 = s.AddEpisode(Guid.NewGuid());
|
|
|
|
Assert.Equal(0, e0.Position);
|
|
Assert.Equal(1, e1.Position);
|
|
Assert.Equal(2, s.Episodes.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void RemoveEpisode_RemovesById()
|
|
{
|
|
var s = Show.Create("A", ShowKind.Series);
|
|
var e = s.AddEpisode(Guid.NewGuid());
|
|
|
|
Assert.True(s.RemoveEpisode(e.Id));
|
|
Assert.False(s.RemoveEpisode(e.Id));
|
|
Assert.Empty(s.Episodes);
|
|
}
|
|
|
|
[Fact]
|
|
public void CanAddEpisode_SingleAllowsOnlyOne()
|
|
{
|
|
var single = Show.Create("Movie", ShowKind.Single);
|
|
Assert.True(single.CanAddEpisode);
|
|
single.AddEpisode(Guid.NewGuid());
|
|
Assert.False(single.CanAddEpisode);
|
|
|
|
var series = Show.Create("Series", ShowKind.Series);
|
|
series.AddEpisode(Guid.NewGuid());
|
|
Assert.True(series.CanAddEpisode);
|
|
}
|
|
|
|
[Fact]
|
|
public void ApplyMetadata_SetsProviderYearPoster_KeepsDescriptionIfBlank()
|
|
{
|
|
var s = Show.Create("A", ShowKind.Series, description: "old");
|
|
var poster = Guid.NewGuid();
|
|
|
|
s.ApplyMetadata("tmdb", "42", description: null, year: 1999, posterImageId: poster);
|
|
|
|
Assert.Equal("tmdb", s.MetadataProvider);
|
|
Assert.Equal("42", s.MetadataExternalId);
|
|
Assert.Equal(1999, s.Year);
|
|
Assert.Equal(poster, s.PosterImageId);
|
|
Assert.Equal("old", s.Description); // пустое описание не затирает
|
|
}
|
|
|
|
[Fact]
|
|
public void UpdateMetadataManual_MarksManualAndClearsExternal()
|
|
{
|
|
var s = Show.Create("A", ShowKind.Series);
|
|
s.ApplyMetadata("tmdb", "1", "d", 2000, Guid.NewGuid());
|
|
|
|
s.UpdateMetadataManual("new", 2001);
|
|
|
|
Assert.Equal("manual", s.MetadataProvider);
|
|
Assert.Null(s.MetadataExternalId);
|
|
Assert.Equal("new", s.Description);
|
|
Assert.Equal(2001, s.Year);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetPosterImage_AndClearMetadata()
|
|
{
|
|
var s = Show.Create("A", ShowKind.Series);
|
|
s.ApplyMetadata("tmdb", "1", "d", 2000, Guid.NewGuid());
|
|
s.SetPosterImage(Guid.NewGuid());
|
|
|
|
s.ClearMetadata();
|
|
|
|
Assert.Null(s.MetadataProvider);
|
|
Assert.Null(s.MetadataExternalId);
|
|
Assert.Null(s.Year);
|
|
Assert.Null(s.PosterImageId);
|
|
Assert.Null(s.Description);
|
|
}
|
|
}
|