Skip to content

Commit 4325c29

Browse files
committed
MyTested.AspNetCore.Mvc.Caching now depends only on MyTested.AspNetCore.Mvc.Abstractions (#125)
1 parent 8b46298 commit 4325c29

18 files changed

+136
-302
lines changed

samples/ApplicationParts/ApplicationParts.Test/project.lock.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4216,7 +4216,7 @@
42164216
"framework": ".NETStandard,Version=v1.6",
42174217
"dependencies": {
42184218
"Microsoft.Extensions.Caching.Memory": "1.0.0",
4219-
"MyTested.AspNetCore.Mvc.Core": "1.0.0"
4219+
"MyTested.AspNetCore.Mvc.Abstractions": "1.0.0"
42204220
},
42214221
"compile": {
42224222
"netstandard1.6/MyTested.AspNetCore.Mvc.Caching.dll": {}

samples/MusicStore/MusicStore.Test/project.lock.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4359,7 +4359,7 @@
43594359
"framework": ".NETStandard,Version=v1.6",
43604360
"dependencies": {
43614361
"Microsoft.Extensions.Caching.Memory": "1.0.0",
4362-
"MyTested.AspNetCore.Mvc.Core": "1.0.0"
4362+
"MyTested.AspNetCore.Mvc.Abstractions": "1.0.0"
43634363
},
43644364
"compile": {
43654365
"netstandard1.6/MyTested.AspNetCore.Mvc.Caching.dll": {}
@@ -6709,7 +6709,7 @@
67096709
"framework": ".NETFramework,Version=v4.5.1",
67106710
"dependencies": {
67116711
"Microsoft.Extensions.Caching.Memory": "1.0.0",
6712-
"MyTested.AspNetCore.Mvc.Core": "1.0.0"
6712+
"MyTested.AspNetCore.Mvc.Abstractions": "1.0.0"
67136713
},
67146714
"compile": {
67156715
"net451/MyTested.AspNetCore.Mvc.Caching.dll": {}

src/MyTested.AspNetCore.Mvc.Abstractions/Builders/Base/BaseTestBuilderWithComponentBuilder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
public abstract class BaseTestBuilderWithComponentBuilder<TBuilder> : BaseTestBuilder,
77
IBaseTestBuilderWithComponentBuilder<TBuilder>
8+
where TBuilder : IBaseTestBuilder
89
{
910
private TBuilder builder;
1011

src/MyTested.AspNetCore.Mvc.Abstractions/Builders/Base/BaseTestBuilderWithComponentShouldHaveTestBuilder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
public abstract class BaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder> : BaseTestBuilderWithComponent,
77
IBaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder>
8+
where TBuilder : IBaseTestBuilder
89
{
910
private TBuilder builder;
1011

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace MyTested.AspNetCore.Mvc.Builders.Contracts.Base
22
{
33
public interface IBaseTestBuilderWithComponentBuilder<TBuilder> : IBaseTestBuilder
4+
where TBuilder : IBaseTestBuilder
45
{
56
}
67
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace MyTested.AspNetCore.Mvc.Builders.Contracts.Base
22
{
33
public interface IBaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder> : IBaseTestBuilderWithComponent
4+
where TBuilder : IBaseTestBuilder
45
{
56
}
67
}

src/MyTested.AspNetCore.Mvc.Caching/Builders/Data/MemoryCacheEntryTestBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
/// </summary>
1616
public class MemoryCacheEntryTestBuilder : MemoryCacheEntryBuilder, IAndMemoryCacheEntryTestBuilder
1717
{
18-
private readonly ControllerTestContext testContext;
18+
private readonly ComponentTestContext testContext;
1919
private readonly ICollection<Action<ICacheEntry, ICacheEntry>> validations;
2020

2121
/// <summary>
2222
/// Initializes a new instance of the <see cref="MemoryCacheEntryTestBuilder"/> class.
2323
/// </summary>
24-
/// <param name="testContext"><see cref="ControllerTestContext"/> containing data about the currently executed assertion chain.</param>
25-
public MemoryCacheEntryTestBuilder(ControllerTestContext testContext)
24+
/// <param name="testContext"><see cref="ComponentTestContext"/> containing data about the currently executed assertion chain.</param>
25+
public MemoryCacheEntryTestBuilder(ComponentTestContext testContext)
2626
{
2727
CommonValidator.CheckForNullReference(testContext, nameof(testContext));
2828

src/MyTested.AspNetCore.Mvc.Caching/Builders/Data/MemoryCacheTestBuilder.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
/// <summary>
1717
/// Used for testing <see cref="IMemoryCache"/>.
1818
/// </summary>
19-
public class MemoryCacheTestBuilder : BaseTestBuilderWithInvokedAction, IAndMemoryCacheTestBuilder
19+
public class MemoryCacheTestBuilder : BaseTestBuilderWithComponent, IAndMemoryCacheTestBuilder
2020
{
2121
internal const string MemoryCacheName = "memory cache";
2222

@@ -28,8 +28,8 @@ public class MemoryCacheTestBuilder : BaseTestBuilderWithInvokedAction, IAndMemo
2828
/// <summary>
2929
/// Initializes a new instance of the <see cref="MemoryCacheTestBuilder"/> class.
3030
/// </summary>
31-
/// <param name="testContext"><see cref="ControllerTestContext"/> containing data about the currently executed assertion chain.</param>
32-
public MemoryCacheTestBuilder(ControllerTestContext testContext)
31+
/// <param name="testContext"><see cref="ComponentTestContext"/> containing data about the currently executed assertion chain.</param>
32+
public MemoryCacheTestBuilder(ComponentTestContext testContext)
3333
: base(testContext)
3434
{
3535
this.memoryCache = this.GetMemoryCache();
@@ -217,8 +217,8 @@ private void ThrowNewDataProviderAssertionException(string propertyName, string
217217
{
218218
throw new DataProviderAssertionException(string.Format(
219219
"When calling {0} action in {1} expected {2} {3}, but {4}.",
220-
this.ActionName,
221-
this.Controller.GetName(),
220+
this.TestContext.MethodName,
221+
this.TestContext.Component.GetName(),
222222
propertyName,
223223
expectedValue,
224224
actualValue));
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
namespace MyTested.AspNetCore.Mvc
2+
{
3+
using System;
4+
using Builders.Contracts.Base;
5+
using Builders.Contracts.Data;
6+
using Builders.Data;
7+
using Builders.Base;
8+
9+
/// <summary>
10+
/// Contains <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> extension methods for <see cref="IBaseTestBuilderWithComponentBuilder{TBuilder}"/>.
11+
/// </summary>
12+
public static class ComponentBuilderCachingExtensions
13+
{
14+
/// <summary>
15+
/// Sets initial values to the <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> service.
16+
/// </summary>
17+
/// <typeparam name="TBuilder">Class representing ASP.NET Core MVC test builder.</typeparam>
18+
/// <param name="builder">Instance of <see cref="IBaseTestBuilderWithComponentBuilder{TBuilder}"/> type.</param>
19+
/// <param name="memoryCacheBuilder">Action setting the <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> values by using <see cref="IMemoryCacheBuilder"/>.</param>
20+
/// <returns>The same component builder.</returns>
21+
public static TBuilder WithMemoryCache<TBuilder>(
22+
this IBaseTestBuilderWithComponentBuilder<TBuilder> builder,
23+
Action<IMemoryCacheBuilder> memoryCacheBuilder)
24+
where TBuilder : IBaseTestBuilder
25+
{
26+
var actualBuilder = (BaseTestBuilderWithComponentBuilder<TBuilder>)builder;
27+
28+
memoryCacheBuilder(new MemoryCacheBuilder(actualBuilder.TestContext.HttpContext.RequestServices));
29+
30+
return actualBuilder.Builder;
31+
}
32+
}
33+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
namespace MyTested.AspNetCore.Mvc
2+
{
3+
using System;
4+
using Builders.Contracts.Base;
5+
using Builders.Contracts.Data;
6+
using Builders.Data;
7+
using Utilities.Validators;
8+
using Builders.Base;
9+
10+
/// <summary>
11+
/// Contains <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> extension methods for <see cref="IBaseTestBuilderWithComponentShouldHaveTestBuilder{TBuilder}"/>.
12+
/// </summary>
13+
public static class ComponentShouldHaveTestBuilderCachingExtensions
14+
{
15+
/// <summary>
16+
/// Tests whether the component does not set any <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> entries.
17+
/// </summary>
18+
/// <typeparam name="TBuilder">Class representing ASP.NET Core MVC test builder.</typeparam>
19+
/// <param name="builder">Instance of <see cref="IBaseTestBuilderWithComponentShouldHaveTestBuilder{TBuilder}"/> type.</param>
20+
/// <returns>The same component should have test builder.</returns>
21+
public static TBuilder NoMemoryCache<TBuilder>(this IBaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder> builder)
22+
where TBuilder : IBaseTestBuilder
23+
{
24+
var actualBuilder = (BaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder>)builder;
25+
26+
if (actualBuilder.TestContext.GetMockedMemoryCache().Count > 0)
27+
{
28+
DataProviderValidator.ThrowNewDataProviderAssertionExceptionWithNoEntries(
29+
actualBuilder.TestContext,
30+
MemoryCacheTestBuilder.MemoryCacheName);
31+
}
32+
33+
return actualBuilder.Builder;
34+
}
35+
36+
/// <summary>
37+
/// Tests whether the component sets entries in the <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/>.
38+
/// </summary>
39+
/// <typeparam name="TBuilder">Class representing ASP.NET Core MVC test builder.</typeparam>
40+
/// <param name="builder">Instance of <see cref="IBaseTestBuilderWithComponentShouldHaveTestBuilder{TBuilder}"/> type.</param>
41+
/// <param name="withNumberOfEntries">Expected number of <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> entries.
42+
/// If default null is provided, the test builder checks only if any entries are found.</param>
43+
/// <returns>The same component should have test builder.</returns>
44+
public static TBuilder MemoryCache<TBuilder>(
45+
this IBaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder> builder,
46+
int? withNumberOfEntries = null)
47+
where TBuilder : IBaseTestBuilder
48+
{
49+
var actualBuilder = (BaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder>)builder;
50+
51+
DataProviderValidator.ValidateDataProviderNumberOfEntries(
52+
actualBuilder.TestContext,
53+
MemoryCacheTestBuilder.MemoryCacheName,
54+
withNumberOfEntries,
55+
actualBuilder.TestContext.GetMockedMemoryCache().Count);
56+
57+
return actualBuilder.Builder;
58+
}
59+
60+
/// <summary>
61+
/// Tests whether the component sets specific <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> entries.
62+
/// </summary>
63+
/// <typeparam name="TBuilder">Class representing ASP.NET Core MVC test builder.</typeparam>
64+
/// <param name="builder">Instance of <see cref="IBaseTestBuilderWithComponentShouldHaveTestBuilder{TBuilder}"/> type.</param>
65+
/// <param name="memoryCacheTestBuilder">Builder for testing specific <see cref="Microsoft.Extensions.Caching.Memory.IMemoryCache"/> entries.</param>
66+
/// <returns>The same component should have test builder.</returns>
67+
public static TBuilder MemoryCache<TBuilder>(
68+
this IBaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder> builder,
69+
Action<IMemoryCacheTestBuilder> memoryCacheTestBuilder)
70+
where TBuilder : IBaseTestBuilder
71+
{
72+
var actualBuilder = (BaseTestBuilderWithComponentShouldHaveTestBuilder<TBuilder>)builder;
73+
74+
memoryCacheTestBuilder(new MemoryCacheTestBuilder(actualBuilder.TestContext));
75+
76+
return actualBuilder.Builder;
77+
}
78+
}
79+
}

0 commit comments

Comments
 (0)