Skip to content

Commit 5119047

Browse files
thomhurstclaude
andcommitted
refactor: Consolidate repeated ModuleResult assertion patterns (#1579, #1569)
Issue #1579: Replace repeated ModuleResultType.Success assertion blocks with calls to ModuleResultAssertions helper methods across test files: - CommandTests.cs: Use AssertSuccessWithValue and AssertCommandOutput - DotNetTests.cs: Use AssertSuccessWithValue - GitTests.cs: Use AssertSuccessWithValue - NodeTests.cs: Use AssertSuccessWithValue - ZipTests.cs: Use AssertSuccess (no value check needed) Issue #1569: Further consolidate EncodingTests.cs by: - Removing duplicate test data provider methods - Combining "Has_Not_Errored" and "Output_Is_Correct" tests into single tests - Reducing 18 tests to 9 tests with same coverage - Removing unused module class definitions Also updated ModuleResultAssertions.AssertSuccessWithValue<T> to accept nullable types (ModuleResult<T?>) to work with module return types. Net reduction: 212 lines of test code while maintaining full coverage. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent e599f2b commit 5119047

7 files changed

Lines changed: 49 additions & 261 deletions

File tree

test/ModularPipelines.TestHelpers/Assertions/ModuleResultAssertions.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static class ModuleResultAssertions
1212
/// Asserts that a module result represents a successful execution with a non-null value.
1313
/// Checks: ModuleResultType is Success, Exception is null, Value is not null.
1414
/// </summary>
15-
public static async Task AssertSuccessWithValue<T>(ModuleResult<T> moduleResult)
15+
public static async Task AssertSuccessWithValue<T>(ModuleResult<T?> moduleResult)
1616
where T : class
1717
{
1818
using (Assert.Multiple())
@@ -27,7 +27,8 @@ public static async Task AssertSuccessWithValue<T>(ModuleResult<T> moduleResult)
2727
/// Asserts that a module result represents a successful execution.
2828
/// Checks: ModuleResultType is Success, Exception is null.
2929
/// </summary>
30-
public static async Task AssertSuccess<T>(ModuleResult<T> moduleResult)
30+
public static async Task AssertSuccess<T>(ModuleResult<T?> moduleResult)
31+
where T : class
3132
{
3233
using (Assert.Multiple())
3334
{

test/ModularPipelines.UnitTests/Helpers/CommandTests.cs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using ModularPipelines.Modules;
66
using ModularPipelines.Options;
77
using ModularPipelines.TestHelpers;
8+
using ModularPipelines.TestHelpers.Assertions;
89

910
namespace ModularPipelines.UnitTests.Helpers;
1011

@@ -37,34 +38,22 @@ public async Task Has_Not_Errored()
3738
{
3839
var moduleResult = await await RunModule<CommandEchoModule>();
3940

40-
using (Assert.Multiple())
41-
{
42-
await Assert.That(moduleResult.ModuleResultType).IsEqualTo(ModuleResultType.Success);
43-
await Assert.That(moduleResult.Exception).IsNull();
44-
await Assert.That(moduleResult.Value).IsNotNull();
45-
}
41+
await ModuleResultAssertions.AssertSuccessWithValue(moduleResult);
4642
}
4743

4844
[Test]
4945
public async Task Standard_Output_Equals_Foo_Bar()
5046
{
5147
var moduleResult = await await RunModule<CommandEchoModule>();
5248

53-
using (Assert.Multiple())
54-
{
55-
await Assert.That(moduleResult.Value!.StandardError).IsNull().Or.IsEmpty();
56-
await Assert.That(moduleResult.Value.StandardOutput.Trim()).IsEqualTo(TestConstants.TestString);
57-
}
49+
await ModuleResultAssertions.AssertCommandOutput(moduleResult, TestConstants.TestString);
5850
}
5951

6052
[Test]
6153
public async Task Standard_Output_Equals_Foo_Bar_With_Timeout()
6254
{
6355
var moduleResult = await await RunModule<CommandEchoTimeoutModule>();
6456

65-
using (Assert.Multiple())
66-
{
67-
await Assert.That(moduleResult.Value!.Trim()).IsEqualTo(TestConstants.TestString);
68-
}
57+
await Assert.That(moduleResult.Value!.Trim()).IsEqualTo(TestConstants.TestString);
6958
}
7059
}

test/ModularPipelines.UnitTests/Helpers/DotNetTests.cs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using ModularPipelines.Models;
77
using ModularPipelines.Modules;
88
using ModularPipelines.TestHelpers;
9+
using ModularPipelines.TestHelpers.Assertions;
910

1011
namespace ModularPipelines.UnitTests.Helpers;
1112

@@ -41,12 +42,7 @@ public async Task Has_Not_Errored()
4142
{
4243
var moduleResult = await await RunModule<DotNetVersionModule>();
4344

44-
using (Assert.Multiple())
45-
{
46-
await Assert.That(moduleResult.ModuleResultType).IsEqualTo(ModuleResultType.Success);
47-
await Assert.That(moduleResult.Exception).IsNull();
48-
await Assert.That(moduleResult.Value).IsNotNull();
49-
}
45+
await ModuleResultAssertions.AssertSuccessWithValue(moduleResult);
5046
}
5147

5248
[Test]
@@ -55,11 +51,6 @@ public async Task Format_Has_Not_Errored()
5551
{
5652
var moduleResult = await await RunModule<DotNetFormatModule>();
5753

58-
using (Assert.Multiple())
59-
{
60-
await Assert.That(moduleResult.ModuleResultType).IsEqualTo(ModuleResultType.Success);
61-
await Assert.That(moduleResult.Exception).IsNull();
62-
await Assert.That(moduleResult.Value).IsNotNull();
63-
}
54+
await ModuleResultAssertions.AssertSuccessWithValue(moduleResult);
6455
}
65-
}
56+
}

0 commit comments

Comments
 (0)