Skip to content

Commit 1b6bf64

Browse files
authored
Merge pull request #5 from cnblogs/add-test-case
test: add a test case for '/dapr/subscribe'
2 parents 6581c1d + 0446d39 commit 1b6bf64

File tree

11 files changed

+398
-29
lines changed

11 files changed

+398
-29
lines changed

.editorconfig

Lines changed: 288 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,291 @@ resharper_web_config_wrong_module_highlighting = warning
7878
indent_style = space
7979
indent_size = 4
8080
tab_width = 4
81+
82+
#### C# Coding Conventions ####
83+
[*.cs]
84+
85+
# var preferences
86+
csharp_style_var_elsewhere = false:silent
87+
csharp_style_var_for_built_in_types = false:silent
88+
csharp_style_var_when_type_is_apparent = false:silent
89+
90+
# Expression-bodied members
91+
csharp_style_expression_bodied_accessors = true:silent
92+
csharp_style_expression_bodied_constructors = false:silent
93+
csharp_style_expression_bodied_indexers = true:silent
94+
csharp_style_expression_bodied_lambdas = true:suggestion
95+
csharp_style_expression_bodied_local_functions = false:silent
96+
csharp_style_expression_bodied_methods = false:silent
97+
csharp_style_expression_bodied_operators = false:silent
98+
csharp_style_expression_bodied_properties = true:silent
99+
100+
# Pattern matching preferences
101+
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
102+
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
103+
csharp_style_prefer_not_pattern = true:suggestion
104+
csharp_style_prefer_pattern_matching = true:silent
105+
csharp_style_prefer_switch_expression = true:suggestion
106+
107+
# Null-checking preferences
108+
csharp_style_conditional_delegate_call = true:suggestion
109+
110+
# Modifier preferences
111+
csharp_prefer_static_local_function = true:warning
112+
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent
113+
114+
# Code-block preferences
115+
csharp_prefer_braces = true:silent
116+
csharp_prefer_simple_using_statement = true:suggestion
117+
118+
# Expression-level preferences
119+
csharp_prefer_simple_default_expression = true:suggestion
120+
csharp_style_deconstructed_variable_declaration = true:suggestion
121+
csharp_style_inlined_variable_declaration = true:suggestion
122+
csharp_style_pattern_local_over_anonymous_function = true:suggestion
123+
csharp_style_prefer_index_operator = true:suggestion
124+
csharp_style_prefer_range_operator = true:suggestion
125+
csharp_style_throw_expression = true:suggestion
126+
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
127+
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
128+
129+
# 'using' directive preferences
130+
csharp_using_directive_placement = outside_namespace:silent
131+
132+
#### C# Formatting Rules ####
133+
134+
# New line preferences
135+
csharp_new_line_before_catch = true
136+
csharp_new_line_before_else = true
137+
csharp_new_line_before_finally = true
138+
csharp_new_line_before_members_in_anonymous_types = true
139+
csharp_new_line_before_members_in_object_initializers = true
140+
csharp_new_line_before_open_brace = all
141+
csharp_new_line_between_query_expression_clauses = true
142+
143+
# Indentation preferences
144+
csharp_indent_block_contents = true
145+
csharp_indent_braces = false
146+
csharp_indent_case_contents = true
147+
csharp_indent_case_contents_when_block = true
148+
csharp_indent_labels = one_less_than_current
149+
csharp_indent_switch_labels = true
150+
151+
# Space preferences
152+
csharp_space_after_cast = false
153+
csharp_space_after_colon_in_inheritance_clause = true
154+
csharp_space_after_comma = true
155+
csharp_space_after_dot = false
156+
csharp_space_after_keywords_in_control_flow_statements = true
157+
csharp_space_after_semicolon_in_for_statement = true
158+
csharp_space_around_binary_operators = before_and_after
159+
csharp_space_around_declaration_statements = false
160+
csharp_space_before_colon_in_inheritance_clause = true
161+
csharp_space_before_comma = false
162+
csharp_space_before_dot = false
163+
csharp_space_before_open_square_brackets = false
164+
csharp_space_before_semicolon_in_for_statement = false
165+
csharp_space_between_empty_square_brackets = false
166+
csharp_space_between_method_call_empty_parameter_list_parentheses = false
167+
csharp_space_between_method_call_name_and_opening_parenthesis = false
168+
csharp_space_between_method_call_parameter_list_parentheses = false
169+
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
170+
csharp_space_between_method_declaration_name_and_open_parenthesis = false
171+
csharp_space_between_method_declaration_parameter_list_parentheses = false
172+
csharp_space_between_parentheses = false
173+
csharp_space_between_square_brackets = false
174+
175+
# Wrapping preferences
176+
csharp_preserve_single_line_blocks = true
177+
csharp_preserve_single_line_statements = true
178+
179+
#### Naming styles ####
180+
[*.{cs,vb}]
181+
182+
# Naming rules
183+
184+
dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.severity = suggestion
185+
dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.symbols = types_and_namespaces
186+
dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.style = pascalcase
187+
188+
dotnet_naming_rule.interfaces_should_be_ipascalcase.severity = suggestion
189+
dotnet_naming_rule.interfaces_should_be_ipascalcase.symbols = interfaces
190+
dotnet_naming_rule.interfaces_should_be_ipascalcase.style = ipascalcase
191+
192+
dotnet_naming_rule.type_parameters_should_be_tpascalcase.severity = suggestion
193+
dotnet_naming_rule.type_parameters_should_be_tpascalcase.symbols = type_parameters
194+
dotnet_naming_rule.type_parameters_should_be_tpascalcase.style = tpascalcase
195+
196+
dotnet_naming_rule.methods_should_be_pascalcase.severity = suggestion
197+
dotnet_naming_rule.methods_should_be_pascalcase.symbols = methods
198+
dotnet_naming_rule.methods_should_be_pascalcase.style = pascalcase
199+
200+
dotnet_naming_rule.properties_should_be_pascalcase.severity = suggestion
201+
dotnet_naming_rule.properties_should_be_pascalcase.symbols = properties
202+
dotnet_naming_rule.properties_should_be_pascalcase.style = pascalcase
203+
204+
dotnet_naming_rule.events_should_be_pascalcase.severity = suggestion
205+
dotnet_naming_rule.events_should_be_pascalcase.symbols = events
206+
dotnet_naming_rule.events_should_be_pascalcase.style = pascalcase
207+
208+
dotnet_naming_rule.local_variables_should_be_camelcase.severity = suggestion
209+
dotnet_naming_rule.local_variables_should_be_camelcase.symbols = local_variables
210+
dotnet_naming_rule.local_variables_should_be_camelcase.style = camelcase
211+
212+
dotnet_naming_rule.local_constants_should_be_camelcase.severity = suggestion
213+
dotnet_naming_rule.local_constants_should_be_camelcase.symbols = local_constants
214+
dotnet_naming_rule.local_constants_should_be_camelcase.style = camelcase
215+
216+
dotnet_naming_rule.parameters_should_be_camelcase.severity = suggestion
217+
dotnet_naming_rule.parameters_should_be_camelcase.symbols = parameters
218+
dotnet_naming_rule.parameters_should_be_camelcase.style = camelcase
219+
220+
dotnet_naming_rule.public_fields_should_be_pascalcase.severity = suggestion
221+
dotnet_naming_rule.public_fields_should_be_pascalcase.symbols = public_fields
222+
dotnet_naming_rule.public_fields_should_be_pascalcase.style = pascalcase
223+
224+
dotnet_naming_rule.private_fields_should_be__camelcase.severity = suggestion
225+
dotnet_naming_rule.private_fields_should_be__camelcase.symbols = private_fields
226+
dotnet_naming_rule.private_fields_should_be__camelcase.style = _camelcase
227+
228+
dotnet_naming_rule.private_static_fields_should_be_s_camelcase.severity = suggestion
229+
dotnet_naming_rule.private_static_fields_should_be_s_camelcase.symbols = private_static_fields
230+
dotnet_naming_rule.private_static_fields_should_be_s_camelcase.style = s_camelcase
231+
232+
dotnet_naming_rule.public_constant_fields_should_be_pascalcase.severity = suggestion
233+
dotnet_naming_rule.public_constant_fields_should_be_pascalcase.symbols = public_constant_fields
234+
dotnet_naming_rule.public_constant_fields_should_be_pascalcase.style = pascalcase
235+
236+
dotnet_naming_rule.private_constant_fields_should_be_pascalcase.severity = suggestion
237+
dotnet_naming_rule.private_constant_fields_should_be_pascalcase.symbols = private_constant_fields
238+
dotnet_naming_rule.private_constant_fields_should_be_pascalcase.style = pascalcase
239+
240+
dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.severity = suggestion
241+
dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.symbols = public_static_readonly_fields
242+
dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.style = pascalcase
243+
244+
dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.severity = suggestion
245+
dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.symbols = private_static_readonly_fields
246+
dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.style = pascalcase
247+
248+
dotnet_naming_rule.enums_should_be_pascalcase.severity = suggestion
249+
dotnet_naming_rule.enums_should_be_pascalcase.symbols = enums
250+
dotnet_naming_rule.enums_should_be_pascalcase.style = pascalcase
251+
252+
dotnet_naming_rule.local_functions_should_be_pascalcase.severity = suggestion
253+
dotnet_naming_rule.local_functions_should_be_pascalcase.symbols = local_functions
254+
dotnet_naming_rule.local_functions_should_be_pascalcase.style = pascalcase
255+
256+
dotnet_naming_rule.non_field_members_should_be_pascalcase.severity = suggestion
257+
dotnet_naming_rule.non_field_members_should_be_pascalcase.symbols = non_field_members
258+
dotnet_naming_rule.non_field_members_should_be_pascalcase.style = pascalcase
259+
260+
# Symbol specifications
261+
262+
dotnet_naming_symbols.interfaces.applicable_kinds = interface
263+
dotnet_naming_symbols.interfaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
264+
dotnet_naming_symbols.interfaces.required_modifiers =
265+
266+
dotnet_naming_symbols.enums.applicable_kinds = enum
267+
dotnet_naming_symbols.enums.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
268+
dotnet_naming_symbols.enums.required_modifiers =
269+
270+
dotnet_naming_symbols.events.applicable_kinds = event
271+
dotnet_naming_symbols.events.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
272+
dotnet_naming_symbols.events.required_modifiers =
273+
274+
dotnet_naming_symbols.methods.applicable_kinds = method
275+
dotnet_naming_symbols.methods.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
276+
dotnet_naming_symbols.methods.required_modifiers =
277+
278+
dotnet_naming_symbols.properties.applicable_kinds = property
279+
dotnet_naming_symbols.properties.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
280+
dotnet_naming_symbols.properties.required_modifiers =
281+
282+
dotnet_naming_symbols.public_fields.applicable_kinds = field
283+
dotnet_naming_symbols.public_fields.applicable_accessibilities = public, internal
284+
dotnet_naming_symbols.public_fields.required_modifiers =
285+
286+
dotnet_naming_symbols.private_fields.applicable_kinds = field
287+
dotnet_naming_symbols.private_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
288+
dotnet_naming_symbols.private_fields.required_modifiers =
289+
290+
dotnet_naming_symbols.private_static_fields.applicable_kinds = field
291+
dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
292+
dotnet_naming_symbols.private_static_fields.required_modifiers = static
293+
294+
dotnet_naming_symbols.types_and_namespaces.applicable_kinds = namespace, class, struct, interface, enum
295+
dotnet_naming_symbols.types_and_namespaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
296+
dotnet_naming_symbols.types_and_namespaces.required_modifiers =
297+
298+
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
299+
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
300+
dotnet_naming_symbols.non_field_members.required_modifiers =
301+
302+
dotnet_naming_symbols.type_parameters.applicable_kinds = namespace
303+
dotnet_naming_symbols.type_parameters.applicable_accessibilities = *
304+
dotnet_naming_symbols.type_parameters.required_modifiers =
305+
306+
dotnet_naming_symbols.private_constant_fields.applicable_kinds = field
307+
dotnet_naming_symbols.private_constant_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
308+
dotnet_naming_symbols.private_constant_fields.required_modifiers = const
309+
310+
dotnet_naming_symbols.local_variables.applicable_kinds = local
311+
dotnet_naming_symbols.local_variables.applicable_accessibilities = local
312+
dotnet_naming_symbols.local_variables.required_modifiers =
313+
314+
dotnet_naming_symbols.local_constants.applicable_kinds = local
315+
dotnet_naming_symbols.local_constants.applicable_accessibilities = local
316+
dotnet_naming_symbols.local_constants.required_modifiers = const
317+
318+
dotnet_naming_symbols.parameters.applicable_kinds = parameter
319+
dotnet_naming_symbols.parameters.applicable_accessibilities = *
320+
dotnet_naming_symbols.parameters.required_modifiers =
321+
322+
dotnet_naming_symbols.public_constant_fields.applicable_kinds = field
323+
dotnet_naming_symbols.public_constant_fields.applicable_accessibilities = public, internal
324+
dotnet_naming_symbols.public_constant_fields.required_modifiers = const
325+
326+
dotnet_naming_symbols.public_static_readonly_fields.applicable_kinds = field
327+
dotnet_naming_symbols.public_static_readonly_fields.applicable_accessibilities = public, internal
328+
dotnet_naming_symbols.public_static_readonly_fields.required_modifiers = readonly, static
329+
330+
dotnet_naming_symbols.private_static_readonly_fields.applicable_kinds = field
331+
dotnet_naming_symbols.private_static_readonly_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
332+
dotnet_naming_symbols.private_static_readonly_fields.required_modifiers = readonly, static
333+
334+
dotnet_naming_symbols.local_functions.applicable_kinds = local_function
335+
dotnet_naming_symbols.local_functions.applicable_accessibilities = *
336+
dotnet_naming_symbols.local_functions.required_modifiers =
337+
338+
# Naming styles
339+
340+
dotnet_naming_style.pascalcase.required_prefix =
341+
dotnet_naming_style.pascalcase.required_suffix =
342+
dotnet_naming_style.pascalcase.word_separator =
343+
dotnet_naming_style.pascalcase.capitalization = pascal_case
344+
345+
dotnet_naming_style.ipascalcase.required_prefix = I
346+
dotnet_naming_style.ipascalcase.required_suffix =
347+
dotnet_naming_style.ipascalcase.word_separator =
348+
dotnet_naming_style.ipascalcase.capitalization = pascal_case
349+
350+
dotnet_naming_style.tpascalcase.required_prefix = T
351+
dotnet_naming_style.tpascalcase.required_suffix =
352+
dotnet_naming_style.tpascalcase.word_separator =
353+
dotnet_naming_style.tpascalcase.capitalization = pascal_case
354+
355+
dotnet_naming_style._camelcase.required_prefix = _
356+
dotnet_naming_style._camelcase.required_suffix =
357+
dotnet_naming_style._camelcase.word_separator =
358+
dotnet_naming_style._camelcase.capitalization = camel_case
359+
360+
dotnet_naming_style.camelcase.required_prefix =
361+
dotnet_naming_style.camelcase.required_suffix =
362+
dotnet_naming_style.camelcase.word_separator =
363+
dotnet_naming_style.camelcase.capitalization = camel_case
364+
365+
dotnet_naming_style.s_camelcase.required_prefix = s_
366+
dotnet_naming_style.s_camelcase.required_suffix =
367+
dotnet_naming_style.s_camelcase.word_separator =
368+
dotnet_naming_style.s_camelcase.capitalization = camel_case

src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr/CqrsInjectorExtensions.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
using System.Reflection;
2-
32
using Cnblogs.Architecture.Ddd.EventBus.Abstractions;
4-
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
5-
63
using Microsoft.Extensions.DependencyInjection;
74

85
namespace Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr;
@@ -38,9 +35,7 @@ public static CqrsInjector AddDaprEventBus(this CqrsInjector cqrsInjector, Assem
3835
/// <returns></returns>
3936
public static CqrsInjector AddDaprEventBus(this CqrsInjector cqrsInjector, string appName)
4037
{
41-
cqrsInjector.Services.Configure<DaprOptions>(o => o.AppName = appName);
42-
cqrsInjector.Services.AddControllers().AddDapr();
43-
cqrsInjector.Services.AddScoped<IEventBus, DaprEventBus>();
38+
cqrsInjector.Services.AddDaprEventBus(appName);
4439
return cqrsInjector;
4540
}
4641
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using Cnblogs.Architecture.Ddd.EventBus.Abstractions;
2+
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
3+
using Dapr.Client;
4+
5+
namespace Microsoft.Extensions.DependencyInjection;
6+
7+
/// <summary>
8+
/// IServiceCollection extensions for DaprEventBus
9+
/// </summary>
10+
public static class DaprEventBusServiceCollectionExtensions
11+
{
12+
/// <summary>
13+
/// Register <see cref="DaprClient"/> and <see cref="IEventBus"/>.
14+
/// </summary>
15+
/// <param name="services"><see cref="IServiceCollection"/></param>
16+
/// <param name="appName">The app name used when publishing integration events.</param>
17+
/// <returns></returns>
18+
public static IServiceCollection AddDaprEventBus(this IServiceCollection services, string appName)
19+
{
20+
services.Configure<DaprOptions>(o => o.AppName = appName);
21+
services.AddControllers().AddDapr();
22+
services.AddScoped<IEventBus, DaprEventBus>();
23+
return services;
24+
}
25+
}

test/Cnblogs.Architecture.IntegrationTestProject/Cnblogs.Architecture.IntegrationTestProject.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
<ItemGroup>
88
<ProjectReference Include="..\..\src\Cnblogs.Architecture.Ddd.Cqrs.AspNetCore\Cnblogs.Architecture.Ddd.Cqrs.AspNetCore.csproj" />
9+
<ProjectReference Include="..\..\src\Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr\Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr.csproj" />
10+
<ProjectReference Include="..\Cnblogs.Architecture.TestIntegrationEvents\Cnblogs.Architecture.TestIntegrationEvents.csproj" />
911
</ItemGroup>
1012

1113
</Project>

test/Cnblogs.Architecture.IntegrationTestProject/Program.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
using Cnblogs.Architecture.Ddd.Cqrs.AspNetCore;
2+
using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection;
3+
using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection.EventBus.Dapr;
4+
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
25
using Cnblogs.Architecture.IntegrationTestProject.Application.Commands;
36
using Cnblogs.Architecture.IntegrationTestProject.Application.Queries;
47
using Cnblogs.Architecture.IntegrationTestProject.Payloads;
8+
using Cnblogs.Architecture.TestIntegrationEvents;
9+
10+
const string appName = "test-web";
511

612
var builder = WebApplication.CreateBuilder(args);
713

814
builder.Services.AddCqrs(typeof(Cnblogs.Architecture.IntegrationTestProject.Program).Assembly)
915
.AddDefaultDateTimeAndRandomProvider();
16+
builder.Services.AddDaprEventBus(appName);
1017
builder.Services.AddControllers().AddCqrsModelBinderProvider();
18+
1119
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
1220
builder.Services.AddCnblogsApiVersioning();
1321
builder.Services.AddSwaggerGen();
@@ -21,11 +29,12 @@
2129
app.UseSwaggerUI();
2230
}
2331

24-
app.UseHttpsRedirection();
25-
2632
app.UseAuthorization();
2733

2834
app.MapControllers();
35+
36+
app.Subscribe<TestIntegrationEvent>();
37+
2938
var apis = app.NewVersionedApi();
3039
var v1 = apis.MapGroup("/api/v{version:apiVersion}").HasApiVersion(1);
3140
v1.MapQuery<GetStringQuery>("strings/{id:int}");

0 commit comments

Comments
 (0)