domBudg/back/Services.Tests/Reports/ReportPeriodServiceTests.cs

41 lines
1.7 KiB
C#

using Contracts.DTO;
using Contracts.Repositories;
using Contracts.SearchModels;
using Contracts.ViewModels;
using Moq;
using Services.Reports;
using Services.Support.Exceptions;
namespace Services.Tests.Reports;
public class ReportPeriodServiceTests
{
[Fact]
public void GetReportData_WhenChangeRecordsNotFound_ThenThrowsReportDataNotFoundException()
{
var changeRecordRepoMock = new Mock<IChangeRecordRepo>();
changeRecordRepoMock.Setup(repo => repo.GetList(It.IsAny<ChangeRecordSearch>())).ReturnsAsync((List<ChangeRecordDto>)null);
var reportPeriodService = new ReportPeriodService(changeRecordRepoMock.Object);
Assert.ThrowsAsync<ReportDataNotFoundException>(() => reportPeriodService.GetReportData(DateTime.MinValue, DateTime.MaxValue));
}
[Fact]
public async Task GetReportData_WhenChangeRecordsFound_ThenReturnsChangeRecordViewModels()
{
var changeRecordRepoMock = new Mock<IChangeRecordRepo>();
var changeRecords = new List<ChangeRecordDto>()
{
new() { Id = Guid.NewGuid(), ChangedAt = DateTime.Now },
new() { Id = Guid.NewGuid(), ChangedAt = DateTime.Now }
};
changeRecordRepoMock.Setup(repo => repo.GetList(It.IsAny<ChangeRecordSearch>())).ReturnsAsync(changeRecords);
var reportPeriodService = new ReportPeriodService(changeRecordRepoMock.Object);
var result = await reportPeriodService.GetReportData(DateTime.MinValue, DateTime.MaxValue);
changeRecordRepoMock.Verify(repo => repo.GetList(It.IsAny<ChangeRecordSearch>()), Times.Once);
Assert.NotNull(result);
Assert.IsType<List<ChangeRecordViewModel>>(result.ToList());
}
}