OF-DL/OF DL.Tests/Models/Mappers/HighlightsMapperTests.cs

76 lines
2.1 KiB
C#

using OF_DL.Models.Dtos.Common;
using OF_DL.Models.Dtos.Highlights;
using OF_DL.Models.Entities.Highlights;
using OF_DL.Models.Mappers;
namespace OF_DL.Tests.Models.Mappers;
public class HighlightsMapperTests
{
[Fact]
public void FromDto_ReturnsDefaults_WhenDtoNull()
{
Highlights result = HighlightsMapper.FromDto((HighlightsDto?)null);
Assert.False(result.HasMore);
Assert.Empty(result.List);
}
[Fact]
public void FromDto_MapsListItems()
{
HighlightsDto dto = new() { HasMore = true, List = [new ListItemDto { Id = 99 }] };
Highlights result = HighlightsMapper.FromDto(dto);
Assert.True(result.HasMore);
Assert.Single(result.List);
Assert.Equal(99, result.List[0].Id);
}
[Fact]
public void FromDto_MapsHighlightMediaStories()
{
DateTime createdAt = new(2024, 2, 3, 4, 5, 6, DateTimeKind.Utc);
HighlightMediaDto dto = new()
{
Stories =
[
new StoryDto
{
Id = 5,
CreatedAt = createdAt,
Media =
[
new MediumDto
{
Id = 8,
Type = "video",
CanView = true,
CreatedAt = createdAt,
Files = new FilesDto { Full = new FullDto { Url = "https://example.com/full.mp4" } }
}
]
}
]
};
HighlightMedia result = HighlightsMapper.FromDto(dto);
Assert.Single(result.Stories);
Story story = result.Stories[0];
Assert.Equal(5, story.Id);
Assert.Equal(createdAt, story.CreatedAt);
Assert.NotNull(story.Media);
Assert.Single(story.Media);
Medium media = story.Media[0];
Assert.Equal(8, media.Id);
Assert.NotNull(media.Files);
Assert.NotNull(media.Files.Full);
Assert.Equal("https://example.com/full.mp4", media.Files.Full.Url);
}
}