UserValidatorTests

This commit is contained in:
Artemy
2025-06-17 21:24:54 +07:00
parent d5a4d9141b
commit 22de0e9630
6 changed files with 196 additions and 27 deletions
-1
View File
@@ -26,7 +26,6 @@
<ItemGroup>
<Folder Include="IntegrationTests\Controllers\" />
<Folder Include="UnitTests\Infrastructure\" />
<Folder Include="UnitTests\Services\" />
</ItemGroup>
@@ -53,7 +53,7 @@ public class UsersRepositoryTests
Assert.That(result, Is.Not.Null);
Assert.That(result.Count, Is.EqualTo(users.Count));
Assert.That(result.Select(u => u.Id), Is.EquivalentTo(users.Select(u => u.Id)));
Assert.That(result.Select(u => u.Username), Is.EquivalentTo(users.Select(u => u.Username)));
Assert.That(result.Select(u => u.Name), Is.EquivalentTo(users.Select(u => u.Name)));
}
[Test]
@@ -72,7 +72,7 @@ public class UsersRepositoryTests
// Assert
Assert.That(result, Is.Not.Null);
Assert.That(result.Username, Is.EqualTo(user.Username));
Assert.That(result.Name, Is.EqualTo(user.Name));
Assert.That(result.Id, Is.EqualTo(user.Id));
}
@@ -109,7 +109,7 @@ public class UsersRepositoryTests
Assert.That(result, Is.Not.Null);
Assert.That(result.Count, Is.EqualTo(users.Count));
Assert.That(result.Select(r => r.Id), Is.EquivalentTo(users.Select(u => u.Id)));
Assert.That(result.Select(u => u.Username), Is.EquivalentTo(users.Select(u => u.Username)));
Assert.That(result.Select(u => u.Name), Is.EquivalentTo(users.Select(u => u.Name)));
}
[Test]
@@ -140,10 +140,10 @@ public class UsersRepositoryTests
await context.SaveChangesAsync();
// Act
var result = await userRepository.FindByUsername(user.Username);
var result = await userRepository.FindByUsername(user.Name);
// Assert
Assert.That(result, Is.Not.Null);
Assert.That(result.Username, Is.EqualTo(user.Username));
Assert.That(result.Name, Is.EqualTo(user.Name));
Assert.That(result.Id, Is.EqualTo(user.Id));
}
@@ -174,11 +174,11 @@ public class UsersRepositoryTests
await context.SaveChangesAsync();
// Act
var result = await userRepository.FindByRangeUsernames(users.Select(u => u.Username));
var result = await userRepository.FindByRangeUsernames(users.Select(u => u.Name));
// Assert
Assert.That(result, Is.Not.Null);
Assert.That(result.Select(u => u.Username), Is.EquivalentTo(users.Select(u => u.Username)));
Assert.That(result.Select(u => u.Name), Is.EquivalentTo(users.Select(u => u.Name)));
Assert.That(result.Select(u => u.Id), Is.EquivalentTo(users.Select(u => u.Id)));
}
@@ -254,7 +254,7 @@ public class UsersRepositoryTests
// Assert
Assert.That(res, Is.Not.Null);
Assert.That(res.Username, Is.EqualTo(user.Username));
Assert.That(res.Name, Is.EqualTo(user.Name));
Assert.That(res.Id, Is.EqualTo(user.Id));
}
@@ -262,7 +262,7 @@ public class UsersRepositoryTests
public async Task Given_InvalidUser_When_AddUser_Should_Throw_AdditionUserException()
{
var user = _fixture.Create<User>();
user.Username = string.Empty;
user.Name = string.Empty;
await using var context = new GovorDbContext(_options);
var userRepository = new UsersRepository(context, _userValidator);
@@ -361,7 +361,7 @@ public class UsersRepositoryTests
await context.SaveChangesAsync();
// Act
var res = await userRepository.ExistsUsername(user.Username);
var res = await userRepository.ExistsUsername(user.Name);
// Assert
Assert.That(res, Is.True);
@@ -378,7 +378,7 @@ public class UsersRepositoryTests
// Act
var res = await userRepository.ExistsUsername(user.Username);
var res = await userRepository.ExistsUsername(user.Name);
// Assert
Assert.That(res, Is.False);
@@ -0,0 +1,169 @@
using AutoFixture;
using Govor.Core.Infrastructure.Validators;
using Govor.Core.Models;
namespace Govor.API.Tests.UnitTests.Infrastructure.Validators;
[TestFixture]
public class UserValidatorTests
{
private IObjectValidator<User> _userValidator;
private Fixture _fixture;
[SetUp]
public void SetUp()
{
_userValidator = new UserValidator();
_fixture = new Fixture();
_fixture.Behaviors
.OfType<ThrowingRecursionBehavior>()
.ToList()
.ForEach(b => _fixture.Behaviors.Remove(b));
_fixture.Behaviors.Add(new OmitOnRecursionBehavior());
}
[Test]
public void Given_NullUser_ShouldThrow_InvalidObjectException()
{
// Act & Assert
Assert.ThrowsAsync<InvalidObjectException<User>>(async () => _userValidator.Validate(default));
}
[Test]
public void Given_NullUser_Then_Returns_False()
{
// Act & Assert
Assert.That(_userValidator.TryValidate(default), Is.False);
}
[Test]
public void Given_EmptyId_ShouldThrow_InvalidObjectException()
{
// Arrange
User user = new User()
{
PasswordHash = _fixture.Create<string>(),
Name = _fixture.Create<string>(),
Id = Guid.Empty,
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.ThrowsAsync<InvalidObjectException<User>>(async () => _userValidator.Validate(user));
}
[Test]
public void Given_EmptyId_Then_Returns_False()
{
// Arrange
User user = new User()
{
PasswordHash = _fixture.Create<string>(),
Name = _fixture.Create<string>(),
Id = Guid.Empty,
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.That(_userValidator.TryValidate(user), Is.False);
}
[Test]
public void Given_EmptyPassword_ShouldThrow_InvalidObjectException()
{
// Arrange
User user = new User()
{
PasswordHash = string.Empty,
Name = _fixture.Create<string>(),
Id = Guid.NewGuid(),
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.ThrowsAsync<InvalidObjectException<User>>(async () => _userValidator.Validate(user));
}
[Test]
public void Given_EmptyPassword_Then_Returns_False()
{
// Arrange
User user = new User()
{
PasswordHash = string.Empty,
Name = _fixture.Create<string>(),
Id = Guid.NewGuid(),
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.That(_userValidator.TryValidate(user), Is.False);
}
[Test]
public void Given_EmptyName_ShouldThrow_InvalidObjectException()
{
// Arrange
User user = new User()
{
PasswordHash = _fixture.Create<string>(),
Name = String.Empty,
Id = Guid.NewGuid(),
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.ThrowsAsync<InvalidObjectException<User>>(async () => _userValidator.Validate(user));
}
[Test]
public void Given_EmptyName_Then_Returns_False()
{
// Arrange
User user = new User()
{
PasswordHash = _fixture.Create<string>(),
Name = String.Empty,
Id = Guid.NewGuid(),
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.That(_userValidator.TryValidate(user), Is.False);
}
[Test]
public void Given_ValidUser_ShouldNotThrow_InvalidObjectException()
{
// Arrange
User user = new User()
{
PasswordHash = _fixture.Create<string>(),
Name = _fixture.Create<string>(),
Id = Guid.NewGuid(),
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.DoesNotThrowAsync(async () => _userValidator.Validate(user));
}
[Test]
public void Given_ValidUser_Then_Returns_True()
{
// Arrange
User user = new User()
{
PasswordHash = _fixture.Create<string>(),
Name = _fixture.Create<string>(),
Id = Guid.NewGuid(),
CreatedOn = DateOnly.FromDateTime(DateTime.Now),
};
// Act & Assert
Assert.That(_userValidator.TryValidate(user), Is.True);
}
}