Skip to content

Commit fde75c1

Browse files
committed
test: add test case to reproduce encoded Chinese characters
1 parent 76cee98 commit fde75c1

File tree

7 files changed

+63
-5
lines changed

7 files changed

+63
-5
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
2+
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
3+
using Cnblogs.Architecture.IntegrationTestProject.Models;
4+
5+
namespace Cnblogs.Architecture.IntegrationTestProject.Application.Queries;
6+
7+
public record ListArticlesQuery(PagingParams? PagingParams, string? OrderByString) : IPageableQuery<ArticleDto>;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
2+
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
3+
using Cnblogs.Architecture.IntegrationTestProject.Models;
4+
5+
namespace Cnblogs.Architecture.IntegrationTestProject.Application.Queries;
6+
7+
public class ListArticlesQueryHandler : IPageableQueryHandler<ListArticlesQuery, ArticleDto>
8+
{
9+
/// <inheritdoc />
10+
public Task<PagedList<ArticleDto>> Handle(ListArticlesQuery request, CancellationToken cancellationToken)
11+
{
12+
return Task.FromResult(new PagedList<ArticleDto>([new ArticleDto
13+
{
14+
Id = 1,
15+
Title = "作为一个高中生开发者,我的所思所想"
16+
}
17+
]));
18+
}
19+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
1+
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
22
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
33

44
namespace Cnblogs.Architecture.IntegrationTestProject.Application.Queries;
55

6-
public record ListStringsQuery(PagingParams? PagingParams, string? OrderByString) : IPageableQuery<string>;
6+
public record ListStringsQuery(PagingParams? PagingParams, string? OrderByString, string? culture) : IPageableQuery<string>;

test/Cnblogs.Architecture.IntegrationTestProject/Application/Queries/ListStringsQueryHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
1+
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
22
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
33

44
namespace Cnblogs.Architecture.IntegrationTestProject.Application.Queries;
@@ -10,4 +10,4 @@ public Task<PagedList<string>> Handle(ListStringsQuery request, CancellationToke
1010
{
1111
return Task.FromResult(new PagedList<string>(["hello"]));
1212
}
13-
}
13+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Cnblogs.Architecture.IntegrationTestProject.Models;
2+
3+
public class ArticleDto
4+
{
5+
public int Id { get; set; }
6+
public string Title { get; set; } = string.Empty;
7+
}

test/Cnblogs.Architecture.IntegrationTestProject/Program.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Reflection;
1+
using System.Reflection;
22
using Cnblogs.Architecture.Ddd.Cqrs.AspNetCore;
33
using Cnblogs.Architecture.Ddd.EventBus.Abstractions;
44
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
@@ -39,6 +39,7 @@
3939
async (int stringId, [FromQuery] bool found = true)
4040
=> await Task.FromResult(new GetStringQuery(StringId: stringId, Found: found)));
4141
v1.MapQuery<ListStringsQuery>("strings");
42+
v1.MapQuery<ListArticlesQuery>("articles");
4243
v1.MapQuery<GetLongToStringQuery>("long-to-string/{id:long}");
4344
v1.MapCommand<CreateLongToStringCommand>("long-to-string");
4445
v1.MapCommand(
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using Cnblogs.Architecture.IntegrationTestProject;
2+
using Microsoft.AspNetCore.Mvc.Testing;
3+
4+
namespace Cnblogs.Architecture.IntegrationTests;
5+
6+
public class MinimalApiTests
7+
{
8+
[Fact]
9+
public async Task ResponseJsonWithChineseChars_RemainUnencodedAsync()
10+
{
11+
// Arrange
12+
var builder = new WebApplicationFactory<Program>();
13+
14+
// Act
15+
var response = await builder.CreateClient().GetAsync("/api/v1/articles");
16+
var content = await response.Content.ReadAsStringAsync();
17+
18+
Console.WriteLine(content);
19+
20+
// Assert
21+
Assert.True(response.IsSuccessStatusCode);
22+
Assert.Contains("开发者", content);
23+
}
24+
}

0 commit comments

Comments
 (0)