137 lines
4.3 KiB
C#
137 lines
4.3 KiB
C#
using OF_DL.Models.Dtos.Common;
|
|
using OF_DL.Models.Dtos.Posts;
|
|
using OF_DL.Models.Entities.Posts;
|
|
using OF_DL.Models.Mappers;
|
|
|
|
namespace OF_DL.Tests.Models.Mappers;
|
|
|
|
public class PostMapperTests
|
|
{
|
|
[Fact]
|
|
public void PostFromDto_ReturnsDefaults_WhenDtoNull()
|
|
{
|
|
Post result = PostMapper.FromDto((PostDto?)null);
|
|
|
|
Assert.False(result.HasMore);
|
|
Assert.Null(result.TailMarker);
|
|
Assert.Empty(result.List);
|
|
}
|
|
|
|
[Fact]
|
|
public void FromDto_MapsListItems()
|
|
{
|
|
DateTime postedAt = new(2024, 5, 6, 7, 8, 9, DateTimeKind.Utc);
|
|
|
|
PostDto dto = new()
|
|
{
|
|
HasMore = true,
|
|
TailMarker = "tail",
|
|
List =
|
|
[
|
|
new ListItemDto
|
|
{
|
|
Id = 10,
|
|
PostedAt = postedAt,
|
|
Author = new AuthorDto { Id = 3 },
|
|
Text = "post",
|
|
RawText = "post",
|
|
IsOpened = true,
|
|
Price = "2.50",
|
|
IsArchived = true,
|
|
Media =
|
|
[
|
|
new MediumDto
|
|
{
|
|
Id = 20,
|
|
Type = "photo",
|
|
CanView = true,
|
|
Preview = "preview",
|
|
Files = new FilesDto
|
|
{
|
|
Full = new FullDto { Url = "https://example.com/full.jpg" },
|
|
Preview = new PreviewDto { Url = "https://example.com/preview.jpg" }
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
};
|
|
|
|
Post result = PostMapper.FromDto(dto);
|
|
|
|
Assert.True(result.HasMore);
|
|
Assert.Equal("tail", result.TailMarker);
|
|
Assert.Single(result.List);
|
|
|
|
ListItem item = result.List[0];
|
|
Assert.Equal(10, item.Id);
|
|
Assert.Equal(postedAt, item.PostedAt);
|
|
Assert.NotNull(item.Author);
|
|
Assert.Equal(3, item.Author.Id);
|
|
Assert.Equal("post", item.Text);
|
|
Assert.True(item.IsOpened);
|
|
Assert.NotNull(item.Media);
|
|
Assert.Single(item.Media);
|
|
|
|
Medium media = item.Media[0];
|
|
Assert.Equal(20, media.Id);
|
|
Assert.Equal("photo", media.Type);
|
|
Assert.NotNull(media.Files);
|
|
Assert.NotNull(media.Files.Full);
|
|
Assert.Equal("https://example.com/full.jpg", media.Files.Full.Url);
|
|
Assert.NotNull(media.Files.Preview);
|
|
Assert.Equal("https://example.com/preview.jpg", media.Files.Preview.Url);
|
|
}
|
|
|
|
[Fact]
|
|
public void FromDto_MapsSinglePost()
|
|
{
|
|
DateTime postedAt = new(2024, 6, 7, 8, 9, 10, DateTimeKind.Utc);
|
|
|
|
SinglePostDto dto = new()
|
|
{
|
|
Id = 77,
|
|
PostedAt = postedAt,
|
|
Author = new AuthorDto { Id = 8 },
|
|
Text = "single",
|
|
RawText = "single",
|
|
IsOpened = true,
|
|
Price = "4.00",
|
|
IsArchived = false,
|
|
Preview = ["preview"],
|
|
Media =
|
|
[
|
|
new MediumDto
|
|
{
|
|
Id = 88,
|
|
Type = "video",
|
|
CanView = true,
|
|
Preview = "preview",
|
|
Files = new FilesDto { Full = new FullDto { Url = "https://example.com/full.mp4" } },
|
|
VideoSources = new VideoSourcesDto { _240 = "240.mp4", _720 = "720.mp4" }
|
|
}
|
|
]
|
|
};
|
|
|
|
SinglePost result = PostMapper.FromDto(dto);
|
|
|
|
Assert.Equal(77, result.Id);
|
|
Assert.Equal(postedAt, result.PostedAt);
|
|
Assert.NotNull(result.Author);
|
|
Assert.Equal(8, result.Author.Id);
|
|
Assert.Equal("single", result.Text);
|
|
Assert.True(result.IsOpened);
|
|
Assert.NotNull(result.Media);
|
|
Assert.Single(result.Media);
|
|
|
|
Medium media = result.Media[0];
|
|
Assert.Equal(88, 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.VideoSources);
|
|
Assert.Equal("240.mp4", media.VideoSources._240);
|
|
Assert.Equal("720.mp4", media.VideoSources._720);
|
|
}
|
|
}
|