74 lines
2.7 KiB
C#
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);
|
|
}
|
|
} |