Skip to content

Commit

Permalink
Fix #1290: Ignore only class level parameters in NUnit tests is not p…
Browse files Browse the repository at this point in the history
…ossible (#1291)
  • Loading branch information
tom-englert authored Sep 18, 2024
1 parent fa99d80 commit da9e9bc
Show file tree
Hide file tree
Showing 43 changed files with 406 additions and 59 deletions.
14 changes: 7 additions & 7 deletions docs/parameterised.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public Task UseParametersUsage(string arg)
.UseParameters(arg);
}
```
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L86-L98' title='Snippet source file'>snippet source</a> | <a href='#snippet-UseParameters' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L140-L152' title='Snippet source file'>snippet source</a> | <a href='#snippet-UseParameters' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

If not all parameters are required, a subset can be passed in. In this scenario, the parameters passed in will match with the method parameter names from the start. For example the following will result in a file named `ParametersSample.UseParametersSubSet_arg1=Value1_arg2=Value2.verified.txt`
Expand All @@ -72,7 +72,7 @@ public Task UseParametersSubSet(string arg1, string arg2, string arg3)
.UseParameters(arg1, arg2);
}
```
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L100-L111' title='Snippet source file'>snippet source</a> | <a href='#snippet-UseParametersSubSet' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L154-L165' title='Snippet source file'>snippet source</a> | <a href='#snippet-UseParametersSubSet' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

If the number of parameters passed to `UseParameters()` is greater than the number of parameters in the test method, an exception will be thrown.
Expand All @@ -93,7 +93,7 @@ If the number of parameters passed to `UseParameters()` is greater than the numb
public Task TestCaseUsage(string arg) =>
Verify(arg);
```
<sup><a href='/src/Verify.NUnit.Tests/Snippets/ParametersSample.cs#L62-L69' title='Snippet source file'>snippet source</a> | <a href='#snippet-NUnitTestCase' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.NUnit.Tests/Snippets/ParametersSample.cs#L108-L115' title='Snippet source file'>snippet source</a> | <a href='#snippet-NUnitTestCase' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down Expand Up @@ -187,7 +187,7 @@ public Task InlineDataUsageFluent(string arg) =>
Verify(arg)
.UseParameters(arg);
```
<sup><a href='/src/Verify.Xunit.Tests/Snippets/ParametersSample.cs#L63-L82' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitInlineData' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Xunit.Tests/Snippets/ParametersSample.cs#L101-L120' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitInlineData' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down Expand Up @@ -223,7 +223,7 @@ public static IEnumerable<object[]> GetData()
];
}
```
<sup><a href='/src/Verify.Xunit.Tests/Snippets/ParametersSample.cs#L103-L132' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitMemberData' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Xunit.Tests/Snippets/ParametersSample.cs#L141-L170' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitMemberData' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down Expand Up @@ -348,7 +348,7 @@ public class ComplexParametersSample
public Task InlineDataUsage(string arg) =>
Verify(arg);
```
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L76-L84' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitV3InlineData' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L130-L138' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitV3InlineData' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand All @@ -374,7 +374,7 @@ public static IEnumerable<object[]> GetData()
];
}
```
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L113-L132' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitV3MemberData' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.XunitV3.Tests/Snippets/ParametersSample.cs#L167-L186' title='Snippet source file'>snippet source</a> | <a href='#snippet-xunitV3MemberData' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -809,7 +809,7 @@ var result = await Verify(
});
Assert.Contains("Value To Check", result.Text);
```
<sup><a href='/src/Verify.Tests/Tests.cs#L367-L376' title='Snippet source file'>snippet source</a> | <a href='#snippet-VerifyResult' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Tests.cs#L385-L394' title='Snippet source file'>snippet source</a> | <a href='#snippet-VerifyResult' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

If using `Verifier.Throws`, the resulting `Exception` will also be accessible
Expand Down
54 changes: 52 additions & 2 deletions src/Verify.Fixie.Tests/Snippets/ParametersSample.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// ReSharper disable UnusedParameter.Global
// ReSharper disable UnusedParameter.Global
public class ParametersSample
{
[TestCase("1.1")]
public Task Decimal(decimal arg) =>
Verify(arg)
.UseParameters(arg);

[TestCase((float) 1.1)]
[TestCase((float)1.1)]
public Task Float(float arg) =>
Verify(arg)
.UseParameters(arg);
Expand Down Expand Up @@ -75,4 +75,54 @@ public Task IgnoreParametersForVerifiedFluentCustomParams(string arg) =>
.IgnoreParametersForVerified($"Number{arg}");

#endregion

#region IgnoreParametersFixie

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParameters(string arg)
{
var settings = new VerifySettings();
settings.UseParameters(arg);
settings.IgnoreParameters(nameof(arg));
return Verify("value", settings);
}

#endregion

#region IgnoreParametersFluentFixie

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParametersFluent(string arg) =>
Verify("value")
.UseParameters(arg)
.IgnoreParameters(arg);

#endregion

#region IgnoreParametersCustomParamsFixie

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParametersCustomParams(string arg)
{
var settings = new VerifySettings();
settings.UseParameters(arg);
settings.IgnoreParameters(nameof(arg));
return Verify("value", settings);
}

#endregion

#region IgnoreParametersCustomParamsFluentFixie

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParametersFluentCustomParams(string arg) =>
Verify("value")
.UseParameters(arg)
.IgnoreParameters(nameof(arg));

#endregion
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
54 changes: 54 additions & 0 deletions src/Verify.MSTest.Tests/Snippets/ParametersSample.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,58 @@ public Task IgnoreParametersForVerifiedFluentCustomParams(string arg) =>
.IgnoreParametersForVerified($"Number{arg}");

#endregion

#region IgnoreParametersMsTest

[DataTestMethod]
[DataRow("One")]
[DataRow("Two")]
public Task IgnoreParameters(string arg)
{
var settings = new VerifySettings();
settings.UseParameters(arg);
settings.IgnoreParameters(nameof(arg));
return Verify("value", settings);
}

#endregion

#region IgnoreParametersFluentMsTest

[DataTestMethod]
[DataRow("One")]
[DataRow("Two")]
public Task IgnoreParametersFluent(string arg) =>
Verify("value")
.UseParameters(arg)
.IgnoreParameters(nameof(arg));

#endregion

#region IgnoreParametersCustomParamsMsTest

[DataTestMethod]
[DataRow("One")]
[DataRow("Two")]
public Task IgnoreParametersCustomParams(string arg)
{
var settings = new VerifySettings();
settings.UseParameters($"Number{arg}");
settings.IgnoreParameters(nameof(arg));
return Verify("value", settings);
}

#endregion

#region IgnoreParametersCustomParamsFluentMsTest

[DataTestMethod]
[DataRow("One")]
[DataRow("Two")]
public Task IgnoreParametersFluentCustomParams(string arg) =>
Verify("value")
.UseParameters($"Number{arg}")
.IgnoreParameters(nameof(arg));

#endregion
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1_3.2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1_4.2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2_3.2
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2_4.2
22 changes: 21 additions & 1 deletion src/Verify.NUnit.Tests/Snippets/ClassLevelParams.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma warning disable CS9113 // Parameter is unread.
#pragma warning disable CS9113 // Parameter is unread.
[TestFixture("1")]
[TestFixture("2")]
public class ClassLevelParams(string arg1)
Expand All @@ -15,4 +15,24 @@ public class ClassLevelParams(string arg1)
public Task IgnoreParameters(string arg2) =>
Verify("Value")
.IgnoreParametersForVerified();

[TestCase("3")]
[TestCase("4")]
public Task IgnoreClassLevelParametersOnly(string arg2) =>
Verify(arg2)
.IgnoreParameters(nameof(arg1));

[TestCase("3.1", "3.2")]
[TestCase("4.1", "4.2")]
public Task IgnoreMethodParameterOnly(string arg2, string arg3) =>
Verify($"{arg1}_{arg3}")
.IgnoreParameters(nameof(arg2));

[TestCase("3")]
[TestCase("4")]
public void IgnoreParameters_ThrowsOnInvalidParameterName(string arg2) =>
ThrowsAsync<Exception>(() =>
Verify(arg2)
.IgnoreParameters("XYZ")
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
48 changes: 47 additions & 1 deletion src/Verify.NUnit.Tests/Snippets/ParametersSample.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[TestFixture]
[TestFixture]
public class ParametersSample
{
[TestCase("1.1")]
Expand Down Expand Up @@ -59,6 +59,52 @@ public Task IgnoreParametersForVerifiedCustomParamsFluent(string arg) =>

#endregion

#region IgnoreParametersNunit

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParameters(string arg)
{
var settings = new VerifySettings();
settings.IgnoreParameters();
return Verify("value", settings);
}

#endregion

#region IgnoreParametersFluentNunit

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParametersFluent(string arg) =>
Verify("value")
.IgnoreParameters();

#endregion

#region IgnoreParametersCustomParamsNunit

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParametersCustomParams(string arg)
{
var settings = new VerifySettings();
settings.IgnoreParameters(nameof(arg));
return Verify("value", settings);
}

#endregion

#region IgnoreParametersCustomParamsFluentNunit

[TestCase("One")]
[TestCase("Two")]
public Task IgnoreParametersCustomParamsFluent(string arg) =>
Verify("value")
.IgnoreParameters(nameof(arg));

#endregion

#region NUnitTestCase

[TestCase("Value1")]
Expand Down
2 changes: 1 addition & 1 deletion src/Verify.NUnit/Verifier.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#pragma warning disable VerifySetParameters
#pragma warning disable VerifySetParameters
namespace VerifyNUnit;

public static partial class Verifier
Expand Down
2 changes: 1 addition & 1 deletion src/Verify.Tests/Naming/NamerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ public async Task UseTooManyParameters(string param1)
{
var exception = await Assert.ThrowsAsync<Exception>(() => Verify("UseTooManyParameters")
.UseParameters("param1", "param2"));
Assert.Equal("The number of passed in parameters (2) must be fewer than the number of parameters for the method (1).", exception.Message);
Assert.Equal("The number of passed in parameters (2) must not exceed the number of parameters for the method (1).", exception.Message);
}

[Fact]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
20 changes: 19 additions & 1 deletion src/Verify.Tests/Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public async Task IncorrectParameterCount_TooMany(int one, int two)
{
var exception = await Assert.ThrowsAsync<Exception>(() => Verify("Value")
.UseParameters(1, 2, 3));
Assert.Equal("The number of passed in parameters (3) must be fewer than the number of parameters for the method (2).", exception.Message);
Assert.Equal("The number of passed in parameters (3) must not exceed the number of parameters for the method (2).", exception.Message);
}

// [Theory]
Expand Down Expand Up @@ -272,6 +272,24 @@ await Verify("value")
Assert.False(File.Exists(verifiedFile));
}

[Theory]
[InlineData("P1", "P2")]
public async Task DanglingFilesIgnoreParameters(string param1, string param2)
{
var receivedFile = CurrentFile.Relative($"Tests.DanglingFilesIgnoreParameters_param1=P1_param2=P2.{Namer.RuntimeAndVersion}#01.received.txt");
var verifiedFile = CurrentFile.Relative($"Tests.DanglingFilesIgnoreParameters_param2=P2.{Namer.RuntimeAndVersion}#01.verified.txt");
File.WriteAllText(receivedFile, "");
File.WriteAllText(verifiedFile, "");
await Verify("value")
.UniqueForRuntimeAndVersion()
.UseParameters(param1, param2)
.IgnoreParameters(nameof(param1))
.AutoVerify();
await Task.Delay(1000);
Assert.False(File.Exists(receivedFile));
Assert.False(File.Exists(verifiedFile));
}

class Element
{
// ReSharper disable once UnusedMember.Local
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Loading

0 comments on commit da9e9bc

Please sign in to comment.