using ApiLeapHit.Controllers; using ApiLeapHit.Mapper; using DataBase.DataManager; using DataBase.Entity; using DTO; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace TestControleurs { [TestClass] public class UnitTestMessages { private DbDataManager _dataManager = new DbDataManager(); private readonly ILogger _logger = new NullLogger(); [TestMethod] public async Task ReceiveMessage_ReturnsOkResult() { // Arrange var controller = new MessagesController(_dataManager, _logger); var nb = _dataManager.GetNbMessages(); var testMessage = new Message { messageId = nb.Result+1, message = "Test message", timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc), player = 1 , chat =1}; await _dataManager.SendMessage(testMessage); // Act var result = await controller.ReceiveMessage(1); var objectResult = (ObjectResult)result.Result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.OK, objectResult.StatusCode); } [TestMethod] public async Task ReceiveMessage_ReturnsNotFound() { // Arrange var controller = new MessagesController(_dataManager, _logger); var nb = _dataManager.GetNbMessages(); // Act var result = await controller.ReceiveMessage(nb.Result+1); var objectResult = (ObjectResult)result.Result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.NotFound, objectResult.StatusCode); } [TestMethod] public async Task RemoveMessage_ReturnsBadRequest() { // Arrange var controller = new MessagesController(_dataManager, _logger); var nb = _dataManager.GetNbMessages(); // Act var result = await controller.RemoveMessage(nb.Result + 1); var objectResult = (ObjectResult)result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.BadRequest, objectResult.StatusCode); } [TestMethod] public async Task RemoveMessage_ReturnsOk() { // Arrange var controller = new MessagesController(_dataManager, _logger); var nb = _dataManager.GetNbMessages(); var testMessage = new Message { messageId = nb.Result + 1, message = "Test message", timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc), player = 1, chat = 1 }; // Act var result = await controller.RemoveMessage(nb.Result + 1); var objectResult = (ObjectResult)result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.BadRequest, objectResult.StatusCode); } [TestMethod] public async Task SendMessage_ReturnsCreated() { // Arrange var controller = new MessagesController(_dataManager, _logger); var nb = _dataManager.GetNbMessages(); var testMessage = new DTOMessage { messageId = nb.Result + 1, message = "Test message", timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc), PlayerId = 1, ChatId = 1 }; // Act var result = await controller.SendMessage(testMessage); var objectResult = (ObjectResult)result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.Created, objectResult.StatusCode); await controller.RemoveMessage(nb.Result + 1); } [TestMethod] public async Task SendMessage_ReturnsNotFound() { // Arrange var controller = new MessagesController(_dataManager, _logger); var nb = _dataManager.GetNbMessages(); var nbP = _dataManager.GetNbPlayers(); var testMessage = new DTOMessage { messageId = nb.Result + 1, message = "Test message", timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc), PlayerId = nb.Result+1, ChatId = 1 }; // Act var result = await controller.SendMessage(testMessage); var objectResult = (ObjectResult)result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.NotFound, objectResult.StatusCode); await controller.RemoveMessage(nb.Result + 1); } } }