2024-04-11 13:20:33 -07:00

102 lines
3.9 KiB
C#

using FabApprovalWorkerService.Models;
using FabApprovalWorkerService.Services;
using Microsoft.Extensions.Logging;
using Moq;
namespace FabApprovalWorkerServiceTests;
public class CorrectiveActionServiceTests {
private Mock<ILogger<CorrectiveActionService>> _mockLogger;
private Mock<IDalService> _mockDalService;
private CorrectiveActionService _caService;
[SetUp]
public void Setup() {
_mockLogger = new Mock<ILogger<CorrectiveActionService>>();
_mockDalService = new Mock<IDalService>();
}
[Test]
public void CAServiceWithNullLoggerShouldThrowException() {
Assert.Throws<ArgumentNullException>(() => new CorrectiveActionService(null, _mockDalService.Object));
}
[Test]
public void CAServiceWithNullDalServiceShouldThrowException() {
Assert.Throws<ArgumentNullException>(() => new CorrectiveActionService(_mockLogger.Object, null));
}
[Test]
public void GetCorrectiveActionsWithFollowUpInFiveDaysDbErrorShouldThrowError() {
_mockDalService.Setup(d => d.QueryAsync<CorrectiveAction>(It.IsAny<string>())).Throws(new Exception());
_caService = new CorrectiveActionService(_mockLogger.Object, _mockDalService.Object);
Assert.ThrowsAsync<Exception>(async Task () => await _caService.GetCorrectiveActionsWithFollowUpInFiveDays());
}
[Test]
public async Task GetCorrectiveActionsWithFollowUpInFiveDaysShouldReturnExpectedCAs() {
IEnumerable<CorrectiveAction> expectedCAs = new List<CorrectiveAction>() {
new CorrectiveAction() {
CANo = 1,
CATitle = "title"
},
new CorrectiveAction() {
CANo = 2,
CATitle = "title"
},
new CorrectiveAction() {
CANo = 3,
CATitle = "title"
}
};
_mockDalService.Setup(d => d.QueryAsync<CorrectiveAction>(It.IsAny<string>())).Returns(Task.FromResult(expectedCAs));
_caService = new CorrectiveActionService(_mockLogger.Object, _mockDalService.Object);
IEnumerable<CorrectiveAction> actualCAs = await _caService.GetCorrectiveActionsWithFollowUpInFiveDays();
Assert.That(expectedCAs, Is.EquivalentTo(actualCAs));
}
//CreateCorrectiveActionFollowUpApproval
[Test]
public void CreateCorrectiveActionFollowUpApprovalWithInvalidCaNoShouldThrowException() {
_caService = new CorrectiveActionService(_mockLogger.Object, _mockDalService.Object);
Assert.ThrowsAsync<ArgumentException>(async Task () => await _caService.CreateCorrectiveActionFollowUpApproval(0, 5));
Assert.ThrowsAsync<ArgumentException>(async Task () => await _caService.CreateCorrectiveActionFollowUpApproval(-5, 5));
}
[Test]
public void CreateCorrectiveActionFollowUpApprovalWithInvalidQaIdShouldThrowException() {
_caService = new CorrectiveActionService(_mockLogger.Object, _mockDalService.Object);
Assert.ThrowsAsync<ArgumentException>(async Task () => await _caService.CreateCorrectiveActionFollowUpApproval(5, 0));
Assert.ThrowsAsync<ArgumentException>(async Task () => await _caService.CreateCorrectiveActionFollowUpApproval(5, -5));
}
[Test]
public void CreateCorrectiveActionFollowUpApprovalDbErrorShouldThrowException() {
_mockDalService.Setup(d => d.ExecuteAsync(It.IsAny<string>())).Throws(new Exception());
_caService = new CorrectiveActionService(_mockLogger.Object, _mockDalService.Object);
Assert.ThrowsAsync<Exception>(async Task () => await _caService.CreateCorrectiveActionFollowUpApproval(5, 5));
}
[Test]
public async Task CreateCorrectiveActionFollowUpApprovalShouldExecuteSql() {
_caService = new CorrectiveActionService(_mockLogger.Object, _mockDalService.Object);
await _caService.CreateCorrectiveActionFollowUpApproval(5, 5);
_mockDalService.Verify(d => d.ExecuteAsync(It.IsAny<string>()), Times.Once());
}
}