Skip to content

Commit e7d6be9

Browse files
authored
v3.30.1 (#133)
- *Fixed:* Added support for `SettingsBase.DateTimeTransform`, `StringTransform`, `StringTrim` and `StringCase` to allow specification via configuration. - *Fixed:* Added support for `CoreEx:` hierarchy (optional) for all _CoreEx_ settings to enable a more structured and explicit configuration.
1 parent bb60e34 commit e7d6be9

File tree

68 files changed

+310
-202
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+310
-202
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
Represents the **NuGet** versions.
44

5+
## v3.30.1
6+
- *Fixed:* Added support for `SettingsBase.DateTimeTransform`, `StringTransform`, `StringTrim` and `StringCase` to allow specification via configuration.
7+
- *Fixed:* Added support for `CoreEx:` hierarchy (optional) for all _CoreEx_ settings to enable a more structured and explicit configuration.
8+
59
## v3.30.0
610
- *Enhancement:* Integrated `UnitTestEx` version `5.0.0` to enable the latest capabilities and improvements.
711
- `CoreEx.UnitTesting.NUnit` given changes is no longer required and has been deprecated, the `UnitTestEx.NUnit` (or other) must be explicitly referenced as per testing framework being used.

Common.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
3-
<Version>3.30.0</Version>
3+
<Version>3.30.1</Version>
44
<LangVersion>preview</LangVersion>
55
<Authors>Avanade</Authors>
66
<Company>Avanade</Company>

samples/My.Hr/My.Hr.Api/appsettings.json

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55
"Microsoft.AspNetCore": "Warning"
66
}
77
},
8-
"PagingDefaultTake": 25,
9-
"PagingMaxTake": 500,
10-
"RefDataCache": {
11-
"AbsoluteExpirationRelativeToNow": "01:45:00",
12-
"SlidingExpiration": "00:15:00",
13-
"Gender": {
14-
"AbsoluteExpirationRelativeToNow": "03:00:00",
15-
"SlidingExpiration": "00:45:00"
8+
"CoreEx": {
9+
"PagingDefaultTake": 25,
10+
"PagingMaxTake": 500,
11+
"RefDataCache": {
12+
"AbsoluteExpirationRelativeToNow": "01:45:00",
13+
"SlidingExpiration": "00:15:00",
14+
"Gender": {
15+
"AbsoluteExpirationRelativeToNow": "03:00:00",
16+
"SlidingExpiration": "00:45:00"
17+
}
1618
}
1719
},
1820
"ServiceBusConnection": {

samples/My.Hr/My.Hr.Database/My.Hr.Database.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
</ItemGroup>
2323

2424
<ItemGroup>
25-
<PackageReference Include="DbEx.SqlServer" Version="2.6.1" />
25+
<PackageReference Include="DbEx.SqlServer" Version="2.8.0" />
2626
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
2727
</ItemGroup>
2828

samples/My.Hr/My.Hr.UnitTest/EmployeeFunctionTest.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public void A130_Get_IncludeFields()
8686
using var test = FunctionTester.Create<Startup>();
8787

8888
var e = test.HttpTrigger<EmployeeFunction>()
89+
.WithRouteCheck(UnitTestEx.Azure.Functions.RouteCheckOption.PathAndQueryStartsWith)
8990
.Run(f => f.GetAsync(test.CreateHttpRequest(HttpMethod.Get, $"api/employees/{1.ToGuid()}", new CoreEx.Http.HttpRequestOptions().Include("FirstName", "LastName")), 1.ToGuid()))
9091
.AssertOK()
9192
.AssertJson("{\"firstName\":\"Wendy\",\"lastName\":\"Jones\"}");
@@ -114,6 +115,7 @@ public void B110_GetAll_Paging()
114115
using var test = FunctionTester.Create<Startup>();
115116

116117
var v = test.HttpTrigger<EmployeeFunction>()
118+
.WithRouteCheck(UnitTestEx.Azure.Functions.RouteCheckOption.PathAndQueryStartsWith)
117119
.Run(f => f.GetAllAsync(test.CreateHttpRequest(HttpMethod.Get, "api/employees", CoreEx.Http.HttpRequestOptions.Create(PagingArgs.CreateSkipAndTake(1, 2, true)))))
118120
.AssertOK()
119121
.GetValue<EmployeeCollectionResult>();
@@ -134,6 +136,7 @@ public void B120_GetAll_PagingAndIncludeFields()
134136
using var test = FunctionTester.Create<Startup>();
135137

136138
var v = test.HttpTrigger<EmployeeFunction>()
139+
.WithRouteCheck(UnitTestEx.Azure.Functions.RouteCheckOption.PathAndQueryStartsWith)
137140
.Run(f => f.GetAllAsync(test.CreateHttpRequest(HttpMethod.Get, "api/employees", CoreEx.Http.HttpRequestOptions.Create(PagingArgs.CreateSkipAndTake(1, 2, false)).Include("lastname"))))
138141
.AssertOK()
139142
.AssertJson("[ { \"lastName\": \"Jones\" }, { \"lastName\": \"Smith\" } ]")

samples/My.Hr/My.Hr.UnitTest/My.Hr.UnitTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<PrivateAssets>all</PrivateAssets>
3232
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3333
</PackageReference>
34-
<PackageReference Include="UnitTestEx.NUnit" Version="5.0.0" />
34+
<PackageReference Include="UnitTestEx.NUnit" Version="5.1.0" />
3535
</ItemGroup>
3636

3737
<ItemGroup>

src/CoreEx.Azure/ServiceBus/ServiceBusOrchestratedSubscriber.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ public ServiceBusOrchestratedSubscriber(EventSubscriberOrchestrator orchestrator
3939
{
4040
Orchestrator = orchestrator.ThrowIfNull(nameof(orchestrator));
4141
ServiceBusSubscriberInvoker = serviceBusSubscriberInvoker ?? (ServiceBusSubscriber._invoker ??= new ServiceBusSubscriberInvoker());
42-
AbandonOnTransient = settings.GetValue($"{GetType().Name}__{nameof(AbandonOnTransient)}", false);
43-
MaxDeliveryCount = settings.GetValue<int?>($"{GetType().Name}__{nameof(MaxDeliveryCount)}");
44-
RetryDelay = settings.GetValue<TimeSpan?>($"{GetType().Name}__{nameof(RetryDelay)}");
45-
MaxRetryDelay = settings.GetValue<TimeSpan?>($"{GetType().Name}__{nameof(MaxRetryDelay)}");
42+
AbandonOnTransient = settings.GetCoreExValue($"{GetType().Name}:{nameof(AbandonOnTransient)}", false);
43+
MaxDeliveryCount = settings.GetCoreExValue<int?>($"{GetType().Name}:{nameof(MaxDeliveryCount)}");
44+
RetryDelay = settings.GetCoreExValue<TimeSpan?>($"{GetType().Name}:{nameof(RetryDelay)}");
45+
MaxRetryDelay = settings.GetCoreExValue<TimeSpan?>($"{GetType().Name}:{nameof(MaxRetryDelay)}");
4646
}
4747

4848
/// <summary>

src/CoreEx.Azure/ServiceBus/ServiceBusPurger.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ private async Task PurgeAsync(string queueOrTopicName, string? subscriptionName,
4545
queueOrTopicName.ThrowIfNullOrEmpty(nameof(queueOrTopicName));
4646

4747
// Get queue name and subscription name by checking settings override.
48-
var qn = Settings.GetValue($"Publisher_ServiceBusQueueName_{queueOrTopicName}", defaultValue: queueOrTopicName);
49-
var sn = string.IsNullOrEmpty(subscriptionName) ? null : Settings.GetValue($"Publisher_ServiceBusSubscriptionName_{subscriptionName}", defaultValue: subscriptionName);
48+
var qn = Settings.GetCoreExValue($"Publisher_ServiceBusQueueName_{queueOrTopicName}", defaultValue: queueOrTopicName);
49+
var sn = string.IsNullOrEmpty(subscriptionName) ? null : Settings.GetCoreExValue($"Publisher_ServiceBusSubscriptionName_{subscriptionName}", defaultValue: subscriptionName);
5050

5151
// Receive from Dead letter
5252
var o = new ServiceBusReceiverOptions { SubQueue = subQueue, PrefetchCount = 500, ReceiveMode = ServiceBusReceiveMode.ReceiveAndDelete };

src/CoreEx.Azure/ServiceBus/ServiceBusSender.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public Task SendAsync(IEnumerable<EventSendData> events, CancellationToken cance
9696
{
9797
var n = qitem.Key == _unspecifiedQueueOrTopicName ? null : qitem.Key;
9898
var key = $"{GetType().Name}_QueueOrTopicName{(n is null ? "" : $"_{n}")}";
99-
var qn = Settings.GetValue($"{GetType().Name}:QueueOrTopicName{(n is null ? "" : $"_{n}")}", defaultValue: n) ?? throw new EventSendException(PrependStats($"'{key}' configuration setting must have a non-null value.", totalCount, unsentEvents.Count), unsentEvents);
99+
var qn = Settings.GetCoreExValue($"{GetType().Name}:QueueOrTopicName{(n is null ? "" : $"_{n}")}", defaultValue: n) ?? throw new EventSendException(PrependStats($"'{key}' configuration setting must have a non-null value.", totalCount, unsentEvents.Count), unsentEvents);
100100
var queue = qitem.Value;
101101
var sentIds = new List<string>();
102102

src/CoreEx.Azure/ServiceBus/ServiceBusSubscriber.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ public ServiceBusSubscriber(ExecutionContext executionContext, SettingsBase sett
5151
: base(eventDataConverter ?? new ServiceBusReceivedMessageEventDataConverter(eventSerializer ?? new CoreEx.Text.Json.EventDataSerializer()), executionContext, settings, logger, eventSubscriberInvoker)
5252
{
5353
ServiceBusSubscriberInvoker = serviceBusSubscriberInvoker ?? (_invoker ??= new ServiceBusSubscriberInvoker());
54-
AbandonOnTransient = settings.GetValue($"{GetType().Name}__{nameof(AbandonOnTransient)}", false);
55-
MaxDeliveryCount = settings.GetValue<int?>($"{GetType().Name}__{nameof(MaxDeliveryCount)}");
56-
RetryDelay = settings.GetValue<TimeSpan?>($"{GetType().Name}__{nameof(RetryDelay)}");
57-
MaxRetryDelay = settings.GetValue<TimeSpan?>($"{GetType().Name}__{nameof(MaxRetryDelay)}");
54+
AbandonOnTransient = settings.GetCoreExValue($"{GetType().Name}:{nameof(AbandonOnTransient)}", false);
55+
MaxDeliveryCount = settings.GetCoreExValue<int?>($"{GetType().Name}:{nameof(MaxDeliveryCount)}");
56+
RetryDelay = settings.GetCoreExValue<TimeSpan?>($"{GetType().Name}:{nameof(RetryDelay)}");
57+
MaxRetryDelay = settings.GetCoreExValue<TimeSpan?>($"{GetType().Name}:{nameof(MaxRetryDelay)}");
5858
}
5959

6060
/// <summary>

0 commit comments

Comments
 (0)