Skip to content

Commit de74da8

Browse files
committed
chore: add tests for supporting members logic
1 parent 5a8c672 commit de74da8

8 files changed

Lines changed: 17431 additions & 0 deletions
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using SgfDevs.Dev;
2+
using Xunit;
3+
4+
namespace SgfDevs.Tests;
5+
6+
public class MemberTagDisplayServiceTests
7+
{
8+
private readonly MemberTagDisplayService _service = new();
9+
10+
[Fact]
11+
public void GetDisplayMemberTags_KeepsNonSupportingTagsAndDedupesCaseInsensitive()
12+
{
13+
var result = _service.FormatDisplayMemberTags(["Founding Member", "founding member", "Speaker"]);
14+
15+
Assert.Equal(["Founding Member", "Speaker"], result);
16+
}
17+
18+
[Fact]
19+
public void GetDisplayMemberTags_CollapsesConsecutiveSupportingYearsIntoSingleRange()
20+
{
21+
var result = _service.FormatDisplayMemberTags(["2024 Supporting Member", "2025 Supporting Member", "2026 Supporting Member"]);
22+
23+
Assert.Equal(["2024-2026 Supporting Member"], result);
24+
}
25+
26+
[Fact]
27+
public void GetDisplayMemberTags_CollapsesNonConsecutiveSupportingYearsIntoCommaSeparatedValues()
28+
{
29+
var result = _service.FormatDisplayMemberTags(["2022 Supporting Member", "2024 Supporting Member", "2026 Supporting Member"]);
30+
31+
Assert.Equal(["2022, 2024, 2026 Supporting Member"], result);
32+
}
33+
34+
[Fact]
35+
public void GetDisplayMemberTags_CollapsesMixedSupportingYearsIntoRangesAndSingles()
36+
{
37+
var result = _service.FormatDisplayMemberTags(["2022 Supporting Member", "2024 Supporting Member", "2025 Supporting Member", "2026 Supporting Member"]);
38+
39+
Assert.Equal(["2022, 2024-2026 Supporting Member"], result);
40+
}
41+
42+
[Fact]
43+
public void GetDisplayMemberTags_InsertsCombinedSupportingTagAtFirstSupportingPosition()
44+
{
45+
var result = _service.FormatDisplayMemberTags(["Founder", "2024 Supporting Member", "Volunteer", "2025 Supporting Member"]);
46+
47+
Assert.Equal(["Founder", "2024-2025 Supporting Member", "Volunteer"], result);
48+
}
49+
50+
[Fact]
51+
public void GetDisplayMemberTags_DoesNotCollapseMalformedSupportingTags()
52+
{
53+
var result = _service.FormatDisplayMemberTags(["Supporting Member", "2024 supporter", "2024 Supporting Member"]);
54+
55+
Assert.Equal(["Supporting Member", "2024 supporter", "2024 Supporting Member"], result);
56+
}
57+
}

SgfDevs.Tests/SgfDevs.Tests.csproj

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net10.0</TargetFramework>
4+
<ImplicitUsings>enable</ImplicitUsings>
5+
<Nullable>enable</Nullable>
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
11+
<PackageReference Include="xunit" Version="2.9.2" />
12+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
13+
<PrivateAssets>all</PrivateAssets>
14+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
15+
</PackageReference>
16+
</ItemGroup>
17+
18+
<ItemGroup>
19+
<ProjectReference Include="..\SgfDevs\SgfDevs.csproj" />
20+
</ItemGroup>
21+
</Project>

0 commit comments

Comments
 (0)