Skip to content

Commit efc0e20

Browse files
committed
Bad request removed from TActionResult chaining (#13)
1 parent 1740764 commit efc0e20

File tree

6 files changed

+28
-46
lines changed

6 files changed

+28
-46
lines changed

MyWebApi/Builders/Actions/ShouldReturnBadRequest.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,22 @@ public partial class ActionResultTestBuilder<TActionResult>
1616
/// Tests whether action result is BadRequestResult, InvalidModelStateResult or BadRequestErrorMessageResult.
1717
/// </summary>
1818
/// <returns>Bad request test builder.</returns>
19-
public IBadRequestTestBuilder<TActionResult> ShouldReturnBadRequest()
19+
public IBadRequestTestBuilder ShouldReturnBadRequest()
2020
{
2121
if (this.ActionResult as BadRequestResult != null)
2222
{
23-
return this.ReturnBadRequestTestBuilder<BadRequestResult>()
24-
as IBadRequestTestBuilder<TActionResult>;
23+
return this.ReturnBadRequestTestBuilder<BadRequestResult>();
2524
}
2625

2726
if (this.ActionResult as InvalidModelStateResult != null)
2827
{
29-
return this.ReturnBadRequestTestBuilder<InvalidModelStateResult>()
30-
as IBadRequestTestBuilder<TActionResult>;
28+
return this.ReturnBadRequestTestBuilder<InvalidModelStateResult>();
3129
}
3230

33-
return this.ReturnBadRequestTestBuilder<BadRequestErrorMessageResult>()
34-
as IBadRequestTestBuilder<TActionResult>;
31+
return this.ReturnBadRequestTestBuilder<BadRequestErrorMessageResult>();
3532
}
3633

37-
private IBadRequestTestBuilder<TBadRequestResult> ReturnBadRequestTestBuilder<TBadRequestResult>()
34+
private IBadRequestTestBuilder ReturnBadRequestTestBuilder<TBadRequestResult>()
3835
where TBadRequestResult : class
3936
{
4037
var badRequestResult = this.GetReturnObject<TBadRequestResult>();

MyWebApi/Builders/BadRequests/BadRequestErrorMessageTestBuilder.cs

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,30 @@
11
namespace MyWebApi.Builders.BadRequests
22
{
33
using System.Web.Http;
4-
using System.Web.Http.Results;
54
using Base;
65
using Common.Extensions;
7-
using Contracts.And;
86
using Contracts.BadRequests;
97
using Exceptions;
108

119
/// <summary>
1210
/// Used for testing specific bad request error messages.
1311
/// </summary>
14-
public class BadRequestErrorMessageTestBuilder<TBadRequestResult>
15-
: BaseTestBuilderWithActionResult<TBadRequestResult>, IBadRequestErrorMessageTestBuilder<TBadRequestResult>
12+
public class BadRequestErrorMessageTestBuilder
13+
: BaseTestBuilder, IBadRequestErrorMessageTestBuilder
1614
{
1715
private readonly string actualMessage;
1816

1917
/// <summary>
20-
/// Initializes a new instance of the <see cref="BadRequestErrorMessageTestBuilder{TBadRequestResult}" /> class.
18+
/// Initializes a new instance of the <see cref="BadRequestErrorMessageTestBuilder" /> class.
2119
/// </summary>
2220
/// <param name="controller">Controller on which the action will be tested.</param>
2321
/// <param name="actionName">Name of the tested action.</param>
2422
/// <param name="actualMessage">Actual error message received from bad request result.</param>
2523
public BadRequestErrorMessageTestBuilder(
2624
ApiController controller,
2725
string actionName,
28-
TBadRequestResult actionResult,
2926
string actualMessage)
30-
: base(controller, actionName, actionResult)
27+
: base(controller, actionName)
3128
{
3229
this.actualMessage = actualMessage;
3330
}
@@ -36,64 +33,56 @@ public BadRequestErrorMessageTestBuilder(
3633
/// Tests whether particular error message is equal to given message.
3734
/// </summary>
3835
/// <param name="errorMessage">Expected error message for particular key.</param>
39-
public IAndTestBuilder<TBadRequestResult> ThatEquals(string errorMessage)
36+
public void ThatEquals(string errorMessage)
4037
{
4138
if (this.actualMessage != errorMessage)
4239
{
4340
this.ThrowNewBadRequestResultAssertionException(
4441
"When calling {0} action in {1} expected bad request error message to be '{2}', but instead found '{3}'.",
4542
errorMessage);
4643
}
47-
48-
return this.NewAndTestBuilder();
4944
}
5045

5146
/// <summary>
5247
/// Tests whether particular error message begins with given message.
5348
/// </summary>
5449
/// <param name="beginMessage">Expected beginning for particular error message.</param>
55-
public IAndTestBuilder<TBadRequestResult> BeginningWith(string beginMessage)
50+
public void BeginningWith(string beginMessage)
5651
{
5752
if (!this.actualMessage.StartsWith(beginMessage))
5853
{
5954
this.ThrowNewBadRequestResultAssertionException(
6055
"When calling {0} action in {1} expected bad request error message to begin with '{2}', but instead found '{3}'.",
6156
beginMessage);
6257
}
63-
64-
return this.NewAndTestBuilder();
6558
}
6659

6760
/// <summary>
6861
/// Tests whether particular error message ends with given message.
6962
/// </summary>
7063
/// <param name="endMessage">Expected ending for particular error message.</param>
71-
public IAndTestBuilder<TBadRequestResult> EndingWith(string endMessage)
64+
public void EndingWith(string endMessage)
7265
{
7366
if (!this.actualMessage.EndsWith(endMessage))
7467
{
7568
this.ThrowNewBadRequestResultAssertionException(
7669
"When calling {0} action in {1} expected bad request error message to end with '{2}', but instead found '{3}'.",
7770
endMessage);
7871
}
79-
80-
return this.NewAndTestBuilder();
8172
}
8273

8374
/// <summary>
8475
/// Tests whether particular error message contains given message.
8576
/// </summary>
8677
/// <param name="containsMessage">Expected containing string for particular error message.</param>
87-
public IAndTestBuilder<TBadRequestResult> Containing(string containsMessage)
78+
public void Containing(string containsMessage)
8879
{
8980
if (!this.actualMessage.Contains(containsMessage))
9081
{
9182
this.ThrowNewBadRequestResultAssertionException(
9283
"When calling {0} action in {1} expected bad request error message to contain '{2}', but instead found '{3}'.",
9384
containsMessage);
9485
}
95-
96-
return this.NewAndTestBuilder();
9786
}
9887

9988
private void ThrowNewBadRequestResultAssertionException(string messageFormat, string operation)

MyWebApi/Builders/BadRequests/BadRequestTestBuilder.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
/// </summary>
2020
/// <typeparam name="TBadRequestResult">Type of bad request result - BadRequestResult, InvalidModelStateResult, BadRequestErrorMessageResult.</typeparam>
2121
public class BadRequestTestBuilder<TBadRequestResult> : BaseTestBuilderWithActionResult<TBadRequestResult>,
22-
IBadRequestTestBuilder<TBadRequestResult>
22+
IBadRequestTestBuilder
2323
{
2424
private const string ErrorMessage = "error message";
2525
private const string ModelStateDictionary = "model state dictionary";
@@ -42,30 +42,28 @@ public BadRequestTestBuilder(
4242
/// Tests bad request result with specific error message using test builder.
4343
/// </summary>
4444
/// <returns>Bad request with error message test builder.</returns>
45-
public IBadRequestErrorMessageTestBuilder<TBadRequestResult> WithErrorMessage()
45+
public IBadRequestErrorMessageTestBuilder WithErrorMessage()
4646
{
4747
var badRequestErrorMessageResult = this.GetBadRequestResult<BadRequestErrorMessageResult>(ErrorMessage);
48-
return new BadRequestErrorMessageTestBuilder<TBadRequestResult>(this.Controller, this.ActionName, this.ActionResult, badRequestErrorMessageResult.Message);
48+
return new BadRequestErrorMessageTestBuilder(this.Controller, this.ActionName, badRequestErrorMessageResult.Message);
4949
}
5050

5151
/// <summary>
5252
/// Tests bad request result with specific error message provided by string.
5353
/// </summary>
5454
/// <param name="message">Expected error message from bad request result.</param>
55-
public IAndTestBuilder<TBadRequestResult> WithErrorMessage(string message)
55+
public void WithErrorMessage(string message)
5656
{
5757
var badRequestErrorMessageResult = this.GetBadRequestResult<BadRequestErrorMessageResult>(ErrorMessage);
5858
var actualMessage = badRequestErrorMessageResult.Message;
5959
this.ValidateErrorMessage(message, actualMessage);
60-
61-
return this.NewAndTestBuilder();
6260
}
6361

6462
/// <summary>
6563
/// Tests bad request result with specific model state dictionary.
6664
/// </summary>
6765
/// <param name="modelState">Model state dictionary to deeply compare to the actual one.</param>
68-
public IAndTestBuilder<TBadRequestResult> WithModelState(ModelStateDictionary modelState)
66+
public void WithModelState(ModelStateDictionary modelState)
6967
{
7068
var invalidModelStateResult = this.GetBadRequestResult<InvalidModelStateResult>(ModelStateDictionary);
7169
var actualModelState = invalidModelStateResult.ModelState;
@@ -118,8 +116,6 @@ public IAndTestBuilder<TBadRequestResult> WithModelState(ModelStateDictionary mo
118116
this.ValidateErrorMessage(expectedError, actualError);
119117
}
120118
}
121-
122-
return this.NewAndTestBuilder();
123119
}
124120

125121
/// <summary>

MyWebApi/Builders/Contracts/Actions/IActionResultTestBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public interface IActionResultTestBuilder<out TActionResult> : IBaseTestBuilderW
5858
/// Tests whether action result is BadRequestResult, InvalidModelStateResult or BadRequestErrorMessageResult.
5959
/// </summary>
6060
/// <returns>Bad request test builder.</returns>
61-
IBadRequestTestBuilder<TActionResult> ShouldReturnBadRequest();
61+
IBadRequestTestBuilder ShouldReturnBadRequest();
6262

6363
/// <summary>
6464
/// Tests whether action result is UnauthorizedResult.

MyWebApi/Builders/Contracts/BadRequests/IBadRequestErrorMessageTestBuilder.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,30 @@
55
/// <summary>
66
/// Used for testing specific bad request error messages.
77
/// </summary>
8-
public interface IBadRequestErrorMessageTestBuilder<out TBadRequestResult>
8+
public interface IBadRequestErrorMessageTestBuilder
99
{
1010
/// <summary>
1111
/// Tests whether particular error message is equal to given message.
1212
/// </summary>
1313
/// <param name="errorMessage">Expected error message for particular key.</param>
14-
IAndTestBuilder<TBadRequestResult> ThatEquals(string errorMessage);
14+
void ThatEquals(string errorMessage);
1515

1616
/// <summary>
1717
/// Tests whether particular error message begins with given message.
1818
/// </summary>
1919
/// <param name="beginMessage">Expected beginning for particular error message.</param>
20-
IAndTestBuilder<TBadRequestResult> BeginningWith(string beginMessage);
20+
void BeginningWith(string beginMessage);
2121

2222
/// <summary>
2323
/// Tests whether particular error message ends with given message.
2424
/// </summary>
2525
/// <param name="endMessage">Expected ending for particular error message.</param>
26-
IAndTestBuilder<TBadRequestResult> EndingWith(string endMessage);
26+
void EndingWith(string endMessage);
2727

2828
/// <summary>
2929
/// Tests whether particular error message contains given message.
3030
/// </summary>
3131
/// <param name="containsMessage">Expected containing string for particular error message.</param>
32-
IAndTestBuilder<TBadRequestResult> Containing(string containsMessage);
32+
void Containing(string containsMessage);
3333
}
3434
}

MyWebApi/Builders/Contracts/BadRequests/IBadRequestTestBuilder.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@
77
/// <summary>
88
/// Used for testing bad request results.
99
/// </summary>
10-
public interface IBadRequestTestBuilder<out TBadRequestResult>
10+
public interface IBadRequestTestBuilder
1111
{
1212
/// <summary>
1313
/// Tests bad request result with specific error message using test builder.
1414
/// </summary>
1515
/// <returns>Bad request with error message test builder.</returns>
16-
IBadRequestErrorMessageTestBuilder<TBadRequestResult> WithErrorMessage();
16+
IBadRequestErrorMessageTestBuilder WithErrorMessage();
1717

1818
/// <summary>
1919
/// Tests bad request result with specific error message provided by string.
2020
/// </summary>
2121
/// <param name="message">Expected error message from bad request result.</param>
22-
IAndTestBuilder<TBadRequestResult> WithErrorMessage(string message);
22+
void WithErrorMessage(string message);
2323

2424
/// <summary>
2525
/// Tests bad request result with specific model state dictionary.
2626
/// </summary>
2727
/// <param name="modelState">Model state dictionary to deeply compare to the actual one.</param>
28-
IAndTestBuilder<TBadRequestResult> WithModelState(ModelStateDictionary modelState);
28+
void WithModelState(ModelStateDictionary modelState);
2929

3030
/// <summary>
3131
/// Tests bad request result for model state errors using test builder.

0 commit comments

Comments
 (0)