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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Linq;
using Moq;
using Xunit;
using Assert = Microsoft.TestCommon.AssertEx;
namespace System.Web.Mvc.Test
{
public class ControllerDescriptorTest
{
[Fact]
public void ControllerNamePropertyReturnsControllerTypeName()
{
// Arrange
ControllerDescriptor cd = GetControllerDescriptor(typeof(object));
// Act
string name = cd.ControllerName;
// Assert
Assert.Equal("Object", name);
}
[Fact]
public void ControllerNamePropertyReturnsControllerTypeNameWithoutControllerSuffix()
{
// Arrange
Mock<Type> mockType = new Mock<Type>();
mockType.Setup(t => t.Name).Returns("somecontroller");
ControllerDescriptor cd = GetControllerDescriptor(mockType.Object);
// Act
string name = cd.ControllerName;
// Assert
Assert.Equal("some", name);
}
[Fact]
public void GetCustomAttributesReturnsEmptyArrayOfAttributeType()
{
// Arrange
ControllerDescriptor cd = GetControllerDescriptor();
// Act
ObsoleteAttribute[] attrs = (ObsoleteAttribute[])cd.GetCustomAttributes(typeof(ObsoleteAttribute), true);
// Assert
Assert.Empty(attrs);
}
[Fact]
public void GetCustomAttributesThrowsIfAttributeTypeIsNull()
{
// Arrange
ControllerDescriptor cd = GetControllerDescriptor();
// Act & assert
Assert.ThrowsArgumentNull(
delegate { cd.GetCustomAttributes(null /* attributeType */, true); }, "attributeType");
}
[Fact]
public void GetCustomAttributesWithoutAttributeTypeCallsGetCustomAttributesWithAttributeType()
{
// Arrange
object[] expected = new object[0];
Mock<ControllerDescriptor> mockDescriptor = new Mock<ControllerDescriptor>() { CallBase = true };
mockDescriptor.Setup(d => d.GetCustomAttributes(typeof(object), true)).Returns(expected);
ControllerDescriptor cd = mockDescriptor.Object;
// Act
object[] returned = cd.GetCustomAttributes(true /* inherit */);
// Assert
Assert.Same(expected, returned);
}
[Fact]
public void GetFilterAttributes_CallsGetCustomAttributes()
{
// Arrange
var mockDescriptor = new Mock<ControllerDescriptor>() { CallBase = true };
mockDescriptor.Setup(d => d.GetCustomAttributes(typeof(FilterAttribute), true)).Returns(new object[] { new Mock<FilterAttribute>().Object }).Verifiable();
// Act
var result = mockDescriptor.Object.GetFilterAttributes(true).ToList();
// Assert
mockDescriptor.Verify();
Assert.Single(result);
}
[Fact]
public void IsDefinedReturnsFalse()
{
// Arrange
ControllerDescriptor cd = GetControllerDescriptor();
// Act
bool isDefined = cd.IsDefined(typeof(object), true);
// Assert
Assert.False(isDefined);
}
[Fact]
public void IsDefinedThrowsIfAttributeTypeIsNull()
{
// Arrange
ControllerDescriptor cd = GetControllerDescriptor();
// Act & assert
Assert.ThrowsArgumentNull(
delegate { cd.IsDefined(null /* attributeType */, true); }, "attributeType");
}
private static ControllerDescriptor GetControllerDescriptor()
{
return GetControllerDescriptor(null);
}
private static ControllerDescriptor GetControllerDescriptor(Type controllerType)
{
Mock<ControllerDescriptor> mockDescriptor = new Mock<ControllerDescriptor>() { CallBase = true };
mockDescriptor.Setup(d => d.ControllerType).Returns(controllerType);
return mockDescriptor.Object;
}
}
}
|