Skip to content

Commit

Permalink
Merge pull request #22 from faddiv/master
Browse files Browse the repository at this point in the history
Version 3.1
  • Loading branch information
faddiv committed Oct 24, 2020
2 parents 5195716 + 477d79f commit 4637031
Show file tree
Hide file tree
Showing 29 changed files with 737 additions and 379 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System;
using System.Diagnostics;
using FluentAssertions.Execution;
using FluentAssertions.Primitives;
using FluentAssertions.Execution;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Diagnostics;

namespace FluentAssertions.AspNetCore.Mvc
{
/// <summary>
/// Contains a number of methods to assert that a <see cref="AcceptedAtActionResult"/> is in the expected state.
/// </summary>
[DebuggerNonUserCode]
public class AcceptedAtActionResultAssertions : ObjectAssertions
public class AcceptedAtActionResultAssertions : ObjectResultAssertionsBase<AcceptedAtActionResult, AcceptedAtActionResultAssertions>
{
/// <summary>
/// Initializes a new instance of the <see cref="AcceptedAtActionResultAssertions" /> class.
Expand All @@ -30,7 +29,7 @@ public class AcceptedAtActionResultAssertions : ObjectAssertions
/// </param>
public AcceptedAtActionResultAssertions WithActionName(string expectedActionName, string reason = "", params object[] reasonArgs)
{
string actualActionName = (Subject as AcceptedAtActionResult)?.ActionName;
string actualActionName = ObjectResultSubject.ActionName;

Execute.Assertion
.ForCondition(string.Equals(actualActionName, expectedActionName, StringComparison.OrdinalIgnoreCase))
Expand All @@ -54,7 +53,7 @@ public AcceptedAtActionResultAssertions WithActionName(string expectedActionName
/// </param>
public AcceptedAtActionResultAssertions WithControllerName(string expectedControllerName, string reason = "", params object[] reasonArgs)
{
string actualControllerName = (Subject as AcceptedAtActionResult)?.ControllerName;
string actualControllerName = ObjectResultSubject.ControllerName;

Execute.Assertion
.ForCondition(string.Equals(actualControllerName, expectedControllerName, StringComparison.OrdinalIgnoreCase))
Expand All @@ -79,35 +78,12 @@ public AcceptedAtActionResultAssertions WithControllerName(string expectedContro
/// </param>
public AcceptedAtActionResultAssertions WithRouteValue(string key, object expectedValue, string reason = "", params object[] reasonArgs)
{
var subjectTyped = Subject as AcceptedAtActionResult;
var actualRouteValues = ObjectResultSubject.RouteValues;

AssertionHelpers.AssertStringObjectDictionary(subjectTyped.RouteValues,
AssertionHelpers.AssertStringObjectDictionary(actualRouteValues,
"AcceptedAtActionResult.RouteValues", key, expectedValue, reason, reasonArgs);

return this;
}

/// <summary>
/// Asserts the value is of the expected type.
/// </summary>
/// <typeparam name="TValue">The expected type.</typeparam>
/// <returns>The typed value.</returns>
public TValue ValueAs<TValue>()
{
var subjectTyped = Subject as AcceptedAtActionResult;
var value = subjectTyped.Value;

if (value == null)
Execute.Assertion
.WithDefaultIdentifier("AcceptedAtActionResult.Value")
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));

Execute.Assertion
.ForCondition(value is TValue)
.WithDefaultIdentifier("AcceptedAtActionResult.Value")
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());

return (TValue)value;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System;
using System.Diagnostics;
using FluentAssertions.Execution;
using FluentAssertions.Primitives;
using FluentAssertions.Execution;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Diagnostics;

namespace FluentAssertions.AspNetCore.Mvc
{
/// <summary>
/// Contains a number of methods to assert that a <see cref="AcceptedAtRouteResult"/> is in the expected state.
/// </summary>
[DebuggerNonUserCode]
public class AcceptedAtRouteResultAssertions : ObjectAssertions
public class AcceptedAtRouteResultAssertions : ObjectResultAssertionsBase<AcceptedAtRouteResult, AcceptedAtRouteResultAssertions>
{
/// <summary>
/// Initializes a new instance of the <see cref="AcceptedAtRouteResultAssertions" /> class.
Expand All @@ -30,13 +29,13 @@ public class AcceptedAtRouteResultAssertions : ObjectAssertions
/// </param>
public AcceptedAtRouteResultAssertions WithRouteName(string expectedRouteName, string reason = "", params object[] reasonArgs)
{
var subjectTyped = Subject as AcceptedAtRouteResult;
var actualRouteName = ObjectResultSubject.RouteName;

Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(string.Equals(expectedRouteName, subjectTyped.RouteName, StringComparison.OrdinalIgnoreCase))
.ForCondition(string.Equals(expectedRouteName, actualRouteName, StringComparison.OrdinalIgnoreCase))
.WithDefaultIdentifier("AcceptedAtRouteResult.RouteName")
.FailWith(FailureMessages.CommonFailMessage, expectedRouteName, subjectTyped.RouteName);
.FailWith(FailureMessages.CommonFailMessage, expectedRouteName, actualRouteName);

return this;
}
Expand All @@ -55,35 +54,12 @@ public AcceptedAtRouteResultAssertions WithRouteName(string expectedRouteName, s
/// </param>
public AcceptedAtRouteResultAssertions WithRouteValue(string key, object expectedValue, string reason = "", params object[] reasonArgs)
{
var subjectTyped = Subject as AcceptedAtRouteResult;
var actualRouteValues = ObjectResultSubject.RouteValues;

AssertionHelpers.AssertStringObjectDictionary(subjectTyped.RouteValues,
AssertionHelpers.AssertStringObjectDictionary(actualRouteValues,
"AcceptedAtRouteResult.RouteValues", key, expectedValue, reason, reasonArgs);

return this;
}

/// <summary>
/// Asserts the value is of the expected type.
/// </summary>
/// <typeparam name="TValue">The expected type.</typeparam>
/// <returns>The typed value.</returns>
public TValue ValueAs<TValue>()
{
var subjectTyped = Subject as AcceptedAtRouteResult;
var value = subjectTyped.Value;

if (value == null)
Execute.Assertion
.WithDefaultIdentifier("AcceptedAtRouteResult.Value")
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));

Execute.Assertion
.ForCondition(value is TValue)
.WithDefaultIdentifier("AcceptedAtRouteResult.Value")
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());

return (TValue)value;
}
}
}
46 changes: 8 additions & 38 deletions src/FluentAssertions.AspNetCore.Mvc/AcceptedResultAssertions.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System;
using System.Diagnostics;
using FluentAssertions.Execution;
using FluentAssertions.Primitives;
using FluentAssertions.Execution;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Diagnostics;

namespace FluentAssertions.AspNetCore.Mvc
{
/// <summary>
/// Contains a number of methods to assert that a <see cref="AcceptedResult"/> is in the expected state.
/// </summary>
[DebuggerNonUserCode]
public class AcceptedResultAssertions : ObjectAssertions
public class AcceptedResultAssertions : ObjectResultAssertionsBase<AcceptedResult, AcceptedResultAssertions>
{
#region Public Constructors

Expand All @@ -26,42 +25,13 @@ public AcceptedResultAssertions(AcceptedResult subject) : base(subject)

#region Public Properties
/// <summary>
/// The value on the AcceptedResult
/// The location on the AcceptedResult.
/// </summary>
public object Value => AcceptedResultSubject.Value;

public string Location => AcceptedResultSubject.Location;

#endregion

#region Private Properties
private AcceptedResult AcceptedResultSubject => (AcceptedResult)Subject;
public string Location => ObjectResultSubject.Location;

#endregion

#region Public Methods
/// <summary>
/// Asserts the value is of the expected type.
/// </summary>
/// <typeparam name="TValue">The expected type.</typeparam>
/// <returns>The typed value.</returns>
public TValue ValueAs<TValue>()
{
var value = AcceptedResultSubject.Value;

if (value == null)
Execute.Assertion
.WithDefaultIdentifier("AcceptedResultAssertions.Value")
.FailWith(FailureMessages.CommonNullWasSuppliedFailMessage, typeof(TValue));

Execute.Assertion
.ForCondition(value is TValue)
.WithDefaultIdentifier("AcceptedResultAssertions.Value")
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(TValue), value.GetType());

return (TValue)value;
}

/// <summary>
/// Asserts the uri has the expected value.
/// </summary>
Expand All @@ -83,7 +53,7 @@ public AcceptedResultAssertions WithUri(Uri uri, string reason = "", params obje
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(expectedUri == Location)
.WithDefaultIdentifier("AcceptedResultAssertions.Uri")
.WithDefaultIdentifier("AcceptedResult.Uri")
.FailWith(FailureMessages.CommonFailMessage, expectedUri, Location);

return this;
Expand All @@ -108,7 +78,7 @@ public AcceptedResultAssertions WithUri(string uri, string reason = "", params o
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(uri == Location)
.WithDefaultIdentifier("AcceptedResultAssertions.Uri")
.WithDefaultIdentifier("AcceptedResult.Uri")
.FailWith(FailureMessages.CommonFailMessage, uri, Location);

return this;
Expand Down
45 changes: 34 additions & 11 deletions src/FluentAssertions.AspNetCore.Mvc/ActionResultAssertions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ public ActionResultAssertions(IActionResult subject) : base(subject)
#endregion Public Constructors

#region Protected Properties

/// <summary>
/// <inheritdoc />
/// </summary>
protected override string Identifier => "ActionResult";

#endregion Protected Properties
Expand Down Expand Up @@ -325,6 +327,27 @@ public StatusCodeResultAssertions BeStatusCodeResult(string reason = "", params
return new StatusCodeResultAssertions(Subject as StatusCodeResult);
}

/// <summary>
/// Asserts that the subject is a <see cref="ObjectResult"/>.
/// </summary>
/// <param name="reason">
/// A formatted phrase as is supported by <see cref="string.Format(string,object[])" /> explaining why the assertion
/// is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
/// </param>
/// <param name="reasonArgs">
/// Zero or more objects to format using the placeholders in <paramref name="reason"/>.
/// </param>
[CustomAssertion]
public ObjectResultAssertions BeObjectResult(string reason = "", params object[] reasonArgs)
{
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is ObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ObjectResult), Subject.GetType());

return new ObjectResultAssertions(Subject as ObjectResult);
}

/// <summary>
/// Asserts that the subject is an <see cref="OkResult"/>.
/// </summary>
Expand Down Expand Up @@ -362,7 +385,7 @@ public OkObjectResultAssertions BeOkObjectResult(string reason = "", params obje
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is OkObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(OkObjectResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(OkObjectResult), Subject.GetType());

return new OkObjectResultAssertions(Subject as OkObjectResult);
}
Expand Down Expand Up @@ -404,7 +427,7 @@ public BadRequestObjectResultAssertions BeBadRequestObjectResult(string reason =
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is BadRequestObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(BadRequestObjectResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(BadRequestObjectResult), Subject.GetType());

return new BadRequestObjectResultAssertions(Subject as BadRequestObjectResult);
}
Expand All @@ -425,7 +448,7 @@ public CreatedResultAssertions BeCreatedResult(string reason = "", params object
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is CreatedResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedResult), Subject.GetType());

return new CreatedResultAssertions(Subject as CreatedResult);
}
Expand Down Expand Up @@ -488,7 +511,7 @@ public ForbidResultAssertions BeForbidResult(string reason = "", params object[]
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is ForbidResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ForbidResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(ForbidResult), Subject.GetType());

return new ForbidResultAssertions(Subject as ForbidResult);
}
Expand Down Expand Up @@ -551,7 +574,7 @@ public NotFoundObjectResultAssertions BeNotFoundObjectResult(string reason = "",
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is NotFoundObjectResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(NotFoundObjectResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(NotFoundObjectResult), Subject.GetType());

return new NotFoundObjectResultAssertions(Subject as NotFoundObjectResult);
}
Expand Down Expand Up @@ -593,7 +616,7 @@ public SignInResultAssertions BeSignInResult(string reason = "", params object[]
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is SignInResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(SignInResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(SignInResult), Subject.GetType());

return new SignInResultAssertions(Subject as SignInResult);
}
Expand Down Expand Up @@ -656,7 +679,7 @@ public AcceptedAtActionResultAssertions BeAcceptedAtActionResult(string reason =
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is AcceptedAtActionResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtActionResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtActionResult), Subject.GetType());

return new AcceptedAtActionResultAssertions(Subject as AcceptedAtActionResult);
}
Expand All @@ -677,7 +700,7 @@ public AcceptedAtRouteResultAssertions BeAcceptedAtRouteResult(string reason = "
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is AcceptedAtRouteResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtRouteResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(AcceptedAtRouteResult), Subject.GetType());

return new AcceptedAtRouteResultAssertions(Subject as AcceptedAtRouteResult);
}
Expand All @@ -698,7 +721,7 @@ public CreatedAtActionResultAssertions BeCreatedAtActionResult(string reason = "
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is CreatedAtActionResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtActionResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtActionResult), Subject.GetType());

return new CreatedAtActionResultAssertions(Subject as CreatedAtActionResult);
}
Expand All @@ -719,7 +742,7 @@ public CreatedAtRouteResultAssertions BeCreatedAtRouteResult(string reason = "",
Execute.Assertion
.BecauseOf(reason, reasonArgs)
.ForCondition(Subject is CreatedAtRouteResult)
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtRouteResult).Name, Subject.GetType().Name);
.FailWith(FailureMessages.CommonTypeFailMessage, typeof(CreatedAtRouteResult), Subject.GetType());

return new CreatedAtRouteResultAssertions(Subject as CreatedAtRouteResult);
}
Expand Down

0 comments on commit 4637031

Please sign in to comment.