Skip to content

Commit cedad81

Browse files
committed
Result extension methods now use the new ResultDetailsTestBuilder classes (#359)
1 parent b44a6b4 commit cedad81

3 files changed

Lines changed: 38 additions & 14 deletions

File tree

src/MyTested.AspNetCore.Mvc.Models/BaseShouldReturnTestBuilderExtensions.cs

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
using Builders.Contracts.Models;
77
using Builders.And;
88
using Builders.Base;
9+
using Builders.Contracts.Results;
910
using Builders.Models;
11+
using Builders.Results;
1012
using Exceptions;
1113
using Internal.TestContexts;
1214
using Microsoft.AspNetCore.Mvc;
@@ -40,7 +42,7 @@ public static IAndTestBuilder ResultOfType<TResult>(
4042
public static IAndTestBuilder ResultOfType<TResult>(
4143
this IBaseShouldReturnTestBuilder<TResult> builder,
4244
Type resultType,
43-
Action<IModelDetailsTestBuilder<TResult>> resultTestBuilder)
45+
Action<IResultDetailsTestBuilder<TResult>> resultTestBuilder)
4446
{
4547
var actualBuilder = (BaseTestBuilderWithActionContext)builder;
4648

@@ -50,7 +52,7 @@ public static IAndTestBuilder ResultOfType<TResult>(
5052
canBeAssignable: true,
5153
allowDifferentGenericTypeDefinitions: true);
5254

53-
resultTestBuilder?.Invoke(new ModelDetailsTestBuilder<TResult>(actualBuilder.TestContext));
55+
resultTestBuilder?.Invoke(new ResultDetailsTestBuilder<TResult>(actualBuilder.TestContext));
5456

5557
return new AndTestBuilder(actualBuilder.TestContext);
5658
}
@@ -74,39 +76,50 @@ public static IAndTestBuilder ResultOfType<TResult>(
7476
/// <returns>Test builder of <see cref="IAndTestBuilder"/> type.</returns>
7577
public static IAndTestBuilder ResultOfType<TResult>(
7678
this IBaseShouldReturnTestBuilder builder,
77-
Action<IModelDetailsTestBuilder<TResult>> resultTestBuilder)
79+
Action<IResultDetailsTestBuilder<TResult>> resultTestBuilder)
7880
{
7981
var actualBuilder = (BaseTestBuilderWithActionContext)builder;
8082

8183
InvocationResultValidator.ValidateInvocationResultType<TResult>(
8284
actualBuilder.TestContext,
8385
canBeAssignable: true);
8486

85-
resultTestBuilder?.Invoke(new ModelDetailsTestBuilder<TResult>(actualBuilder.TestContext));
87+
resultTestBuilder?.Invoke(new ResultDetailsTestBuilder<TResult>(actualBuilder.TestContext));
8688

8789
return new AndTestBuilder(actualBuilder.TestContext);
8890
}
8991

9092
/// <summary>
91-
/// Tests whether the result is deeply equal to the provided one.
93+
/// Tests the result by using a test builder.
9294
/// </summary>
93-
/// <typeparam name="TResult">Expected result type.</typeparam>
9495
/// <param name="builder">Instance of <see cref="IBaseShouldReturnTestBuilder"/> type.</param>
95-
/// <param name="model">Expected result object.</param>
96+
/// <param name="resultTestBuilder">Builder for testing the result.</param>
9697
/// <returns>Test builder of <see cref="IAndTestBuilder"/> type.</returns>
97-
public static IAndTestBuilder Result<TResult>(
98+
public static IAndTestBuilder Result(
9899
this IBaseShouldReturnTestBuilder builder,
99-
TResult model)
100+
Action<IResultDetailsTestBuilder> resultTestBuilder)
100101
{
101102
var actualBuilder = (BaseTestBuilderWithActionContext)builder;
102103

103-
InvocationResultValidator.ValidateInvocationResult(
104-
actualBuilder.TestContext,
105-
model);
104+
resultTestBuilder?.Invoke(new ResultDetailsTestBuilder(actualBuilder.TestContext));
106105

107106
return new AndTestBuilder(actualBuilder.TestContext);
108107
}
109108

109+
/// <summary>
110+
/// Tests whether the result is deeply equal to the provided one.
111+
/// </summary>
112+
/// <typeparam name="TResult">Expected result type.</typeparam>
113+
/// <param name="builder">Instance of <see cref="IBaseShouldReturnTestBuilder"/> type.</param>
114+
/// <param name="result">Expected result object.</param>
115+
/// <returns>Test builder of <see cref="IAndTestBuilder"/> type.</returns>
116+
public static IAndTestBuilder Result<TResult>(
117+
this IBaseShouldReturnTestBuilder builder,
118+
TResult result)
119+
=> builder
120+
.Result(value => value
121+
.EqualTo(result));
122+
110123
private static ActionTestContext ConvertMethodResult(ActionTestContext testContext)
111124
{
112125
var methodResult = testContext.MethodResult;

src/MyTested.AspNetCore.Mvc.Models/Builders/Results/ResultDetailsTestBuilder.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
using Contracts.Models;
55
using Contracts.Results;
66
using Internal.TestContexts;
7+
using Models;
8+
using Utilities.Validators;
79

810
/// <summary>
911
/// Used for testing the result members.
@@ -24,7 +26,11 @@ public ResultDetailsTestBuilder(ActionTestContext testContext)
2426
/// <inheritdoc />
2527
public IAndModelDetailsTestBuilder<TResult> EqualTo<TResult>(TResult result)
2628
{
27-
throw new System.NotImplementedException();
29+
InvocationResultValidator.ValidateInvocationResult(
30+
this.TestContext,
31+
result);
32+
33+
return new ModelDetailsTestBuilder<TResult>(this.TestContext);
2834
}
2935
}
3036
}

src/MyTested.AspNetCore.Mvc.Models/Builders/Results/ResultDetailsTestBuilder{TResult}.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Contracts.Results;
55
using Internal.TestContexts;
66
using Models;
7+
using Utilities.Validators;
78

89
/// <summary>
910
/// Used for testing the result members.
@@ -25,7 +26,11 @@ public ResultDetailsTestBuilder(ActionTestContext testContext)
2526
/// <inheritdoc />
2627
public IAndModelDetailsTestBuilder<TResult> EqualTo(TResult result)
2728
{
28-
throw new System.NotImplementedException();
29+
InvocationResultValidator.ValidateInvocationResult(
30+
this.TestContext,
31+
result);
32+
33+
return this;
2934
}
3035
}
3136
}

0 commit comments

Comments
 (0)