mirror of
https://github.com/alex289/CleanArchitecture.git
synced 2025-06-29 18:21:08 +00:00
feat: Extend tests to verify deleted entity query behavior
This commit is contained in:
parent
9e74b9f66a
commit
76da8251d5
@ -54,8 +54,37 @@ public sealed class TenantControllerTests
|
||||
.FirstOrDefault(x => x.Id == _fixture.CreatedTenantId)!
|
||||
.Users.Count().Should().Be(1);
|
||||
}
|
||||
|
||||
|
||||
[Test, Order(2)]
|
||||
public async Task Should_Not_Get_Deleted_Tenant_By_Id()
|
||||
{
|
||||
var response = await _fixture.ServerClient.GetAsync($"/api/v1/Tenant/{_fixture.DeletedTenantId}");
|
||||
|
||||
response.StatusCode.Should().Be(HttpStatusCode.NotFound);
|
||||
|
||||
var message = await response.Content.ReadAsJsonAsync<TenantViewModel>();
|
||||
|
||||
message?.Data.Should().BeNull();
|
||||
}
|
||||
|
||||
[Test, Order(3)]
|
||||
public async Task Should_Get_All_Tenants_Including_Deleted()
|
||||
{
|
||||
var response = await _fixture.ServerClient.GetAsync(
|
||||
"api/v1/Tenant?searchTerm=Test&pageSize=5&page=1&includeDeleted=true");
|
||||
|
||||
response.StatusCode.Should().Be(HttpStatusCode.OK);
|
||||
|
||||
var message = await response.Content.ReadAsJsonAsync<PagedResult<TenantViewModel>>();
|
||||
|
||||
message?.Data!.Items.Should().NotBeEmpty();
|
||||
message!.Data!.Items.Should().HaveCount(2);
|
||||
message.Data!.Items
|
||||
.FirstOrDefault(x => x.Id == _fixture.DeletedTenantId)
|
||||
.Should().NotBeNull();
|
||||
}
|
||||
|
||||
[Test, Order(4)]
|
||||
public async Task Should_Create_Tenant()
|
||||
{
|
||||
var request = new CreateTenantViewModel("Test Tenant 2");
|
||||
@ -80,7 +109,7 @@ public sealed class TenantControllerTests
|
||||
tenantMessage.Data.Name.Should().Be(request.Name);
|
||||
}
|
||||
|
||||
[Test, Order(3)]
|
||||
[Test, Order(5)]
|
||||
public async Task Should_Update_Tenant()
|
||||
{
|
||||
var request = new UpdateTenantViewModel(_fixture.CreatedTenantId, "Test Tenant 3");
|
||||
@ -107,7 +136,7 @@ public sealed class TenantControllerTests
|
||||
tenantMessage.Data.Name.Should().Be(request.Name);
|
||||
}
|
||||
|
||||
[Test, Order(4)]
|
||||
[Test, Order(6)]
|
||||
public async Task Should_Delete_Tenant()
|
||||
{
|
||||
var response = await _fixture.ServerClient.DeleteAsync($"/api/v1/Tenant/{_fixture.CreatedTenantId}");
|
||||
|
@ -61,8 +61,37 @@ public sealed class UserControllerTests
|
||||
content.FirstName.Should().Be(TestAuthenticationOptions.FirstName);
|
||||
content.LastName.Should().Be(TestAuthenticationOptions.LastName);
|
||||
}
|
||||
|
||||
|
||||
[Test, Order(2)]
|
||||
public async Task Should_Get_All_User_Including_Deleted()
|
||||
{
|
||||
var response = await _fixture.ServerClient.GetAsync("/api/v1/user?includeDeleted=true");
|
||||
|
||||
response.StatusCode.Should().Be(HttpStatusCode.OK);
|
||||
|
||||
var message = await response.Content.ReadAsJsonAsync<PagedResult<UserViewModel>>();
|
||||
|
||||
message?.Data.Should().NotBeNull();
|
||||
|
||||
var content = message!.Data!.Items.ToList();
|
||||
|
||||
content.Count.Should().Be(3);
|
||||
|
||||
content.FirstOrDefault(x => x.Id == _fixture.DeletedUserId).Should().NotBeNull();
|
||||
}
|
||||
|
||||
[Test, Order(3)]
|
||||
public async Task Should_Not_Get_Deleted_User_By_Id()
|
||||
{
|
||||
var response = await _fixture.ServerClient.GetAsync("/api/v1/user/" + _fixture.DeletedUserId);
|
||||
|
||||
response.StatusCode.Should().Be(HttpStatusCode.NotFound);
|
||||
|
||||
var message = await response.Content.ReadAsJsonAsync<UserViewModel>();
|
||||
message?.Data.Should().BeNull();
|
||||
}
|
||||
|
||||
[Test, Order(4)]
|
||||
public async Task Should_Create_User()
|
||||
{
|
||||
var user = new CreateUserViewModel(
|
||||
@ -80,7 +109,7 @@ public sealed class UserControllerTests
|
||||
message?.Data.Should().NotBeEmpty();
|
||||
}
|
||||
|
||||
[Test, Order(3)]
|
||||
[Test, Order(5)]
|
||||
public async Task Should_Login_User()
|
||||
{
|
||||
var user = new LoginUserViewModel(
|
||||
@ -95,7 +124,7 @@ public sealed class UserControllerTests
|
||||
message?.Data.Should().NotBeEmpty();
|
||||
}
|
||||
|
||||
[Test, Order(4)]
|
||||
[Test, Order(6)]
|
||||
public async Task Should_Get_The_Current_Active_Users()
|
||||
{
|
||||
var response = await _fixture.ServerClient.GetAsync("/api/v1/user/me");
|
||||
@ -114,7 +143,7 @@ public sealed class UserControllerTests
|
||||
content.LastName.Should().Be(TestAuthenticationOptions.LastName);
|
||||
}
|
||||
|
||||
[Test, Order(5)]
|
||||
[Test, Order(7)]
|
||||
public async Task Should_Update_User()
|
||||
{
|
||||
var user = new UpdateUserViewModel(
|
||||
@ -155,7 +184,7 @@ public sealed class UserControllerTests
|
||||
userContent.Role.Should().Be(user.Role);
|
||||
}
|
||||
|
||||
[Test, Order(6)]
|
||||
[Test, Order(8)]
|
||||
public async Task Should_Change_User_Password()
|
||||
{
|
||||
var user = new ChangePasswordViewModel(
|
||||
@ -188,7 +217,7 @@ public sealed class UserControllerTests
|
||||
loginMessage?.Data.Should().NotBeEmpty();
|
||||
}
|
||||
|
||||
[Test, Order(7)]
|
||||
[Test, Order(9)]
|
||||
public async Task Should_Delete_User()
|
||||
{
|
||||
var response = await _fixture.ServerClient.DeleteAsync("/api/v1/user/" + TestAuthenticationOptions.TestUserId);
|
||||
|
@ -10,6 +10,7 @@ namespace CleanArchitecture.IntegrationTests.Fixtures;
|
||||
public sealed class TenantTestFixture : TestFixtureBase
|
||||
{
|
||||
public Guid CreatedTenantId { get; } = Guid.NewGuid();
|
||||
public Guid DeletedTenantId { get; } = Guid.NewGuid();
|
||||
|
||||
public async Task SeedTestData()
|
||||
{
|
||||
@ -21,9 +22,8 @@ public sealed class TenantTestFixture : TestFixtureBase
|
||||
CreatedTenantId,
|
||||
"Test Tenant"));
|
||||
|
||||
// This tenant should not be included in any queries
|
||||
var deletedTenant = new Tenant(
|
||||
Guid.NewGuid(),
|
||||
DeletedTenantId,
|
||||
"Test Tenant2");
|
||||
deletedTenant.Delete();
|
||||
context.Tenants.Add(deletedTenant);
|
||||
|
@ -11,6 +11,8 @@ namespace CleanArchitecture.IntegrationTests.Fixtures;
|
||||
|
||||
public sealed class UserTestFixture : TestFixtureBase
|
||||
{
|
||||
public Guid DeletedUserId { get; } = Guid.NewGuid();
|
||||
|
||||
public async Task SeedTestData()
|
||||
{
|
||||
await GlobalSetupFixture.RespawnDatabaseAsync();
|
||||
@ -30,9 +32,8 @@ public sealed class UserTestFixture : TestFixtureBase
|
||||
"$2a$12$Blal/uiFIJdYsCLTMUik/egLbfg3XhbnxBC6Sb5IKz2ZYhiU/MzL2",
|
||||
UserRole.Admin));
|
||||
|
||||
// This user should not be included in any queries
|
||||
var deletedUsed = new User(
|
||||
Guid.NewGuid(),
|
||||
DeletedUserId,
|
||||
Ids.Seed.TenantId,
|
||||
"admin2@email.com",
|
||||
"Admin2",
|
||||
|
@ -27,6 +27,7 @@ public sealed class GetTenantsByIdsTestFixture : TestFixtureBase
|
||||
using var context = Factory.Services.GetRequiredService<ApplicationDbContext>();
|
||||
|
||||
var tenant = CreateTenant();
|
||||
tenant.Delete();
|
||||
|
||||
context.Tenants.Add(tenant);
|
||||
await context.SaveChangesAsync();
|
||||
|
@ -33,6 +33,7 @@ public sealed class GetUsersByIdsTestFixture : TestFixtureBase
|
||||
"Admin Tenant"));
|
||||
|
||||
var user = CreateUser();
|
||||
user.Delete();
|
||||
|
||||
context.Users.Add(user);
|
||||
await context.SaveChangesAsync();
|
||||
|
@ -31,5 +31,6 @@ public sealed class GetTenantsByIdsTests
|
||||
|
||||
new Guid(tenant.Id).Should().Be(createdTenant.Id);
|
||||
tenant.Name.Should().Be(createdTenant.Name);
|
||||
tenant.DeletedAt.Should().NotBeNullOrWhiteSpace();
|
||||
}
|
||||
}
|
@ -31,5 +31,6 @@ public sealed class GetUsersByIdsTests
|
||||
user.Email.Should().Be(createdUser.Email);
|
||||
user.FirstName.Should().Be(createdUser.FirstName);
|
||||
user.LastName.Should().Be(createdUser.LastName);
|
||||
user.DeletedAt.Should().NotBeNullOrWhiteSpace();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user