using Microsoft.VisualStudio.TestTools.UnitTesting;
using VehicleInspection_Domain.Interfaces;
using Moq;
using Microsoft.AspNetCore.Mvc;
using VehicleInspection_Domain.Models.AbstractModels;
using Newtonsoft.Json;
namespace VehicleInspection_Test
{
[TestClass]
public class VehicleInspectionTesting
{
private readonly IEmailRepository _emailRepository;
public VehicleInspectionTesting(IEmailRepository emailRepository)
{
_emailRepository = emailRepository;
}
[TestMethod]
public async Task Insepction_ReturnOkResult_AndSendsEmailOnMajorDefect()
{
string jsonData = @"
{
*** SOME DATA ***
}";
// Mock dependencies
var emailRepositoryMock = new Mock<IEmailRepository>();
var inspectionService = new VehicleInspectionTesting(emailRepositoryMock.Object);
// Act
var result = await inspectionService.ProcessInspection(jsonData);
// Assert
Assert.IsInstanceOfType(result, typeof(OkResult));
// Verify that SendCriticalDefectEmail was called when major defects exist
emailRepositoryMock.Verify(x => x.SendCriticalDefectEmail(It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
}
}
using Microsoft.VisualStudio.TestTools.UnitTesting;
using VehicleInspection_Domain.Interfaces;
using Moq;
using Microsoft.AspNetCore.Mvc;
using VehicleInspection_Domain.Models.AbstractModels;
using Newtonsoft.Json;
namespace VehicleInspection_Test
{
[TestClass]
public class VehicleInspectionTesting
{
private readonly IEmailRepository _emailRepository;
public VehicleInspectionTesting(IEmailRepository emailRepository)
{
_emailRepository = emailRepository;
}
[TestMethod]
public async Task Insepction_ReturnOkResult_AndSendsEmailOnMajorDefect()
{
string jsonData = @"
{
*** SOME DATA ***
}";
// Mock dependencies
var emailRepositoryMock = new Mock<IEmailRepository>();
var inspectionService = new VehicleInspectionTesting(emailRepositoryMock.Object);
// Act
var result = await inspectionService.ProcessInspection(jsonData);
// Assert
Assert.IsInstanceOfType(result, typeof(OkResult));
// Verify that SendCriticalDefectEmail was called when major defects exist
emailRepositoryMock.Verify(x => x.SendCriticalDefectEmail(It.IsAny<string>(), It.IsAny<int>()), Times.Once);
}
}
}