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.
101 lines
2.9 KiB
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);
|
|
}
|
|
} |