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/AlumniServiceTests.cs

101 lines
2.9 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 AlumniServiceTests
{
private readonly Mock<AlumniDbContext> _mockContext;
private readonly AlumniService _alumniService;
public AlumniServiceTests()
{
var alumni = new List<User>
{
new User { Id = "1", LastName = "Alumni1" },
new User { Id = "2", LastName = "Alumni2" }
}.AsQueryable();
var mockSet = new Mock<DbSet<User>>();
mockSet.As<IQueryable<User>>().Setup(m => m.Provider).Returns(alumni.Provider);
mockSet.As<IQueryable<User>>().Setup(m => m.Expression).Returns(alumni.Expression);
mockSet.As<IQueryable<User>>().Setup(m => m.ElementType).Returns(alumni.ElementType);
mockSet.As<IQueryable<User>>().Setup(m => m.GetEnumerator()).Returns(alumni.GetEnumerator());
_mockContext = new Mock<AlumniDbContext>();
_mockContext.Setup(c => c.Alumni).Returns(mockSet.Object);
_alumniService = new AlumniService(_mockContext.Object);
}
[Fact]
public async Task GetAlumniById_ReturnsNull_WhenIdDoesNotExist()
{
var result = await _alumniService.GetAlumniById("3");
Assert.Null(result);
}
[Fact]
public async Task GetAlumnis_ReturnsEmpty_WhenLastNameDoesNotExist()
{
var result = await _alumniService.GetAlumnis("Alumni3", 1, 1, AlumniOrderCriteria.Name, true);
Assert.Empty(result.Alumnis);
}
[Fact]
public async Task GetAlumnisRestricted_NoMatchingLastName_ReturnsEmpty()
{
// Arrange
string lastName = "NonExistingLastName";
var page = 1;
var size = 5;
// Act
var result = await _alumniService.GetAlumnisRestricted(lastName, page, size);
// Assert
Assert.Empty(result.Alumnis);
}
[Fact]
public async Task GetAlumnisRestricted_MatchingLastName_ReturnsAlumni()
{
// Arrange
string lastName = "Alumni1";
var page = 1;
var size = 5;
// Act
var result = await _alumniService.GetAlumnisRestricted(lastName, page, size);
// Assert
Assert.NotEmpty(result.Alumnis);
Assert.Equal(1, result.Alumnis.Count());
Assert.Equal("Alumni1", result.Alumnis.First().LastName);
}
[Fact]
public async Task GetAlumnisRestricted_PaginationWorksCorrectly()
{
// Arrange
string lastName = null;
var page = 2;
var size = 1;
// Act
var result = await _alumniService.GetAlumnisRestricted(lastName, page, size);
// Assert
Assert.NotEmpty(result.Alumnis);
Assert.Single(result.Alumnis);
Assert.Equal("Alumni2", result.Alumnis.First().LastName);
}
}