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.
93 lines
3.6 KiB
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);
|
|
}
|
|
} |