Skip to content

Commit c76b837

Browse files
Remove InternalsVisibleTo smell: expose pattern as public const instead
- Expose RouteParameterPattern as public const string on RouteConfigurationService - Use the const in [GeneratedRegex(RouteParameterPattern)] (keeps method private) - Tests construct new Regex(RouteConfigurationService.RouteParameterPattern) directly - Delete Properties/AssemblyInfo.cs (InternalsVisibleTo no longer needed)
1 parent 7067acd commit c76b837

3 files changed

Lines changed: 10 additions & 7 deletions

File tree

EssentialCSharp.Web.Tests/RouteParameterFilterTests.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
using EssentialCSharp.Web.Services;
2+
using System.Text.RegularExpressions;
23

34
namespace EssentialCSharp.Web.Tests;
45

56
/// <summary>
67
/// Parameterized tests for the route parameter regex in RouteConfigurationService.
8+
/// Tests the pattern directly so any change to RouteParameterPattern is immediately caught.
79
/// </summary>
810
public class RouteParameterFilterTests
911
{
12+
private static readonly Regex s_regex = new(RouteConfigurationService.RouteParameterPattern);
13+
1014
[Test]
1115
[Arguments("{chapter}")]
1216
[Arguments("{id:guid}")]
@@ -17,7 +21,7 @@ public class RouteParameterFilterTests
1721
[Arguments("[optional]")]
1822
[Arguments("area/[optional]/page")]
1923
public async Task RouteParameterRegex_MatchesParameterizedRoutes(string route)
20-
=> await Assert.That(RouteConfigurationService.RouteParameterRegex().IsMatch(route)).IsTrue();
24+
=> await Assert.That(s_regex.IsMatch(route)).IsTrue();
2125

2226
[Test]
2327
[Arguments("about")]
@@ -26,5 +30,5 @@ public async Task RouteParameterRegex_MatchesParameterizedRoutes(string route)
2630
[Arguments("api/listing")]
2731
[Arguments("")]
2832
public async Task RouteParameterRegex_DoesNotMatchStaticRoutes(string route)
29-
=> await Assert.That(RouteConfigurationService.RouteParameterRegex().IsMatch(route)).IsFalse();
33+
=> await Assert.That(s_regex.IsMatch(route)).IsFalse();
3034
}

EssentialCSharp.Web/Properties/AssemblyInfo.cs

Lines changed: 0 additions & 3 deletions
This file was deleted.

EssentialCSharp.Web/Services/RouteConfigurationService.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ namespace EssentialCSharp.Web.Services;
55

66
public partial class RouteConfigurationService : IRouteConfigurationService
77
{
8-
[GeneratedRegex(@"\{[^}]+\}|\[[^\]]+\]")]
9-
internal static partial Regex RouteParameterRegex();
8+
[GeneratedRegex(RouteParameterPattern)]
9+
private static partial Regex RouteParameterRegex();
10+
11+
public const string RouteParameterPattern = @"\{[^}]+\}|\[[^\]]+\]";
1012

1113
private readonly IActionDescriptorCollectionProvider _ActionDescriptorCollectionProvider;
1214
private readonly HashSet<string> _StaticRoutes;

0 commit comments

Comments
 (0)