using System; using System.Threading.Tasks; using Moq; using NUnit.Framework; using LCU.Library.Internal.Exceptions; using LCU.API.Internal.DocumentIngestor.Services.MicroApiServices; using LCU.API.Internal.DocumentIngestor.DataAccess; using LCU.API.Internal.DocumentIngestor.Models.MemberPreferencesDtos; namespace LCU.API.Internal.DocumentIngestorTests.Services.MicroApiServices; public class MemberPreferencesApiServiceTest { private MemberPreferencesApiService _memberPreferencesApiService; private Mock _mockMemberPreferencesApiDao; [SetUp] public void Setup() { _mockMemberPreferencesApiDao = new Mock(); _memberPreferencesApiService = new MemberPreferencesApiService(_mockMemberPreferencesApiDao.Object); } [Test] public async Task GetMemberOptInAgreementInfoByUserId_Return() { var memberOptInAgreementInformation = new MemberOptInAgreementInformation(); _mockMemberPreferencesApiDao.Setup(x => x.GetMemberOptInAgreementInfoByUserId(It.IsAny())).ReturnsAsync(memberOptInAgreementInformation); var response = await _memberPreferencesApiService.GetMemberOptInAgreementInfoByUserId("11"); Assert.IsNotNull(response); _mockMemberPreferencesApiDao.Verify(x => x.GetMemberOptInAgreementInfoByUserId(It.IsAny()), Times.Once); } [Test] public void GetMemberOptInAgreementInfoByUserId_Exception() { _mockMemberPreferencesApiDao.Setup(x => x.GetMemberOptInAgreementInfoByUserId(It.IsAny())).ThrowsAsync(new Exception("Error")); Assert.ThrowsAsync(async () => await _memberPreferencesApiService.GetMemberOptInAgreementInfoByUserId("11")); _mockMemberPreferencesApiDao.Verify(x => x.GetMemberOptInAgreementInfoByUserId(It.IsAny()), Times.Once); } [Test] public async Task GetMemberOptInSettingsByUserId_Return() { var memberOptInSettings = new MemberOptInInformation(); _mockMemberPreferencesApiDao.Setup(x => x.GetMemberOptInSettingsByUserId(It.IsAny())).ReturnsAsync(memberOptInSettings); var response = await _memberPreferencesApiService.GetMemberOptInSettingsByUserId("11"); Assert.IsNotNull(response); _mockMemberPreferencesApiDao.Verify(x => x.GetMemberOptInSettingsByUserId(It.IsAny()), Times.Once); } [Test] public void GetMemberOptInSettingsByUserId_Exception() { _mockMemberPreferencesApiDao.Setup(x => x.GetMemberOptInSettingsByUserId(It.IsAny())).ThrowsAsync(new Exception("Error")); Assert.ThrowsAsync(async () => await _memberPreferencesApiService.GetMemberOptInSettingsByUserId("11")); _mockMemberPreferencesApiDao.Verify(x => x.GetMemberOptInSettingsByUserId(It.IsAny()), Times.Once); } [Test] public async Task EmailSuccessfulSend_Return() { var memberOptInSettings = new MemberOptInInformation(); _mockMemberPreferencesApiDao.Setup(x => x.EmailSuccessfulSend(It.IsAny(), It.IsAny())); await _memberPreferencesApiService.EmailStatusSend("11", "test@test.com", true); _mockMemberPreferencesApiDao.Verify(x => x.EmailSuccessfulSend(It.IsAny(), It.IsAny()), Times.Once); _mockMemberPreferencesApiDao.Verify(x => x.EmailFailureSend(It.IsAny(), It.IsAny()), Times.Never); } [Test] public void EmailSuccessfulSend_Exception() { _mockMemberPreferencesApiDao.Setup(x => x.EmailSuccessfulSend(It.IsAny(), It.IsAny())).ThrowsAsync(new Exception("Error")); Assert.ThrowsAsync(async () => await _memberPreferencesApiService.EmailStatusSend("11", "test@test.com", true)); _mockMemberPreferencesApiDao.Verify(x => x.EmailSuccessfulSend(It.IsAny(), It.IsAny()), Times.Once); _mockMemberPreferencesApiDao.Verify(x => x.EmailFailureSend(It.IsAny(), It.IsAny()), Times.Never); } [Test] public async Task EmailFailureSend_Return() { _mockMemberPreferencesApiDao.Setup(x => x.EmailFailureSend(It.IsAny(), It.IsAny())); await _memberPreferencesApiService.EmailStatusSend("11", "test@test.com", false); _mockMemberPreferencesApiDao.Verify(x => x.EmailFailureSend(It.IsAny(), It.IsAny()), Times.Once); _mockMemberPreferencesApiDao.Verify(x => x.EmailSuccessfulSend(It.IsAny(), It.IsAny()), Times.Never); } [Test] public void EmailFailureSend_Exception() { _mockMemberPreferencesApiDao.Setup(x => x.EmailFailureSend(It.IsAny(), It.IsAny())).ThrowsAsync(new Exception("Error")); Assert.ThrowsAsync(async () => await _memberPreferencesApiService.EmailStatusSend("11", "test@test.com", false)); _mockMemberPreferencesApiDao.Verify(x => x.EmailFailureSend(It.IsAny(), It.IsAny()), Times.Once); _mockMemberPreferencesApiDao.Verify(x => x.EmailSuccessfulSend(It.IsAny(), It.IsAny()), Times.Never); } }