Skip to content

refactor: Use the helpers of aweXpect.Core - #177

Merged
vbreuss merged 2 commits into
fix/message-conventionsfrom
refactor/core-helpers
Oct 10, 2026
Merged

vbreuss merged 2 commits into
fix/message-conventionsfrom
refactor/core-helpers

Conversation

@vbreuss

@vbreuss vbreuss commented Oct 10, 2026

Copy link
Copy Markdown
Member

The package kept its own copy of Get() and allocated a closure for every constraint, which the extension guidelines advise against. This also fixes two message leftovers.

Changes

  • Use Get() from aweXpect.Core.Extending instead of the package's own copy; the remaining internal helper class is renamed to ResultContextExtensions to avoid a name clash with core's ThatExtensions
  • Pass the constraint arguments as state to static lambdas
  • HasMethod names the method as a member of the request ("but it had method GET" instead of "but it was GET")
  • "is an UNC path" now reads "is a UNC path"

…ments as state

The own copy of Get() duplicated the core helper without its tracing, and the capturing constraint factories allocated a closure and a delegate for every expectation.
The method belongs to the request, so reporting it as the subject ("it was GET") contradicted the other member results, and "UNC" is pronounced with a consonant sound.
@vbreuss vbreuss self-assigned this Oct 10, 2026
@vbreuss
vbreuss added this pull request to stack #178 October 10, 2026 08:21
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Test Results

   19 files     19 suites   16s ⏱️
  740 tests   739 ✅ 1 💤 0 ❌
4 408 runs  4 407 ✅ 1 💤 0 ❌

Results for commit a5bd06f.

@vbreuss
vbreuss merged commit 7b44185 into main Oct 10, 2026
16 checks passed
@vbreuss
vbreuss deleted the refactor/core-helpers branch October 10, 2026 08:40
@github-actions

Copy link
Copy Markdown

👽 Mutation Results

Mutation testing badge

aweXpect.Web

Details
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants
Helpers/ResultContextExtensions.cs 100.00% 5 0 0 0 2 0 0 5 0 7
Helpers/ThrowHelper.cs 100.00% 6 0 0 0 4 0 0 6 0 10
ThatHttpRequestMessage.HasContent.cs 91.67% 22 2 0 0 6 10 0 22 2 40
ThatHttpRequestMessage.HasHeader.cs 100.00% 25 0 0 0 6 15 0 25 0 46
ThatHttpRequestMessage.HasMethod.cs 90.00% 27 2 0 1 5 13 0 27 3 48
ThatHttpRequestMessage.HasRequestUri.cs 100.00% 16 0 0 0 4 7 0 16 0 27
ThatHttpResponseMessage.HasContent.cs 84.21% 16 1 0 2 6 10 0 16 3 35
ThatHttpResponseMessage.HasContentType.cs 88.24% 15 2 0 0 5 9 0 15 2 31
ThatHttpResponseMessage.HasHeader.cs 100.00% 25 0 0 0 6 15 0 25 0 46
ThatHttpResponseMessage.HasProblemDetailsContent.cs 92.86% 78 6 0 0 16 50 0 78 6 150
ThatHttpResponseMessage.HasRequestMessage.cs 75.00% 3 1 0 0 1 0 0 3 1 5
ThatHttpResponseMessage.HasStatusCode.cs 100.00% 1 0 0 0 0 0 0 1 0 1
ThatUri.HasDefaultPort.cs 100.00% 13 0 0 0 2 6 0 13 0 21
ThatUri.HasScheme.cs 100.00% 1 0 0 0 0 0 0 1 0 1
ThatUri.IsAbsolute.cs 100.00% 11 0 0 0 2 4 0 11 0 17
ThatUri.IsFile.cs 100.00% 11 0 0 0 2 4 0 11 0 17
ThatUri.IsLoopback.cs 100.00% 13 0 0 0 2 6 0 13 0 21
ThatUri.IsUnc.cs 100.00% 11 0 0 0 2 4 0 11 0 17
Web/Results/HasHeaderValueResult.cs 81.08% 30 4 0 3 10 11 0 30 7 58
Web/Results/ProblemDetailsOptions.cs 92.86% 39 3 0 0 4 3 0 39 3 49
Web/Results/StatusCodeResult.cs 100.00% 55 0 0 0 2 7 0 55 0 64

The final mutation score is 94.00%

Coverage Thresholds: high:80 low:60 break:0

@github-actions

Copy link
Copy Markdown

🚀 Benchmark Results

Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 9V74 2.60GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v4
DefaultJob : .NET 8.0.31 (8.0.31, 8.0.3126.42015), X64 RyuJIT x86-64-v4

Method Mean Error StdDev Gen0 Allocated
Content_aweXpect 351.2 ns 2.39 ns 2.24 ns 0.0582 976 B
SuccessStatusCode_aweXpect 202.4 ns 1.01 ns 0.94 ns 0.0486 816 B

@github-actions

Copy link
Copy Markdown

This is addressed in release v2.0.0.

@github-actions github-actions Bot added the state: released The issue is released label Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state: released The issue is released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant