102 lines
3.9 KiB
C#
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());
|
|
}
|
|
}
|