2
0
forked from sim0n00ps/OF-DL
OF-DL/OF DL.Tests/Models/Mappers/StreamsMapperTests.cs

92 lines
2.9 KiB
C#

using OF_DL.Models.Dtos.Common;
using OF_DL.Models.Dtos.Streams;
using OF_DL.Models.Entities.Streams;
using OF_DL.Models.Mappers;
namespace OF_DL.Tests.Models.Mappers;
public class StreamsMapperTests
{
[Fact]
public void FromDto_ReturnsDefaults_WhenDtoNull()
{
Streams result = StreamsMapper.FromDto(null);
Assert.False(result.HasMore);
Assert.Null(result.TailMarker);
Assert.Empty(result.List);
}
[Fact]
public void FromDto_MapsListItems()
{
DateTime postedAt = new(2024, 8, 9, 10, 11, 12, DateTimeKind.Utc);
StreamsDto dto = new()
{
HasMore = true,
TailMarker = "tail",
List =
[
new ListItemDto
{
Id = 333,
PostedAt = postedAt,
Author = new AuthorDto { Id = 9 },
Text = "stream",
RawText = "stream",
Price = "1.00",
IsOpened = null,
IsArchived = null,
Media =
[
new MediumDto
{
Id = 444,
Type = "video",
CanView = true,
Files = new FilesDto
{
Full = new FullDto { Url = "https://example.com/full.mp4" },
Drm = new DrmDto
{
Manifest = new ManifestDto { Dash = "dash.mpd" },
Signature = new SignatureDto
{
Dash = new DashDto { CloudFrontPolicy = "policy" }
}
}
}
}
]
}
]
};
Streams result = StreamsMapper.FromDto(dto);
Assert.True(result.HasMore);
Assert.Equal("tail", result.TailMarker);
Assert.Single(result.List);
ListItem item = result.List[0];
Assert.Equal(333, item.Id);
Assert.Equal(postedAt, item.PostedAt);
Assert.NotNull(item.Author);
Assert.Equal(9, item.Author.Id);
Assert.Equal("stream", item.Text);
Assert.False(item.IsOpened);
Assert.False(item.IsArchived);
Assert.NotNull(item.Media);
Assert.Single(item.Media);
Medium media = item.Media[0];
Assert.Equal(444, media.Id);
Assert.NotNull(media.Files);
Assert.NotNull(media.Files.Full);
Assert.Equal("https://example.com/full.mp4", media.Files.Full.Url);
Assert.NotNull(media.Files.Drm?.Manifest);
Assert.Equal("dash.mpd", media.Files.Drm.Manifest.Dash);
}
}