Add project reference for TeleWave.Infrastructure: include TeleWave.Infrastructure.csproj in TeleWave.Application.Tests project to support additional testing capabilities.

This commit is contained in:
Leonid Pershin
2026-07-25 20:12:04 +03:00
parent ed240ef73c
commit 4611f90d11
18 changed files with 2027 additions and 0 deletions
@@ -0,0 +1,53 @@
using TeleWave.Domain.Library;
using Xunit;
namespace TeleWave.Domain.Tests.Library;
public class ShowEpisodeTests
{
private static ShowEpisode NewEpisode() =>
Show.Create("A", ShowKind.Series).AddEpisode(Guid.NewGuid());
[Fact]
public void SetNumbers_StoresSeasonEpisode()
{
var e = NewEpisode();
e.SetNumbers(3, 7);
Assert.Equal(3, e.Season);
Assert.Equal(7, e.Episode);
}
[Fact]
public void ApplyMetadata_SetsFields_StillOnlyWhenProvided()
{
var e = NewEpisode();
var still = Guid.NewGuid();
var air = new DateOnly(2020, 5, 1);
e.ApplyMetadata("Title", "Overview", still, air);
Assert.Equal("Title", e.Title);
Assert.Equal("Overview", e.Overview);
Assert.Equal(still, e.StillImageId);
Assert.Equal(air, e.AirDate);
// Повторно без кадра — существующий не затирается.
e.ApplyMetadata("T2", "O2", null, null);
Assert.Equal(still, e.StillImageId);
Assert.Equal("T2", e.Title);
}
[Fact]
public void ClearMetadata_ResetsAll()
{
var e = NewEpisode();
e.ApplyMetadata("T", "O", Guid.NewGuid(), new DateOnly(2020, 1, 1));
e.ClearMetadata();
Assert.Null(e.Title);
Assert.Null(e.Overview);
Assert.Null(e.StillImageId);
Assert.Null(e.AirDate);
}
}
@@ -0,0 +1,128 @@
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);
}
}