using System; using System.Linq; using System.Collections.Generic; using System.Threading.Tasks; using NUnit.Framework; using Moq; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels; using LCU.Api.Internal.CoreApiWrapper.Services; using LCU.Library.Internal.CoreApiWrapperLib.DataAccess; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreRequests; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.AccessChannelPersons; namespace LCU.Api.Internal.CoreApiWrapperTest.Service { public class AccessChannelPersonsServiceTest { private readonly AccessChannelPersonsService _accessChannelPersonsService; private readonly Mock _mockAccessChannelPersonsDao; public AccessChannelPersonsServiceTest() { _mockAccessChannelPersonsDao = new Mock(); _accessChannelPersonsService = new AccessChannelPersonsService(_mockAccessChannelPersonsDao.Object); } [Test] public void GetAccessChannelPersonCoreApiResponseAsync_ExceptionThrown() { _mockAccessChannelPersonsDao.Setup(x => x.FindAccessChannelPersonsByPerson(It.IsAny(), It.IsAny())) .Throws(new Exception("Oops")); Assert.ThrowsAsync(async () => await _accessChannelPersonsService.GetAccessChannelPersonCoreApiResponseAsync(new AccessChannelPersonsByPersonRequest())); } [Test] public async Task GetAccessChannelPersonCoreApiResponseAsync_UserFieldsReturned() { var accessChannelPersons = new List() { new AccessChannelPerson() { ChannelNumber = 1, PersonNumber = 2, UserId = "3" }, new AccessChannelPerson() { ChannelNumber = 4, PersonNumber = 5, UserId = "6" } }; var coreMessageheader = new CoreMessageHeader(); var coreApiResponse = new CoreApiMessage>(coreMessageheader, accessChannelPersons); _mockAccessChannelPersonsDao.Setup(x => x.FindAccessChannelPersonsByPerson(It.IsAny(), It.IsAny())) .ReturnsAsync(coreApiResponse); var accessChannelPersonsByPersonRequest = new AccessChannelPersonsByPersonRequest(); var result = await _accessChannelPersonsService.GetAccessChannelPersonCoreApiResponseAsync(accessChannelPersonsByPersonRequest); Assert.NotNull(result); Assert.AreEqual(2, result.MessageBody.Count()); } [Test] public void UpdateAccountChannelPersonAsync_ExceptionThrown() { _mockAccessChannelPersonsDao.Setup(x => x.UpdateAccessChannelPerson(It.IsAny>())) .Throws(new Exception("Oops")); var request = new AccessChannelPerson() { ChannelNumber = 1, PersonNumber = 2, UserId = "3" }; Assert.ThrowsAsync(async () => await _accessChannelPersonsService.UpdateAccessChannelPersonAsync(request, 10002312312)); } [Test] public void UpdateAccountChannelPersonAsync_NullResult_ExceptionThrown() { AccessChannelPerson response = null; _mockAccessChannelPersonsDao.Setup(x => x.UpdateAccessChannelPerson(It.IsAny>())) .ReturnsAsync(response); var request = new AccessChannelPerson() { ChannelNumber = 1, PersonNumber = 2, UserId = "3" }; Assert.ThrowsAsync(async () => await _accessChannelPersonsService.UpdateAccessChannelPersonAsync(request, 10002312312)); } [Test] public async Task UpdateAccountChannelPersonAsync_UpdatedUserFieldsReturned() { var response = new AccessChannelPerson() { ChannelNumber = 1, PersonNumber = 2, UserId = "3" }; _mockAccessChannelPersonsDao.Setup(x => x.UpdateAccessChannelPerson(It.IsAny>())) .ReturnsAsync(response); var request = new AccessChannelPerson() { ChannelNumber = 1, PersonNumber = 2, UserId = "3" }; var result = await _accessChannelPersonsService.UpdateAccessChannelPersonAsync(request, 10002312312); Assert.NotNull(result); Assert.AreEqual(response, result); } } }