using Diligent.WebAPI.Business.Services; using Diligent.WebAPI.Contracts.DTOs.Applicant; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; namespace Diligent.WebAPI.Tests.Services { public class ImportServiceTests { private readonly List _applicantImportDtos; private readonly ILogger _logger = Substitute.For>(); private readonly ISaveImportedDataService _service = Substitute.For(); private readonly IFormFile file = Substitute.For(); public ImportServiceTests() { _applicantImportDtos = new List { new ApplicantImportDto{ Email = "dzenis@dilig.net" }, new ApplicantImportDto{ Email = "meris@dilig.net" }, new ApplicantImportDto{ Email = "ermin@dilig.net" } }; } [Fact] public async Task TesImport_ShouldHaveThreeItems_WhenISaveImportedDataServiceReturnsThreeItems() { ImportService importService = new ImportService(_logger, _service); _service.Save().Returns(_applicantImportDtos); var result = await importService.Import(file); result.Should().HaveCount(3); } [Fact] public async Task TesImport_ShouldThrowsException_WhenErrorIsPresent() { ImportService importService = new ImportService(_logger, _service); _service.When(x => x.Save()).Do(x => { throw new Exception(); }); await Assert.ThrowsAsync(async () => await importService.Import(file)); } } }