using Xunit; using Moq; using System.Linq; using System.Collections.Generic; using Infrastructure; using Infrastructure.Entities; using Microsoft.EntityFrameworkCore; using Server.Dto.Request; using Server.Services; using Shared.Criteria; public class EventServicesTests { private readonly Mock _mockContext; private readonly EventServices _eventServices; public EventServicesTests() { var events = new List { new EventEntity { Id = "1", Title = "Event1", Description = "Description1", Date = DateTime.Now, nbPlaces = 100 }, new EventEntity { Id = "2", Title = "Event2", Description = "Description2", Date = DateTime.Now.AddDays(1), nbPlaces = 200 } }.AsQueryable(); var mockSet = new Mock>(); mockSet.As>().Setup(m => m.Provider).Returns(events.Provider); mockSet.As>().Setup(m => m.Expression).Returns(events.Expression); mockSet.As>().Setup(m => m.ElementType).Returns(events.ElementType); mockSet.As>().Setup(m => m.GetEnumerator()).Returns(events.GetEnumerator()); _mockContext = new Mock(); _mockContext.Setup(c => c.Events).Returns(mockSet.Object); _eventServices = new EventServices(_mockContext.Object); } [Fact] public async Task GetEventById_ReturnsEvent_WhenIdExists() { var result = await _eventServices.GetEventById("1"); Assert.NotNull(result); Assert.Equal("1", result.Id); } [Fact] public async Task GetEventById_ReturnsNull_WhenIdDoesNotExist() { var result = await _eventServices.GetEventById("3"); Assert.Null(result); } [Fact] public async Task GetEvents_ReturnsEvents_WhenTitleExists() { var result = await _eventServices.GetEvents("Event1", 1, 1, EventOrderCriteria.Date, true); Assert.Single(result.Events); Assert.Equal("Event1", result.Events.First().Title); } [Fact] public async Task GetEvents_ReturnsEmpty_WhenTitleDoesNotExist() { var result = await _eventServices.GetEvents("Event3", 1, 1, EventOrderCriteria.Date, true); Assert.Empty(result.Events); } [Fact] public async Task UpdateEvent_ReturnsUpdatedEvent_WhenIdExists() { var eventDto = new RequestEventDto { Title = "UpdatedEvent", Description = "UpdatedDescription", Date = DateTime.Now, nbMaxRegistrations = 150 }; var result = await _eventServices.UpdateEvent("1", eventDto); Assert.NotNull(result); Assert.Equal("UpdatedEvent", result.Title); } [Fact] public async Task UpdateEvent_ReturnsNull_WhenIdDoesNotExist() { var eventDto = new RequestEventDto { Title = "UpdatedEvent", Description = "UpdatedDescription", Date = DateTime.Now, nbMaxRegistrations = 150 }; var result = await _eventServices.UpdateEvent("3", eventDto); Assert.Null(result); } [Fact] public async Task DeleteEvent_ReturnsTrue_WhenIdExists() { var result = await _eventServices.DeleteEvent("1"); Assert.True(result); } [Fact] public async Task DeleteEvent_ReturnsFalse_WhenIdDoesNotExist() { var result = await _eventServices.DeleteEvent("3"); Assert.False(result); } }