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 _mockContext; private readonly AlumniService _alumniService; public AlumniServiceTests() { var alumni = new List { new User { Id = "1", LastName = "Alumni1" }, new User { Id = "2", LastName = "Alumni2" } }.AsQueryable(); var mockSet = new Mock>(); mockSet.As>().Setup(m => m.Provider).Returns(alumni.Provider); mockSet.As>().Setup(m => m.Expression).Returns(alumni.Expression); mockSet.As>().Setup(m => m.ElementType).Returns(alumni.ElementType); mockSet.As>().Setup(m => m.GetEnumerator()).Returns(alumni.GetEnumerator()); _mockContext = new Mock(); _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); } }