more testing
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using UserManager.Application.Features.Users.Requests;
|
||||
using UserManager.Application.Features.Users.Responses;
|
||||
using UserManager.Application.Features.Users.Services;
|
||||
using UserManager.Domain.Entities;
|
||||
using UserManager.Infrastructure;
|
||||
|
||||
namespace UserManager.Application.IntegrationTests.Features.Users
|
||||
{
|
||||
[TestClass]
|
||||
public class UserServiceIntegrationTests
|
||||
{
|
||||
|
||||
private UserManagerContext _context = null!;
|
||||
|
||||
[TestInitialize]
|
||||
public void Initialize()
|
||||
{
|
||||
DbContextOptions<UserManagerContext> options = new DbContextOptionsBuilder<UserManagerContext>()
|
||||
.UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
|
||||
.Options;
|
||||
|
||||
_context = new UserManagerContext(options);
|
||||
}
|
||||
|
||||
[TestCleanup]
|
||||
public void Cleanup()
|
||||
{
|
||||
_context.Dispose();
|
||||
_context = null!;
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task CreateUserAsync_ShouldAddUserToDatabase_WhenCreateUserCalled()
|
||||
{
|
||||
// Arrange
|
||||
var request = new CreateUserRequestDto()
|
||||
{
|
||||
FirstName = "John",
|
||||
LastName = "Doe",
|
||||
};
|
||||
|
||||
UnitOfWork unitOfWork = new(_context);
|
||||
UserService userService = new(unitOfWork);
|
||||
|
||||
// Act
|
||||
CreateUserResponseDto responseDto = await userService.CreateUserAsync(request);
|
||||
|
||||
// Assert
|
||||
User user = _context.Users.First();
|
||||
Assert.AreEqual(1, _context.Users.Count());
|
||||
Assert.AreEqual("John", user.FirstName);
|
||||
Assert.AreEqual("John", responseDto.FirstName);
|
||||
Assert.AreEqual(1, user.UserId);
|
||||
Assert.AreEqual(1, responseDto.UserId);
|
||||
Assert.IsTrue(user.CreateAtUtc > DateTime.UtcNow.AddSeconds(-1));
|
||||
Assert.IsTrue(user.CreateAtUtc < DateTime.UtcNow.AddSeconds(1));
|
||||
Assert.IsNull(user.UpdatedAtUtc);
|
||||
Assert.IsNull(user.DeletedAtUtc);
|
||||
Assert.IsFalse(user.IsDeleted);
|
||||
}
|
||||
}
|
||||
}
|
11
tests/UserManager.Application.IntegrationTests/UnitTest1.cs
Normal file
11
tests/UserManager.Application.IntegrationTests/UnitTest1.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace UserManager.Application.IntegrationTests
|
||||
{
|
||||
[TestClass]
|
||||
public class UnitTest1
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestMethod1()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="8.0.10" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\UserManager.Infrastructure\UserManager.Infrastructure.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@@ -0,0 +1,46 @@
|
||||
using FluentValidation.Results;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using UserManager.Application.Features.Users.Requests;
|
||||
|
||||
namespace UserManager.Application.UnitTests.Features.Users
|
||||
{
|
||||
[TestClass]
|
||||
public class CreateUserRequestDtoValidationUnitTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void CreateUserRequestDtoValidator_WhenFirstNameIsEmpty_ShouldReturnValidationError()
|
||||
{
|
||||
// Arrange
|
||||
CreateUserRequestDto request = new()
|
||||
{
|
||||
FirstName = string.Empty,
|
||||
LastName = "Doe"
|
||||
};
|
||||
|
||||
// Act
|
||||
ValidationResult validationResult = new CreateUserRequestDtoValidator().Validate(request);
|
||||
|
||||
// Assert
|
||||
Assert.IsFalse(validationResult.IsValid);
|
||||
Assert.AreEqual("FirstName is required.", validationResult.Errors[0].ErrorMessage);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void CreateUserRequestDtoValidator_WhenLastNameIsEmpty_ShouldReturnValidationError()
|
||||
{
|
||||
// Arrange
|
||||
CreateUserRequestDto request = new()
|
||||
{
|
||||
FirstName = "John",
|
||||
LastName = string.Empty
|
||||
};
|
||||
|
||||
// Act
|
||||
ValidationResult validationResult = new CreateUserRequestDtoValidator().Validate(request);
|
||||
|
||||
// Assert
|
||||
Assert.IsFalse(validationResult.IsValid);
|
||||
Assert.AreEqual("LastName is required.", validationResult.Errors[0].ErrorMessage);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,37 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Moq;
|
||||
using UserManager.Application.Features.Users.Requests;
|
||||
using UserManager.Application.Interfaces;
|
||||
using UserManager.Application.Features.Users.Services;
|
||||
using UserManager.Application.Features.Users.Responses;
|
||||
using UserManager.Domain.Entities;
|
||||
|
||||
namespace UserManager.Application.UnitTests.Features.Users
|
||||
{
|
||||
[TestClass]
|
||||
public class UserServiceUnitTests
|
||||
{
|
||||
[TestMethod]
|
||||
public async Task CreateUserAsync_ShouldCallAddAndSave_WhenCreateUserCalled()
|
||||
{
|
||||
// Arrange
|
||||
Mock<IUnitOfWork> unitOfWork = new();
|
||||
Mock<IUserRepository> userRepository = new();
|
||||
unitOfWork.SetupGet(u => u.UserRepository).Returns(userRepository.Object);
|
||||
var request = new CreateUserRequestDto()
|
||||
{
|
||||
FirstName = "John",
|
||||
LastName = "Doe",
|
||||
};
|
||||
|
||||
UserService userService = new(unitOfWork.Object);
|
||||
|
||||
// Act
|
||||
CreateUserResponseDto responseDto = await userService.CreateUserAsync(request);
|
||||
|
||||
// Assert
|
||||
unitOfWork.Verify(u => u.UserRepository.CreateAsync(It.IsAny<User>()), Times.Once);
|
||||
unitOfWork.Verify(u => u.SaveChangesAsync(), Times.Once);
|
||||
}
|
||||
}
|
||||
}
|
@@ -4,6 +4,18 @@
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="Moq" Version="4.20.72" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.6.1" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.6.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\src\UserManager.Application\UserManager.Application.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
Reference in New Issue
Block a user