Skip to content

Commit 300d847

Browse files
committed
Added DataProviderValidator.cs (#125)
1 parent 5e53d21 commit 300d847

File tree

8 files changed

+76
-41
lines changed

8 files changed

+76
-41
lines changed
File renamed without changes.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
namespace MyTested.AspNetCore.Mvc.Utilities.Validators
2+
{
3+
using Exceptions;
4+
using Extensions;
5+
using Internal.TestContexts;
6+
7+
public static class DataProviderValidator
8+
{
9+
public static void ValidateDataProviderNumberOfEntries(ComponentTestContext testContext, string name, int? expectedCount, int actualCount)
10+
{
11+
if (actualCount == 0
12+
|| (expectedCount != null && actualCount != expectedCount))
13+
{
14+
ThrowNewDataProviderAssertionException(
15+
testContext,
16+
name,
17+
expectedCount == null ? " entries" : $" with {expectedCount} {(expectedCount != 1 ? "entries" : "entry")}",
18+
expectedCount == null ? "none were found" : $"in fact contained {actualCount}");
19+
}
20+
}
21+
22+
public static void ThrowNewDataProviderAssertionExceptionWithNoEntries(ComponentTestContext testContext, string name)
23+
{
24+
ThrowNewDataProviderAssertionException(
25+
testContext,
26+
name,
27+
" with no entries",
28+
"in fact it had some");
29+
}
30+
31+
public static void ThrowNewDataProviderAssertionException(
32+
ComponentTestContext testContext,
33+
string name,
34+
string expectedValue,
35+
string actualValue)
36+
{
37+
throw new DataProviderAssertionException(string.Format(
38+
"When calling {0} action in {1} expected to have {2}{3}, but {4}.",
39+
testContext.MethodName,
40+
testContext.Component.GetName(),
41+
name,
42+
expectedValue,
43+
actualValue));
44+
}
45+
}
46+
}

src/MyTested.AspNetCore.Mvc.Caching/ShouldHaveTestBuilderCachingExtensions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Builders.Contracts.And;
77
using Builders.Contracts.Data;
88
using Builders.Data;
9+
using Utilities.Validators;
910

1011
/// <summary>
1112
/// Contains <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> extension methods for <see cref="IShouldHaveTestBuilder{TActionResult}"/>.
@@ -24,7 +25,9 @@ public static IAndTestBuilder<TActionResult> NoMemoryCache<TActionResult>(this I
2425

2526
if (actualShouldHaveTestBuilder.TestContext.GetMockedMemoryCache().Count > 0)
2627
{
27-
actualShouldHaveTestBuilder.ThrowNewDataProviderAssertionExceptionWithNoEntries(MemoryCacheTestBuilder.MemoryCacheName);
28+
DataProviderValidator.ThrowNewDataProviderAssertionExceptionWithNoEntries(
29+
actualShouldHaveTestBuilder.TestContext,
30+
MemoryCacheTestBuilder.MemoryCacheName);
2831
}
2932

3033
return actualShouldHaveTestBuilder.NewAndTestBuilder();
@@ -44,7 +47,8 @@ public static IAndTestBuilder<TActionResult> MemoryCache<TActionResult>(
4447
{
4548
var actualShouldHaveTestBuilder = (ShouldHaveTestBuilder<TActionResult>)shouldHaveTestBuilder;
4649

47-
actualShouldHaveTestBuilder.ValidateDataProviderNumberOfEntries(
50+
DataProviderValidator.ValidateDataProviderNumberOfEntries(
51+
actualShouldHaveTestBuilder.TestContext,
4852
MemoryCacheTestBuilder.MemoryCacheName,
4953
withNumberOfEntries,
5054
actualShouldHaveTestBuilder.TestContext.GetMockedMemoryCache().Count);

src/MyTested.AspNetCore.Mvc.Core/Builders/Actions/ShouldHave/ShouldHaveTestBuilder.cs

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -32,36 +32,5 @@ public IAndTestBuilder<TActionResult> HttpResponse(Action<IHttpResponseTestBuild
3232
httpResponseTestBuilder(new HttpResponseTestBuilder(this.TestContext));
3333
return this.NewAndTestBuilder();
3434
}
35-
36-
public void ValidateDataProviderNumberOfEntries(string name, int? expectedCount, int actualCount)
37-
{
38-
if (actualCount == 0
39-
|| (expectedCount != null && actualCount != expectedCount))
40-
{
41-
this.ThrowNewDataProviderAssertionException(
42-
name,
43-
expectedCount == null ? " entries" : $" with {expectedCount} {(expectedCount != 1 ? "entries" : "entry")}",
44-
expectedCount == null ? "none were found" : $"in fact contained {actualCount}");
45-
}
46-
}
47-
48-
public void ThrowNewDataProviderAssertionExceptionWithNoEntries(string name)
49-
{
50-
this.ThrowNewDataProviderAssertionException(
51-
name,
52-
" with no entries",
53-
"in fact it had some");
54-
}
55-
56-
public void ThrowNewDataProviderAssertionException(string name, string expectedValue, string actualValue)
57-
{
58-
throw new DataProviderAssertionException(string.Format(
59-
"When calling {0} action in {1} expected to have {2}{3}, but {4}.",
60-
this.ActionName,
61-
this.Controller.GetName(),
62-
name,
63-
expectedValue,
64-
actualValue));
65-
}
6635
}
6736
}

src/MyTested.AspNetCore.Mvc.Session/ShouldHaveTestBuilderSessionExtensions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Builders.Contracts.And;
88
using Builders.Contracts.Data;
99
using Builders.Data;
10+
using Utilities.Validators;
1011

1112
/// <summary>
1213
/// Contains <see cref="Microsoft.AspNetCore.Http.ISession"/> extension methods for <see cref="IShouldHaveTestBuilder{TActionResult}"/>.
@@ -25,7 +26,9 @@ public static IAndTestBuilder<TActionResult> NoSession<TActionResult>(this IShou
2526

2627
if (actualShouldHaveTestBuilder.TestContext.Session.Keys.Any())
2728
{
28-
actualShouldHaveTestBuilder.ThrowNewDataProviderAssertionExceptionWithNoEntries(SessionTestBuilder.SessionName);
29+
DataProviderValidator.ThrowNewDataProviderAssertionExceptionWithNoEntries(
30+
actualShouldHaveTestBuilder.TestContext,
31+
SessionTestBuilder.SessionName);
2932
}
3033

3134
return actualShouldHaveTestBuilder.NewAndTestBuilder();
@@ -45,7 +48,8 @@ public static IAndTestBuilder<TActionResult> Session<TActionResult>(
4548
{
4649
var actualShouldHaveTestBuilder = (ShouldHaveTestBuilder<TActionResult>)shouldHaveTestBuilder;
4750

48-
actualShouldHaveTestBuilder.ValidateDataProviderNumberOfEntries(
51+
DataProviderValidator.ValidateDataProviderNumberOfEntries(
52+
actualShouldHaveTestBuilder.TestContext,
4953
SessionTestBuilder.SessionName,
5054
withNumberOfEntries,
5155
actualShouldHaveTestBuilder.TestContext.Session.Keys.Count());

src/MyTested.AspNetCore.Mvc.ViewFeatures/ShouldHaveTestBuilderTempDataExtensions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Builders.Contracts.Data;
88
using Builders.Data;
99
using Internal.TestContexts;
10+
using Utilities.Validators;
1011

1112
/// <summary>
1213
/// Contains <see cref="Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary"/> extension methods for <see cref="IShouldHaveTestBuilder{TActionResult}"/>.
@@ -25,7 +26,9 @@ public static IAndTestBuilder<TActionResult> NoTempData<TActionResult>(this ISho
2526

2627
if (actualShouldHaveTestBuilder.TestContext.GetTempData().Count > 0)
2728
{
28-
actualShouldHaveTestBuilder.ThrowNewDataProviderAssertionExceptionWithNoEntries(TempDataTestBuilder.TempDataName);
29+
DataProviderValidator.ThrowNewDataProviderAssertionExceptionWithNoEntries(
30+
actualShouldHaveTestBuilder.TestContext,
31+
TempDataTestBuilder.TempDataName);
2932
}
3033

3134
return actualShouldHaveTestBuilder.NewAndTestBuilder();
@@ -44,7 +47,8 @@ public static IAndTestBuilder<TActionResult> TempData<TActionResult>(
4447
{
4548
var actualShouldHaveTestBuilder = (ShouldHaveTestBuilder<TActionResult>)shouldHaveTestBuilder;
4649

47-
actualShouldHaveTestBuilder.ValidateDataProviderNumberOfEntries(
50+
DataProviderValidator.ValidateDataProviderNumberOfEntries(
51+
actualShouldHaveTestBuilder.TestContext,
4852
TempDataTestBuilder.TempDataName,
4953
withNumberOfEntries,
5054
actualShouldHaveTestBuilder.TestContext.GetTempData().Count);

src/MyTested.AspNetCore.Mvc.ViewFeatures/ShouldHaveTestBuilderViewBagExtensions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Builders.Contracts.Data;
88
using Builders.Data;
99
using Internal.TestContexts;
10+
using Utilities.Validators;
1011

1112
/// <summary>
1213
/// Contains <see cref="Microsoft.AspNetCore.Mvc.Controller.ViewBag"/> extension methods for <see cref="IShouldHaveTestBuilder{TActionResult}"/>.
@@ -25,7 +26,9 @@ public static IAndTestBuilder<TActionResult> NoViewBag<TActionResult>(this IShou
2526

2627
if (actualShouldHaveTestBuilder.TestContext.GetViewData().Count > 0)
2728
{
28-
actualShouldHaveTestBuilder.ThrowNewDataProviderAssertionExceptionWithNoEntries(ViewBagTestBuilder.ViewBagName);
29+
DataProviderValidator.ThrowNewDataProviderAssertionExceptionWithNoEntries(
30+
actualShouldHaveTestBuilder.TestContext,
31+
ViewBagTestBuilder.ViewBagName);
2932
}
3033

3134
return actualShouldHaveTestBuilder.NewAndTestBuilder();
@@ -45,7 +48,8 @@ public static IAndTestBuilder<TActionResult> ViewBag<TActionResult>(
4548
{
4649
var actualShouldHaveTestBuilder = (ShouldHaveTestBuilder<TActionResult>)shouldHaveTestBuilder;
4750

48-
actualShouldHaveTestBuilder.ValidateDataProviderNumberOfEntries(
51+
DataProviderValidator.ValidateDataProviderNumberOfEntries(
52+
actualShouldHaveTestBuilder.TestContext,
4953
ViewBagTestBuilder.ViewBagName,
5054
withNumberOfEntries,
5155
actualShouldHaveTestBuilder.TestContext.GetViewData().Count);

src/MyTested.AspNetCore.Mvc.ViewFeatures/ShouldHaveTestBuilderViewDataExtensions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Builders.Contracts.Data;
88
using Builders.Data;
99
using Internal.TestContexts;
10+
using Utilities.Validators;
1011

1112
/// <summary>
1213
/// Contains <see cref="Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary"/> extension methods for <see cref="IShouldHaveTestBuilder{TActionResult}"/>.
@@ -25,7 +26,9 @@ public static IAndTestBuilder<TActionResult> NoViewData<TActionResult>(this ISho
2526

2627
if (actualShouldHaveTestBuilder.TestContext.GetViewData().Count > 0)
2728
{
28-
actualShouldHaveTestBuilder.ThrowNewDataProviderAssertionExceptionWithNoEntries(ViewDataTestBuilder.ViewDataName);
29+
DataProviderValidator.ThrowNewDataProviderAssertionExceptionWithNoEntries(
30+
actualShouldHaveTestBuilder.TestContext,
31+
ViewDataTestBuilder.ViewDataName);
2932
}
3033

3134
return actualShouldHaveTestBuilder.NewAndTestBuilder();
@@ -45,7 +48,8 @@ public static IAndTestBuilder<TActionResult> ViewData<TActionResult>(
4548
{
4649
var actualShouldHaveTestBuilder = (ShouldHaveTestBuilder<TActionResult>)shouldHaveTestBuilder;
4750

48-
actualShouldHaveTestBuilder.ValidateDataProviderNumberOfEntries(
51+
DataProviderValidator.ValidateDataProviderNumberOfEntries(
52+
actualShouldHaveTestBuilder.TestContext,
4953
ViewDataTestBuilder.ViewDataName,
5054
withNumberOfEntries,
5155
actualShouldHaveTestBuilder.TestContext.GetViewData().Count);

0 commit comments

Comments
 (0)