using DTOs; using FluentAssertions; namespace BowlingAPITest { public class TestPartiControlleur { [Fact] public async void Get_ShouldReturnOkResult() { // Arrange var partie1 = new PartieDTO { Score=1 }; var partie2 = new PartieDTO { Score = 2 }; var parti = GetTestItems(); var mockService = new Mock(); mockService.Setup(service => service.GetAll()).ReturnsAsync(parti); var controller = new PartieController(mockService.Object); // Act var result = await controller.Get() as OkObjectResult; var value = result.Value as List; // Assert result.Should().NotBeNull(); value.Should().NotBeNull(); result.StatusCode.Should().Be(200); value.Should().BeEquivalentTo(parti); } [Fact] public async void Get_ShouldReturnAllItems() { // Arrange var testItems = GetTestItems(); var mockService = new Mock(); mockService.Setup(service => service.GetAll()).ReturnsAsync(testItems); var controller = new PartieController(mockService.Object); // Act var result = await controller.Get(); // Assert var okResult = result as OkObjectResult; var items = Assert.IsType>(okResult.Value); Assert.Equal(2, items.Count); } private IEnumerable GetTestItems() { var testItems = new List(); testItems.Add(new PartieDTO { Score = 1 }); testItems.Add(new PartieDTO { Score = 2 }); return testItems; } [Fact] public async Task Get_With_Invalid_Name_Should_Return_BadRequest() { // Arrange var PartieController = new PartieController(null); // Act var result = await PartieController.Get(null); // Assert result.Should().BeOfType(); var badRequestResult = result as BadRequestObjectResult; badRequestResult.Value.Should().Be("Le score de la partie est obligatoire"); } [Fact] public async Task Get_With_Valid_Name_Should_Return_Ok_With_partie() { // Arrange var parti = new PartieDTO { Id = 1, Score = 1 }; var partiservicemock = new Mock(); partiservicemock.Setup(x => x.GetDataWithName("John Doe")).ReturnsAsync(parti); var particontrolleur = new PartieController(partiservicemock.Object); // Act var result = await particontrolleur.Get("John Doe"); // Assert result.Should().BeOfType(); var okResult = result as OkObjectResult; okResult.Value.Should().BeEquivalentTo(parti); } } }