Skip to content

Commit 8cf1a17

Browse files
committed
test: add test for cqrs service agent
1 parent 0d68b65 commit 8cf1a17

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/CommandResponse.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
55
/// <summary>
66
/// Response returned by <see cref="ICommand{TError}"/>.
77
/// </summary>
8-
public abstract record CommandResponse : IValidationResponse, ILockableResponse
8+
public record CommandResponse : IValidationResponse, ILockableResponse
99
{
1010
/// <summary>
1111
/// Check if validation fails.

test/Cnblogs.Architecture.IntegrationTests/CommandResponseHandlerTests.cs

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
using System.Net.Http.Headers;
12
using System.Net.Http.Json;
3+
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
24
using Cnblogs.Architecture.Ddd.Cqrs.AspNetCore;
35
using Cnblogs.Architecture.IntegrationTestProject;
46
using Cnblogs.Architecture.IntegrationTestProject.Application.Commands;
@@ -31,7 +33,7 @@ public async Task MinimalApi_HavingError_BadRequestAsync(bool needValidationErro
3133
// Act
3234
var response = await builder.CreateClient().PutAsJsonAsync(
3335
"/api/v1/strings/1",
34-
new UpdatePayload(needValidationError, needExecutionError));
36+
new UpdatePayload(needExecutionError, needValidationError));
3537
var content = await response.Content.ReadAsStringAsync();
3638

3739
// Assert
@@ -63,14 +65,35 @@ public async Task MinimalApi_HavingError_ProblemDetailsAsync(bool needValidation
6365
// Act
6466
var response = await builder.CreateClient().PutAsJsonAsync(
6567
"/api/v1/strings/1",
66-
new UpdatePayload(needValidationError, needExecutionError));
68+
new UpdatePayload(needExecutionError, needValidationError));
6769
var content = await response.Content.ReadFromJsonAsync<ProblemDetails>();
6870

6971
// Assert
7072
response.Should().HaveClientError();
7173
content.Should().NotBeNull();
7274
}
7375

76+
[Theory]
77+
[MemberData(nameof(ErrorPayloads))]
78+
public async Task MinimalApi_HavingError_CommandResponseAsync(bool needValidationError, bool needExecutionError)
79+
{
80+
// Arrange
81+
var builder = new WebApplicationFactory<Program>();
82+
83+
// Act
84+
var client = builder.CreateClient();
85+
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/cqrs"));
86+
var response = await client.PutAsJsonAsync(
87+
"/api/v1/strings/1",
88+
new UpdatePayload(needExecutionError, needValidationError));
89+
var commandResponse = await response.Content.ReadFromJsonAsync<CommandResponse>();
90+
91+
// Assert
92+
response.Should().HaveClientError();
93+
commandResponse.Should().NotBeNull();
94+
commandResponse!.IsSuccess().Should().BeFalse();
95+
}
96+
7497
[Theory]
7598
[MemberData(nameof(ErrorPayloads))]
7699
public async Task MinimalApi_HavingError_CustomContentAsync(bool needValidationError, bool needExecutionError)
@@ -143,6 +166,27 @@ public async Task Mvc_HavingError_ProblemDetailAsync(bool needValidationError, b
143166
content.Should().NotBeNull();
144167
}
145168

169+
[Theory]
170+
[MemberData(nameof(ErrorPayloads))]
171+
public async Task Mvc_HavingError_CommandResponseAsync(bool needValidationError, bool needExecutionError)
172+
{
173+
// Arrange
174+
var builder = new WebApplicationFactory<Program>();
175+
176+
// Act
177+
var client = builder.CreateClient();
178+
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/cqrs"));
179+
var response = await client.PutAsJsonAsync(
180+
"/api/v1/mvc/strings/1",
181+
new UpdatePayload(needValidationError, needExecutionError));
182+
var content = await response.Content.ReadFromJsonAsync<CommandResponse>();
183+
184+
// Assert
185+
response.Should().HaveClientError();
186+
content.Should().NotBeNull();
187+
content!.IsSuccess().Should().BeFalse();
188+
}
189+
146190
[Theory]
147191
[MemberData(nameof(ErrorPayloads))]
148192
public async Task Mvc_HavingError_CustomContentAsync(bool needValidationError, bool needExecutionError)

0 commit comments

Comments
 (0)