242 lines
8.1 KiB
C#
242 lines
8.1 KiB
C#
using FabApprovalWorkerService.Models;
|
|
using FabApprovalWorkerService.Services;
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
using Moq;
|
|
|
|
namespace FabApprovalWorkerServiceTests;
|
|
internal class ECNServiceTests {
|
|
Mock<ILogger<ECNService>> _mockLogger;
|
|
Mock<IDalService> _mockDalService;
|
|
|
|
ECNService _ecnService;
|
|
|
|
[SetUp]
|
|
public void Setup() {
|
|
_mockLogger = new Mock<ILogger<ECNService>>();
|
|
_mockDalService = new Mock<IDalService>();
|
|
}
|
|
|
|
[Test]
|
|
public void EcnServiceWithNullLoggerShouldThrowException() {
|
|
Assert.Throws<ArgumentNullException>(() => new ECNService(null, _mockDalService.Object));
|
|
}
|
|
|
|
[Test]
|
|
public void EcnServiceWithNullDalServiceShouldThrowException() {
|
|
Assert.Throws<ArgumentNullException>(() => new ECNService(_mockLogger.Object, null));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiringTECNsWithDbErrorShouldThrowException() {
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).ThrowsAsync(new Exception());
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
Assert.ThrowsAsync<Exception>(async Task () => await _ecnService.GetExpiringTECNs());
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiredTECNsWithDbErrorShouldThrowException() {
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).ThrowsAsync(new Exception());
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
Assert.ThrowsAsync<Exception>(async Task () => await _ecnService.GetExpiredTECNs());
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiringTECNsWithNoResultsFromDbShouldReturnEmpty() {
|
|
IEnumerable<ECN> emptyEcns = new List<ECN>();
|
|
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).Returns(Task.FromResult(emptyEcns));
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
IEnumerable<ECN> actual = await _ecnService.GetExpiringTECNs();
|
|
|
|
Assert.That(actual, Is.Empty);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiredTECNsWithNoResultsFromDbShouldReturnEmpty() {
|
|
IEnumerable<ECN> emptyEcns = new List<ECN>();
|
|
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).Returns(Task.FromResult(emptyEcns));
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
IEnumerable<ECN> actual = await _ecnService.GetExpiredTECNs();
|
|
|
|
Assert.That(actual, Is.Empty);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiringTECNsWithNoExtensionFromDbShouldReturnSameResults() {
|
|
IEnumerable<ECN> ecns = new List<ECN>() {
|
|
new ECN() {
|
|
ECNNumber = 1,
|
|
OriginatorID = 1,
|
|
Title = "title1",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.AddDays(1)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 2,
|
|
OriginatorID = 1,
|
|
Title = "title2",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.AddDays(2)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 3,
|
|
OriginatorID = 1,
|
|
Title = "title3",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.AddDays(3)
|
|
},
|
|
};
|
|
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).Returns(Task.FromResult(ecns));
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
IEnumerable<ECN> actual = await _ecnService.GetExpiringTECNs();
|
|
|
|
Assert.That(actual.Count(), Is.EqualTo(3));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiredTECNsWithNoExtensionFromDbShouldReturnSameResults() {
|
|
IEnumerable<ECN> ecns = new List<ECN>() {
|
|
new ECN() {
|
|
ECNNumber = 1,
|
|
OriginatorID = 1,
|
|
Title = "title1",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.Date.AddHours(2)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 2,
|
|
OriginatorID = 1,
|
|
Title = "title2",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.Date.AddHours(20)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 3,
|
|
OriginatorID = 1,
|
|
Title = "title3",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.Date.AddHours(12)
|
|
},
|
|
};
|
|
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).Returns(Task.FromResult(ecns));
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
IEnumerable<ECN> actual = await _ecnService.GetExpiredTECNs();
|
|
|
|
Assert.That(actual.Count(), Is.EqualTo(3));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiringTECNsWithExtensionsFromDbShouldReturnSameResults() {
|
|
IEnumerable<ECN> ecns = new List<ECN>() {
|
|
new ECN() {
|
|
ECNNumber = 1,
|
|
OriginatorID = 1,
|
|
Title = "title1",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.AddDays(1)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 2,
|
|
OriginatorID = 1,
|
|
Title = "title2",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.AddDays(2)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 3,
|
|
OriginatorID = 1,
|
|
Title = "title3",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.AddDays(3),
|
|
ExtensionDate = DateTime.Now.AddDays(10)
|
|
},
|
|
};
|
|
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).Returns(Task.FromResult(ecns));
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
IEnumerable<ECN> actual = await _ecnService.GetExpiringTECNs();
|
|
|
|
Assert.That(actual.Count(), Is.EqualTo(2));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetExpiredTECNsWithExtensionsFromDbShouldReturnSameResults() {
|
|
IEnumerable<ECN> ecns = new List<ECN>() {
|
|
new ECN() {
|
|
ECNNumber = 1,
|
|
OriginatorID = 1,
|
|
Title = "title1",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.Date.AddHours(2)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 2,
|
|
OriginatorID = 1,
|
|
Title = "title2",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.Date.AddHours(20)
|
|
},
|
|
new ECN() {
|
|
ECNNumber = 3,
|
|
OriginatorID = 1,
|
|
Title = "title3",
|
|
IsTECN = true,
|
|
ExpirationDate = DateTime.Now.Date.AddHours(12),
|
|
ExtensionDate = DateTime.Now.Date.AddDays(10)
|
|
},
|
|
};
|
|
|
|
_mockDalService.Setup(d => d.QueryAsync<ECN>(It.IsAny<string>())).Returns(Task.FromResult(ecns));
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
IEnumerable<ECN> actual = await _ecnService.GetExpiredTECNs();
|
|
|
|
Assert.That(actual.Count(), Is.EqualTo(2));
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetTECNNotificationUserEmailsDbErrorShouldThrowException() {
|
|
_mockDalService.Setup(d => d.QueryAsync<string>(It.IsAny<string>())).Throws(new Exception());
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
Assert.ThrowsAsync<Exception>(async Task () => await _ecnService.GetTECNNotificationUserEmails());
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetTECNNotificationUserEmailsShouldReturnExpectedUserEmails() {
|
|
IEnumerable<string> userEmails = new List<string>() {
|
|
"fake1@email.com",
|
|
"fake2@email.com"
|
|
};
|
|
|
|
_mockDalService.Setup(d => d.QueryAsync<string>(It.IsAny<string>())).Returns(Task.FromResult(userEmails));
|
|
|
|
_ecnService = new ECNService(_mockLogger.Object, _mockDalService.Object);
|
|
|
|
IEnumerable<string> actualEmails = await _ecnService.GetTECNNotificationUserEmails();
|
|
|
|
Assert.That(actualEmails.Count(), Is.EqualTo(2));
|
|
}
|
|
}
|