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

93 lines
3.6 KiB

using Moq;
using Infrastructure;
using Infrastructure.Entities;
using Microsoft.EntityFrameworkCore;
using Server.Dto.Request;
using Server.Services;
public class ExperienceServicesTests
{
private readonly Mock<AlumniDbContext> _mockContext;
private readonly ExperienceServices _experienceServices;
public ExperienceServicesTests()
{
var experiences = new List<ExperienceEntity>
{
new ExperienceEntity { Id = "1", Title = "Experience1", CompanyName = "Company1", StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(30), IsCurrent = true },
new ExperienceEntity { Id = "2", Title = "Experience2", CompanyName = "Company2", StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(30), IsCurrent = false }
}.AsQueryable();
var mockSet = new Mock<DbSet<ExperienceEntity>>();
mockSet.As<IQueryable<ExperienceEntity>>().Setup(m => m.Provider).Returns(experiences.Provider);
mockSet.As<IQueryable<ExperienceEntity>>().Setup(m => m.Expression).Returns(experiences.Expression);
mockSet.As<IQueryable<ExperienceEntity>>().Setup(m => m.ElementType).Returns(experiences.ElementType);
mockSet.As<IQueryable<ExperienceEntity>>().Setup(m => m.GetEnumerator()).Returns(experiences.GetEnumerator());
_mockContext = new Mock<AlumniDbContext>();
_mockContext.Setup(c => c.Experiences).Returns(mockSet.Object);
_experienceServices = new ExperienceServices(_mockContext.Object);
}
[Fact]
public async Task GetExperienceById_ReturnsExperience_WhenIdExists()
{
var result = await _experienceServices.GetExperienceById("1");
Assert.NotNull(result);
Assert.Equal("1", result.Id);
}
[Fact]
public async Task GetExperienceById_ReturnsNull_WhenIdDoesNotExist()
{
var result = await _experienceServices.GetExperienceById("3");
Assert.Null(result);
}
[Fact]
public async Task GetExperiences_ReturnsExperiences_WhenTitleExists()
{
var result = await _experienceServices.GetExperiences("Experience1", 1, 1);
Assert.Single(result.Experiences);
Assert.Equal("Experience1", result.Experiences.First().Title);
}
[Fact]
public async Task GetExperiences_ReturnsEmpty_WhenTitleDoesNotExist()
{
var result = await _experienceServices.GetExperiences("Experience3", 1, 1);
Assert.Empty(result.Experiences);
}
[Fact]
public async Task UpdateExperience_ReturnsUpdatedExperience_WhenIdExists()
{
var experience = new RequestExperienceDto { Title = "UpdatedExperience", CompanyName = "UpdatedCompany", StartingDate = DateTime.Now, EndingDate = DateTime.Now.AddDays(30), CurrentJob = false };
var result = await _experienceServices.UpdateExperience("1", experience);
Assert.NotNull(result);
Assert.Equal("UpdatedExperience", result.Title);
}
[Fact]
public async Task UpdateExperience_ReturnsNull_WhenIdDoesNotExist()
{
var experience = new RequestExperienceDto { Title = "UpdatedExperience", CompanyName = "UpdatedCompany", StartingDate = DateTime.Now, EndingDate = DateTime.Now.AddDays(30), CurrentJob = false };
var result = await _experienceServices.UpdateExperience("3", experience);
Assert.Null(result);
}
[Fact]
public async Task DeleteExperience_ReturnsTrue_WhenIdExists()
{
var result = await _experienceServices.DeleteExperience("1");
Assert.True(result);
}
[Fact]
public async Task DeleteExperience_ReturnsFalse_WhenIdDoesNotExist()
{
var result = await _experienceServices.DeleteExperience("3");
Assert.False(result);
}
}