using ApiLeapHit.Controllers; using ApiLeapHit.Mapper; using DataBase.Context; using DataBase.DataManager; using DataBase.Entity; using DTO; using DTO.Factory; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System.Net; using System.Text.Json; using System.Threading.Tasks; namespace TestControleurs { [TestClass] public class UnitTestGames { private DbDataManager _dataManager = new DbDataManager(); private readonly ILogger _logger = new NullLogger(); [TestMethod] public async Task GetGame_ReturnsOkResult() { // Arrange var controller = new GamesController(_dataManager, _logger); var nb = _dataManager.GetNbGames(); var testGame = new Game { gameId = nb.Result + 1, durationGame = 3, loser = 1, winner = 2, nbMaxEchanges = 33, scoreLoser = 5, scoreWinner = 6 }; await _dataManager.AddGame(testGame); // Act var result = await controller.GetGame(nb.Result + 1); var objectResult = (ObjectResult)result.Result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.OK, objectResult.StatusCode); } [TestMethod] public async Task GetGame_ReturnsNotFoundResult() { // Arrange var controller = new GamesController(_dataManager, _logger); var nb = _dataManager.GetNbGames(); // Act var result = await controller.GetGame(nb.Result + 1); var objectResult = (ObjectResult)result.Result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.NotFound, objectResult.StatusCode); } [TestMethod] public async Task RemoveGame_ReturnsNotFoundResult() { // Arrange var controller = new GamesController(_dataManager, _logger); var nb = _dataManager.GetNbGames(); // Act var result = await controller.RemoveGame(nb.Result + 1); var objectResult = (ObjectResult)result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.NotFound, objectResult.StatusCode); } [TestMethod] public async Task RemoveGame_ReturnsOKResult() { // Arrange var controller = new GamesController(_dataManager, _logger); var nb = _dataManager.GetNbGames(); var testGame = new Game { gameId = nb.Result + 1, durationGame = 3, loser = 1, winner = 2, nbMaxEchanges = 33, scoreLoser = 5, scoreWinner = 6 }; await _dataManager.AddGame(testGame); // Act var result = await controller.RemoveGame(nb.Result + 1); var objectResult = (ObjectResult)result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.OK, objectResult.StatusCode); } [TestMethod] public async Task GetGameByIdPlayer_ReturnsOKResult() { // Arrange var controller = new GamesController(_dataManager, _logger); var nb = _dataManager.GetNbGames(); var nbP = _dataManager.GetNbPlayers(); var testGame = new Game { gameId = nb.Result + 1, durationGame = 3, loser = nbP.Result, winner = 2, nbMaxEchanges = 33, scoreLoser = 5, scoreWinner = 6 }; await _dataManager.AddGame(testGame); // Act var result = await controller.GetGameByIdPlayer(nbP.Result); var objectResult = (ObjectResult)result.Result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.OK, objectResult.StatusCode); } [TestMethod] public async Task GetGameByIdPlayer_ReturnsNotFoundResult() { // Arrange var controller = new GamesController(_dataManager, _logger); var nb = _dataManager.GetNbPlayers(); // Act var result = await controller.GetGameByIdPlayer(nb.Result + 1); var objectResult = (ObjectResult)result.Result; // Assert Assert.IsNotNull(objectResult); Assert.AreEqual((int)HttpStatusCode.NotFound, objectResult.StatusCode); } //[HttpPost] //public async Task AddGame([FromBody] DTOGame dtoGame) //{ // try // { // var winner = await _dataManager.GetPlayer(dtoGame.playerWinner); // var loser = await _dataManager.GetPlayer(dtoGame.playerLoser); // if (winner == null || loser == null) // { // var errorMessage = "Le joueur gagnant ou le joueur perdant n'existe pas pour la partie avec l'identifiant " + dtoGame.gameId + "."; // _logger.LogError(errorMessage); // return NotFound(new ApiResponse(errorMessage)); // } // var game = dtoGame.ToGame(); // await _dataManager.AddGame(game); // var successMessage = "La partie avec l'identifiant " + game.gameId + " a été ajoutée avec succès."; // _logger.LogInformation(successMessage); // return Ok(new ApiResponse(successMessage, game)); // } // catch (Exception ex) // { // var errorMessage = "Une erreur est survenue lors de l'ajout de la partie : " + ex.Message; // _logger.LogError(errorMessage); // return StatusCode(500, new ApiResponse(errorMessage)); // } //} } }