Files
monorepo/LCU.API.Internal.MemberPreferencesApi/LCU.API.Internal.MemberPreferencesApi.UnitTests/Controllers/MemberEmailControllerTest.cs
T
2026-03-31 16:43:12 -05:00

105 lines
3.8 KiB
C#

using System;
using System.Threading.Tasks;
using LCU.API.Internal.MemberPreferencesApi.Services;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.FeatureManagement;
using Moq;
using NUnit.Framework;
using LCU.API.Internal.MemberPreferencesApi.Controllers;
namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Controllers
{
public class MemberEmailControllerTest
{
private readonly MemberEmailController _controller;
private readonly Mock<IMemberEmailService> _service = new Mock<IMemberEmailService>();
private readonly Mock<IFeatureManager> _featureManager = new Mock<IFeatureManager>();
public MemberEmailControllerTest()
{
_controller = new MemberEmailController(_service.Object, _featureManager.Object);
}
[Test]
public async Task EmailSentSuccessfully_AllCases_CallsServiceUnifiedOptInEmailFailedToSend()
{
var userId = Guid.NewGuid().ToString();
var emailAddress = Guid.NewGuid().ToString();
await _controller.EmailSentSuccessfully(userId, emailAddress);
_service.Verify(s => s.EmailSucceededToSend(userId, emailAddress), Times.Once);
}
[Test]
public async Task EmailSentSuccessfully_KnownEmail_ReturnsOk()
{
var userId = Guid.NewGuid().ToString();
var emailAddress = Guid.NewGuid().ToString();
_service
.Setup(s => s.EmailSucceededToSend(userId, emailAddress))
.ReturnsAsync(true);
var result = await _controller.EmailSentSuccessfully(userId, emailAddress);
Assert.AreEqual(200, (result as IStatusCodeActionResult)?.StatusCode);
}
[Test]
public async Task EmailSentSuccessfully_UnknownEmail_ReturnsNotFound()
{
var userId = Guid.NewGuid().ToString();
var emailAddress = Guid.NewGuid().ToString();
_service
.Setup(s => s.EmailFailedToSend(userId, emailAddress, true))
.ReturnsAsync(false);
var result = await _controller.EmailSentSuccessfully(userId, emailAddress);
Assert.AreEqual(404, (result as IStatusCodeActionResult)?.StatusCode);
}
[Test]
public async Task EmailSendFailed_AllCases_CallsServiceEmailFailedToSend()
{
var userId = Guid.NewGuid().ToString();
var emailAddress = Guid.NewGuid().ToString();
_featureManager.Setup(f => f.IsEnabledAsync(It.IsAny<string>())).ReturnsAsync(true);
await _controller.EmailSendFailed(userId, emailAddress);
_service.Verify(s => s.EmailFailedToSend(userId, emailAddress, true), Times.Once);
}
[Test]
public async Task EmailSendFailed_KnownEmail_ReturnsOk()
{
var userId = Guid.NewGuid().ToString();
var emailAddress = Guid.NewGuid().ToString();
_featureManager.Setup(f => f.IsEnabledAsync(It.IsAny<string>())).ReturnsAsync(true);
_service
.Setup(s => s.EmailFailedToSend(userId, emailAddress, true))
.ReturnsAsync(true);
var result = await _controller.EmailSendFailed(userId, emailAddress);
Assert.AreEqual(200, (result as IStatusCodeActionResult)?.StatusCode);
}
[Test]
public async Task EmailSendFailed_UnknownEmail_ReturnsNotFound()
{
var userId = Guid.NewGuid().ToString();
var emailAddress = Guid.NewGuid().ToString();
_service
.Setup(s => s.EmailFailedToSend(userId, emailAddress, true))
.ReturnsAsync(false);
var result = await _controller.EmailSendFailed(userId, emailAddress);
Assert.AreEqual(404, (result as IStatusCodeActionResult)?.StatusCode);
}
}
}