Skip to content

Commit

Permalink
Add decimal overload to QueryStringBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
Cryptoc1 committed Jul 20, 2024
1 parent a62d61c commit a9cb6e6
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
18 changes: 18 additions & 0 deletions src/Http/QueryStringBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,24 @@ public static QueryStringBuilder Append( this QueryStringBuilder builder, string
return builder;
}

/// <summary> Appends a parameter with the given <paramref name="name"/> and <paramref name="value"/>. </summary>
/// <param name="builder"> The builder to be mutated </param>
/// <param name="name"> The name of the parameter. </param>
/// <param name="value"> The value of the parameter. </param>
/// <returns> The mutated query string. </returns>
public static QueryStringBuilder Append( this QueryStringBuilder builder, string name, decimal? value )
{
ArgumentNullException.ThrowIfNull( builder );
ArgumentException.ThrowIfNullOrWhiteSpace( name );

if( value.HasValue )
{
return builder.Append( name, value.Value.ToString( CultureInfo.InvariantCulture ) );
}

return builder;
}

/// <summary> Appends a parameter with the given <paramref name="name"/> and <paramref name="value"/>. </summary>
/// <param name="builder"> The builder to be mutated </param>
/// <param name="name"> The name of the parameter. </param>
Expand Down
19 changes: 18 additions & 1 deletion test/Http/QueryStringBuilderExtensionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,24 @@ public void Append_DateTimeOffset_DoesNot_AppendNull( )
Assert.Empty( builder.ToString() );
}

[Fact( DisplayName = "Append (decimal): appends double string" )]
public void Append_Decimal_AppendsDecimalString( )
{
var builder = new QueryStringBuilder()
.Append( "test", decimal.MaxValue );

Assert.Equal( $"?test={Uri.EscapeDataString( decimal.MaxValue.ToString( CultureInfo.InvariantCulture ) )}", builder.ToString() );
}

[Fact( DisplayName = "Append (decimal?): does not append null" )]
public void Append_Decimal_DoesNot_AppendNull( )
{
var builder = new QueryStringBuilder()
.Append( "test", default( decimal? ) );

Assert.Empty( builder.ToString() );
}

[Fact( DisplayName = "Append (double): appends double string" )]
public void Append_Double_AppendsDoubleString( )
{
Expand All @@ -78,7 +96,6 @@ public void Append_Double_DoesNot_AppendNull( )
Assert.Empty( builder.ToString() );
}


[Fact( DisplayName = "Append (int): appends int string" )]
public void Append_Int_AppendsIntString( )
{
Expand Down

0 comments on commit a9cb6e6

Please sign in to comment.