domBudg/back/Services.Tests/Domain/UserServiceTests.cs

74 lines
2.7 KiB
C#

using Contracts.DTO;
using Contracts.Repositories;
using Contracts.SearchModels;
using Contracts.ViewModels;
using Moq;
using Services.Domain;
using Services.Support.Exceptions;
namespace Services.Tests.Domain;
public class UserServiceTests
{
[Fact]
public async Task Delete_WhenUserExists_ThenDeleteUser_ReturnsUserViewModel()
{
var userRepoMock = new Mock<IUserRepo>();
userRepoMock.Setup(repo => repo.Delete(It.IsAny<UserSearch>())).ReturnsAsync(new UserDto());
var userService = new UserService(userRepoMock.Object);
var result = await userService.Delete(new UserSearch());
userRepoMock.Verify(repo => repo.Delete(It.IsAny<UserSearch>()), Times.Once);
Assert.NotNull(result);
Assert.IsType<UserViewModel>(result);
}
[Fact]
public void Delete_WhenUserNotExists_ThenThrowsUserNotFoundException()
{
var userRepoMock = new Mock<IUserRepo>();
userRepoMock.Setup(repo => repo.Delete(It.IsAny<UserSearch>())).ReturnsAsync((UserDto?)null);
var userService = new UserService(userRepoMock.Object);
Assert.ThrowsAsync<UserNotFoundException>(() => userService.Delete(new UserSearch()));
}
[Fact]
public async Task Update_WhenUserExists_ThenUpdateUser_ReturnsUserViewModel()
{
var userRepoMock = new Mock<IUserRepo>();
userRepoMock.Setup(repo => repo.Update(It.IsAny<UserDto>())).ReturnsAsync(new UserDto());
var userService = new UserService(userRepoMock.Object);
var result = await userService.UpdateUserData(new UserDto());
userRepoMock.Verify(repo => repo.Update(It.IsAny<UserDto>()), Times.Once);
Assert.NotNull(result);
Assert.IsType<UserViewModel>(result);
}
[Fact]
public void Update_WhenUserNotFound_ThenThrowsUserNotFoundException()
{
var userRepoMock = new Mock<IUserRepo>();
userRepoMock.Setup(repo => repo.Update(It.IsAny<UserDto>())).ReturnsAsync((UserDto?)null);
var userService = new UserService(userRepoMock.Object);
Assert.ThrowsAsync<UserNotFoundException>(() => userService.UpdateUserData(new UserDto()));
}
[Fact]
public async Task GetDetails_ReturnsUserViewModel()
{
var userRepoMock = new Mock<IUserRepo>();
userRepoMock.Setup(repo => repo.Get(It.IsAny<UserSearch>())).ReturnsAsync(new UserDto());
var userService = new UserService(userRepoMock.Object);
var result = await userService.GetDetails(new UserSearch());
userRepoMock.Verify(repo => repo.Get(It.IsAny<UserSearch>()), Times.Once);
Assert.NotNull(result);
Assert.IsType<UserViewModel>(result);
}
}