Compare commits

...

1 Commits

Author SHA1 Message Date
Kevin MONTEIRO 1780d481e7 🤡 3/5
continuous-integration/drone/push Build is failing Details
1 year ago

@ -0,0 +1,220 @@
using APIMappers;
using Dto;
using HeartTrackAPI.Controllers;
using HeartTrackAPI.Request;
using HeartTrackAPI.Responce;
using JetBrains.Annotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Abstractions;
using Model;
using Model.Manager;
using Model.Repository;
using Moq;
using Shared;
using StubAPI;
namespace UnitTestApi.Controllers
{
[TestClass]
public class ActivityControllerTest
{
private Mock<IDataManager> _dataManagerMock;
private ActivityController _activityController;
private readonly List<Activity> _activities = new List<Activity>
{
new Activity { Id = 1, Type = "Running", Date = DateTime.Today, StartTime = DateTime.Now, EndTime = DateTime.Now.AddHours(1), Effort = 3, Variability = 0.5f, Variance = 0.1f, StandardDeviation = 0.2f, Average = 150.5f, Maximum = 180, Minimum = 120, AverageTemperature = 25.5f, HasAutoPause = false },
new Activity { Id = 2, Type = "Cycling", Date = DateTime.Today, StartTime = DateTime.Now, EndTime = DateTime.Now.AddHours(2), Effort = 4, Variability = 0.6f, Variance = 0.2f, StandardDeviation = 0.3f, Average = 200.5f, Maximum = 220, Minimum = 160, AverageTemperature = 28.5f, HasAutoPause = true },
new Activity { Id = 3, Type = "Swimming", Date = DateTime.Today, StartTime = DateTime.Now, EndTime = DateTime.Now.AddHours(1.5), Effort = 2, Variability = 0.4f, Variance = 0.05f, StandardDeviation = 0.15f, Average = 120.5f, Maximum = 140, Minimum = 100, AverageTemperature = 20.5f, HasAutoPause = false }
};
[TestInitialize]
public void SetUp()
{
_dataManagerMock = new Mock<IDataManager>();
_dataManagerMock.Setup(dm => dm.ActivityRepo.GetNbItems()).ReturnsAsync(_activities.Count);
_dataManagerMock.Setup(dm =>
dm.ActivityRepo.GetActivities(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<ActivityOrderCriteria>(), It.IsAny<bool>()))
.ReturnsAsync((int index, int count, ActivityOrderCriteria criteria, bool descending) =>
_activities.GetItemsWithFilterAndOrdering(c => true, index, count,
criteria != ActivityOrderCriteria.None ? criteria : null, descending));
_activityController = new ActivityController(_dataManagerMock.Object, new NullLogger<ActivityController>());
}
[TestMethod]
public async Task GetActivities_ReturnsPageResponse_WhenRequestIsValid()
{
var request = new PageRequest
{
Index = 0,
Count = 3,
OrderingPropertyName = "Id",
Descending = false
};
var result = await _activityController.GetActivities(request);
Assert.IsInstanceOfType(result.Result, typeof(OkObjectResult));
var okResult = result.Result as OkObjectResult;
Assert.IsNotNull(okResult);
Assert.IsInstanceOfType(okResult.Value, typeof(PageResponse<ActivityDto>));
var pageResponse = okResult.Value as PageResponse<ActivityDto>;
Assert.IsNotNull(pageResponse);
Assert.AreEqual(3, pageResponse.Total);
Assert.AreEqual(0, pageResponse.Index);
Assert.AreEqual(3, pageResponse.Count);
}
[TestMethod]
public async Task PostActivity_ReturnsCreatedAtAction_WhenRequestIsValid()
{
var activityDto = new ActivityDto
{
Id = 4,
Type = "Running",
Date = DateTime.Today,
StartTime = DateTime.Now,
EndTime = DateTime.Now.AddHours(1),
EffortFelt = 3,
Variability = 0.5f,
Variance = 0.1f,
StandardDeviation = 0.2f,
Average = 150.5f,
Maximum = 180,
Minimum = 120,
AverageTemperature = 25.5f,
HasAutoPause = false
};
_dataManagerMock.Setup(dm => dm.ActivityRepo.AddActivity(It.IsAny<Activity>())).ReturnsAsync(_activities.Last());
var result = await _activityController.PostActivity(activityDto);
Assert.IsInstanceOfType(result, typeof(CreatedAtActionResult));
var createdAtActionResult = result as CreatedAtActionResult;
Assert.IsNotNull(createdAtActionResult);
Assert.AreEqual("GetActivity", createdAtActionResult.ActionName);
Assert.AreEqual(201, createdAtActionResult.StatusCode);
}
[TestMethod]
public async Task GetActivity_ReturnsNotFound_WhenActivityDoesNotExist()
{
var id = 1;
_dataManagerMock.Setup(dm => dm.ActivityRepo.GetActivityByIdAsync(id)).ReturnsAsync((Activity)null);
var result = await _activityController.GetActivity(id);
Assert.IsInstanceOfType(result.Result, typeof(NotFoundObjectResult));
var notFoundResult = result.Result as NotFoundObjectResult;
Assert.IsNotNull(notFoundResult);
Assert.AreEqual(404, notFoundResult.StatusCode);
}
[TestMethod]
public async Task GetActivity_ReturnsInternalServerError_WhenExceptionOccurs()
{
var id = 1;
_dataManagerMock.Setup(dm => dm.ActivityRepo.GetActivityByIdAsync(id)).ThrowsAsync(new Exception("Simulated exception"));
var result = await _activityController.GetActivity(id);
Assert.IsInstanceOfType(result.Result, typeof(ObjectResult));
var objectResult = result.Result as ObjectResult;
Assert.IsNotNull(objectResult);
Assert.AreEqual(500, objectResult.StatusCode);
}
[TestMethod]
public async Task PutActivity_ReturnsNoContent_WhenRequestIsValid()
{
// Créer un exemple d'ActivityDto avec des données factices
var activityDto = new ActivityDto
{
Id = 1,
Type = "Running",
Date = DateTime.Today,
StartTime = DateTime.Now,
EndTime = DateTime.Now.AddHours(1),
EffortFelt = 3,
Variability = 0.5f,
Variance = 0.1f,
StandardDeviation = 0.2f,
Average = 150.5f,
Maximum = 180,
Minimum = 120,
AverageTemperature = 25.5f,
HasAutoPause = false,
HeartRates = new List<HeartRateDto>
{
new HeartRateDto
{
Timestamp = DateTime.Now,
Latitude = 40.7128,
Longitude = -74.0060,
Altitude = 10.5,
HeartRate = 120,
Cadence = 80,
Distance = 5.0,
Speed = 10.0,
Power = 150,
Temperature = 20.0
}
// Ajoutez d'autres objets HeartRateDto si nécessaire
}
};
// Configurer le mock pour simuler le comportement de la méthode UpdateActivity
_dataManagerMock.Setup(dm => dm.ActivityRepo.UpdateActivity(It.IsAny<int>(), It.IsAny<Activity>())).Returns(Task.FromResult(new Model.Activity()));
// Appeler la méthode à tester
var result = await _activityController.PutActivity(activityDto.Id, activityDto);
// Vérifier le résultat
Assert.IsInstanceOfType(result, typeof(NoContentResult));
}
[TestMethod]
public async Task DeleteActivity_ReturnsOk_WhenRequestIsValid()
{
var id = 1;
_dataManagerMock.Setup(dm => dm.ActivityRepo.GetActivityByIdAsync(id)).ReturnsAsync(_activities.FirstOrDefault(a => a.Id == id));
_dataManagerMock.Setup(dm => dm.ActivityRepo.DeleteActivity(id)).ReturnsAsync(true);
var result = await _activityController.DeleteActivity(id);
Assert.IsInstanceOfType(result, typeof(OkResult));
var okResult = result as OkResult;
Assert.IsNotNull(okResult);
Assert.AreEqual(200, okResult.StatusCode);
}
[TestMethod]
public async Task DeleteActivity_ReturnsNotFound_WhenActivityDoesNotExist()
{
var id = 100;
_dataManagerMock.Setup(dm => dm.ActivityRepo.GetActivityByIdAsync(id)).ReturnsAsync((Activity)null);
var result = await _activityController.DeleteActivity(id);
Assert.IsInstanceOfType(result, typeof(NotFoundObjectResult));
var notFoundResult = result as NotFoundObjectResult;
Assert.IsNotNull(notFoundResult);
Assert.AreEqual(404, notFoundResult.StatusCode);
}
}
}
Loading…
Cancel
Save