You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OptifitWebService/TestAPI/ServicesTests/EventServicesTests.cs

97 lines
3.4 KiB

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<AlumniDbContext> _mockContext;
private readonly EventServices _eventServices;
public EventServicesTests()
{
var events = new List<EventEntity>
{
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<DbSet<EventEntity>>();
mockSet.As<IQueryable<EventEntity>>().Setup(m => m.Provider).Returns(events.Provider);
mockSet.As<IQueryable<EventEntity>>().Setup(m => m.Expression).Returns(events.Expression);
mockSet.As<IQueryable<EventEntity>>().Setup(m => m.ElementType).Returns(events.ElementType);
mockSet.As<IQueryable<EventEntity>>().Setup(m => m.GetEnumerator()).Returns(events.GetEnumerator());
_mockContext = new Mock<AlumniDbContext>();
_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);
}
}