using System; using System.Collections.Generic; using System.Linq; using System.Text; using Xunit; using Moq; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using Server.Dto.Response; using Server.Controller.v1; using Server.IServices; using Shared.Criteria; using System.Threading.Tasks; namespace TestAPI.ControllerTests { public class AlumuniRestrictedControllerTest { private readonly Mock> _loggerMock = new Mock>(); private readonly Mock _alumnisServiceMock = new Mock(); [Fact] public async Task GetAlumniRestricted_NoAlumni_ReturnsNoContent() { // Arrange var lastName = "Doe"; _alumnisServiceMock.Setup(service => service.GetAlumnisRestricted(lastName, 1, 5, AlumniOrderCriteria.None, true)) .ReturnsAsync((0L, new List())); var controller = new AlumniRestrictedController(_loggerMock.Object, _alumnisServiceMock.Object); // Act var result = await controller.GetAlumniRestricted(lastName); // Assert var actionResult = Assert.IsType(result); } [Fact] public async Task GetAlumniRestricted_AlumniExist_ReturnsOk() { // Arrange var lastName = "Doe"; var alumniList = new List { new ResponseRestrictedAlumniDto { Id = "1", LastName = "Doe" } }; _alumnisServiceMock.Setup(service => service.GetAlumnisRestricted(lastName, 1, 5, AlumniOrderCriteria.None, true)) .ReturnsAsync((alumniList.Count, alumniList)); var controller = new AlumniRestrictedController(_loggerMock.Object, _alumnisServiceMock.Object); // Act var result = await controller.GetAlumniRestricted(lastName); // Assert var actionResult = Assert.IsType(result); var returnValue = Assert.IsAssignableFrom>(actionResult.Value); Assert.Single(returnValue); } [Fact] public void GetAlumniRestrictedById_AlumniExists_ReturnsOk() { // Arrange var alumniId = "1"; var alumniDto = new ResponseRestrictedAlumniDto { Id = alumniId }; _alumnisServiceMock.Setup(service => service.GetAlumniRestrictedById(alumniId)).ReturnsAsync(alumniDto); var controller = new AlumniRestrictedController(_loggerMock.Object, _alumnisServiceMock.Object); // Act var result = controller.GetAlumniRestrictedById(alumniId); // Assert var actionResult = Assert.IsType(result); var returnValue = Assert.IsType(actionResult.Value); Assert.Equal(alumniId, returnValue.Id); } [Fact] public void GetAlumniRestrictedById_AlumniDoesNotExist_ReturnsNotFound() { // Arrange var alumniId = "1"; _alumnisServiceMock.Setup(service => service.GetAlumniRestrictedById(alumniId)).ReturnsAsync((ResponseRestrictedAlumniDto)null); var controller = new AlumniRestrictedController(_loggerMock.Object, _alumnisServiceMock.Object); // Act var result = controller.GetAlumniRestrictedById(alumniId); // Assert var actionResult = Assert.IsType(result); } } }