Files
mesa-fab-approval/MesaFabApproval.API.Test/ApprovalServiceTests.cs
2025-06-04 10:26:48 -07:00

56 lines
1.9 KiB
C#

using System;
using System.Threading.Tasks;
using MesaFabApproval.API.Services;
using MesaFabApproval.Shared.Models;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Moq;
using Xunit;
namespace MesaFabApproval.API.Test;
public class ApprovalServiceTests {
private readonly Mock<ILogger<ApprovalService>> _loggerMock;
private readonly Mock<IMemoryCache> _cacheMock;
private readonly Mock<IDalService> _dalServiceMock;
private readonly Mock<IUserService> _userServiceMock;
private readonly ApprovalService _approvalService;
public ApprovalServiceTests() {
_loggerMock = new Mock<ILogger<ApprovalService>>();
_cacheMock = new Mock<IMemoryCache>();
_dalServiceMock = new Mock<IDalService>();
_userServiceMock = new Mock<IUserService>();
_approvalService = new ApprovalService(_loggerMock.Object, _cacheMock.Object, _dalServiceMock.Object, _userServiceMock.Object);
}
[Fact]
public async Task DeleteApproval_ValidApprovalID_DeletesApproval() {
int approvalID = 1;
_dalServiceMock.Setup(d => d.ExecuteAsync(It.IsAny<string>(), It.IsAny<object>())).ReturnsAsync(1);
await _approvalService.DeleteApproval(approvalID);
_dalServiceMock.Verify(d => d.ExecuteAsync(It.IsAny<string>(), It.IsAny<object>()), Times.Once);
}
[Fact]
public async Task DeleteApproval_InvalidApprovalID_ThrowsArgumentException() {
int approvalID = 0;
await Assert.ThrowsAsync<ArgumentException>(() => _approvalService.DeleteApproval(approvalID));
}
[Fact]
public async Task DeleteApproval_DeletionFails_ThrowsException() {
int approvalID = 1;
_dalServiceMock.Setup(d => d.ExecuteAsync(It.IsAny<string>(), It.IsAny<object>())).ReturnsAsync(0);
await Assert.ThrowsAsync<Exception>(() => _approvalService.DeleteApproval(approvalID));
}
}