This repository has been archived by the owner on Jan 15, 2021. It is now read-only.
/
ActionInvokerGetFiltersShould.cs
53 lines (45 loc) · 2.03 KB
/
ActionInvokerGetFiltersShould.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Diagnostics.CodeAnalysis;
using System.Web.Mvc;
using System.Web.Mvc.Async;
using Glimpse.Core.Extensibility;
using Glimpse.Mvc.AlternateType;
using Glimpse.Test.Common;
using Moq;
using Ploeh.AutoFixture.Xunit;
using Xunit;
using Xunit.Extensions;
namespace Glimpse.Test.Mvc.AlternateType
{
[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", Justification = "Reviewed. Class is okay because it only changes the generic T parameter for the abstract class below.")]
public class ControllerActionInvokerGetFiltersShould : ActionInvokerGetFiltersShould<ControllerActionInvoker>
{
}
[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1402:FileMayOnlyContainASingleClass", Justification = "Reviewed. Class is okay because it only changes the generic T parameter for the abstract class below.")]
public class AsyncControllerActionInvokerGetFiltersShould : ActionInvokerGetFiltersShould<AsyncControllerActionInvoker>
{
}
public abstract class ActionInvokerGetFiltersShould<T> where T : class
{
[Theory, AutoMock]
public void ImplementProperMethod(ActionInvoker.GetFilters<T> sut)
{
Assert.Equal("GetFilters", sut.MethodToImplement.Name);
}
[Theory, AutoMock]
public void ProceedAndReturnWithRuntimePolicyOff(ActionInvoker.GetFilters<T> sut, IAlternateMethodContext context)
{
context.Setup(c => c.RuntimePolicyStrategy).Returns(() => RuntimePolicy.Off);
sut.NewImplementation(context);
context.Verify(c => c.Proceed());
context.Verify(c => c.ReturnValue, Times.Never());
}
[Theory, AutoMock]
public void ProxyFiltersWithRuntimePolicyOn([Frozen] IExecutionTimer timer, ActionInvoker.GetFilters<T> sut, IAlternateMethodContext context)
{
sut.NewImplementation(context);
timer.Verify(t => t.Time(It.IsAny<Action>()));
context.Verify(c => c.ReturnValue);
}
}
}