Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Mvc/test/Microsoft.AspNetCore.Mvc.Core.Test/Filters/FilterCollectionTest.cs')
-rw-r--r--src/Mvc/test/Microsoft.AspNetCore.Mvc.Core.Test/Filters/FilterCollectionTest.cs166
1 files changed, 166 insertions, 0 deletions
diff --git a/src/Mvc/test/Microsoft.AspNetCore.Mvc.Core.Test/Filters/FilterCollectionTest.cs b/src/Mvc/test/Microsoft.AspNetCore.Mvc.Core.Test/Filters/FilterCollectionTest.cs
new file mode 100644
index 0000000000..971e43eebf
--- /dev/null
+++ b/src/Mvc/test/Microsoft.AspNetCore.Mvc.Core.Test/Filters/FilterCollectionTest.cs
@@ -0,0 +1,166 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using Microsoft.AspNetCore.Testing;
+using Xunit;
+
+namespace Microsoft.AspNetCore.Mvc.Filters
+{
+ public class FilterCollectionTest
+ {
+ [Fact]
+ public void Add_UsesTypeFilterAttribute()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.Add(typeof(MyFilter));
+
+ // Assert
+ var typeFilter = Assert.IsType<TypeFilterAttribute>(added);
+ Assert.Equal(typeof(MyFilter), typeFilter.ImplementationType);
+ Assert.Same(typeFilter, Assert.Single(collection));
+ }
+
+ [Fact]
+ public void GenericAdd_UsesTypeFilterAttribute()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.Add<MyFilter>();
+
+ // Assert
+ var typeFilter = Assert.IsType<TypeFilterAttribute>(added);
+ Assert.Equal(typeof(MyFilter), typeFilter.ImplementationType);
+ Assert.Same(typeFilter, Assert.Single(collection));
+ }
+
+ [Fact]
+ public void Add_WithOrder_SetsOrder()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.Add(typeof(MyFilter), 17);
+
+ // Assert
+ Assert.Equal(17, Assert.IsAssignableFrom<IOrderedFilter>(added).Order);
+ }
+
+ [Fact]
+ public void GenericAdd_WithOrder_SetsOrder()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.Add<MyFilter>(17);
+
+ // Assert
+ Assert.Equal(17, Assert.IsAssignableFrom<IOrderedFilter>(added).Order);
+ }
+
+ [Fact]
+ public void Add_ThrowsOnNonIFilter()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ var expectedMessage = $"The type '{typeof(NonFilter).FullName}' must derive from " + $"'{typeof(IFilterMetadata).FullName}'.";
+
+ // Act & Assert
+ ExceptionAssert.ThrowsArgument(
+ () => collection.Add(typeof(NonFilter)),
+ "filterType",
+ expectedMessage);
+ }
+
+ [Fact]
+ public void AddService_UsesServiceFilterAttribute()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.AddService(typeof(MyFilter));
+
+ // Assert
+ var serviceFilter = Assert.IsType<ServiceFilterAttribute>(added);
+ Assert.Equal(typeof(MyFilter), serviceFilter.ServiceType);
+ Assert.Same(serviceFilter, Assert.Single(collection));
+ }
+
+ [Fact]
+ public void GenericAddService_UsesServiceFilterAttribute()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.AddService<MyFilter>();
+
+ // Assert
+ var serviceFilter = Assert.IsType<ServiceFilterAttribute>(added);
+ Assert.Equal(typeof(MyFilter), serviceFilter.ServiceType);
+ Assert.Same(serviceFilter, Assert.Single(collection));
+ }
+
+ [Fact]
+ public void AddService_SetsOrder()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.AddService(typeof(MyFilter), 17);
+
+ // Assert
+ Assert.Equal(17, Assert.IsAssignableFrom<IOrderedFilter>(added).Order);
+ }
+
+ [Fact]
+ public void GenericAddService_SetsOrder()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ // Act
+ var added = collection.AddService<MyFilter>(17);
+
+ // Assert
+ Assert.Equal(17, Assert.IsAssignableFrom<IOrderedFilter>(added).Order);
+ }
+
+ [Fact]
+ public void AddService_ThrowsOnNonIFilter()
+ {
+ // Arrange
+ var collection = new FilterCollection();
+
+ var expectedMessage = $"The type '{typeof(NonFilter).FullName}' must derive from '{typeof(IFilterMetadata).FullName}'.";
+
+ // Act & Assert
+ ExceptionAssert.ThrowsArgument(
+ () => { collection.AddService(typeof(NonFilter)); },
+ "filterType",
+ expectedMessage);
+ }
+
+ private class MyFilter : IFilterMetadata, IOrderedFilter
+ {
+ public int Order
+ {
+ get;
+ set;
+ }
+ }
+
+ private class NonFilter
+ {
+ }
+ }
+}