Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

146 lines
5.0 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Linq;
using Moq;
using Xunit;
using Assert = Microsoft.TestCommon.AssertEx;
namespace System.Web.Mvc.Test
{
public class ValueProviderFactoryCollectionTest
{
[Fact]
public void ListWrappingConstructor()
{
// Arrange
List<ValueProviderFactory> list = new List<ValueProviderFactory>()
{
new FormValueProviderFactory()
};
// Act
ValueProviderFactoryCollection collection = new ValueProviderFactoryCollection(list);
// Assert
Assert.Equal(list, collection.ToList());
}
[Fact]
public void ListWrappingConstructorThrowsIfListIsNull()
{
// Act & Assert
Assert.ThrowsArgumentNull(
delegate { new ValueProviderFactoryCollection(null, null); },
"list");
}
[Fact]
public void DefaultConstructor()
{
// Act
ValueProviderFactoryCollection collection = new ValueProviderFactoryCollection();
// Assert
Assert.Empty(collection);
}
[Fact]
public void AddNullValueProviderFactoryThrows()
{
// Arrange
ValueProviderFactoryCollection collection = new ValueProviderFactoryCollection();
// Act & Assert
Assert.ThrowsArgumentNull(
delegate { collection.Add(null); },
"item");
}
[Fact]
public void GetValueProvider()
{
// Arrange
ControllerContext controllerContext = new ControllerContext();
IValueProvider[] expectedValueProviders = new[]
{
new Mock<IValueProvider>().Object,
new Mock<IValueProvider>().Object
};
Mock<ValueProviderFactory> mockFactory1 = new Mock<ValueProviderFactory>();
mockFactory1.Setup(o => o.GetValueProvider(controllerContext)).Returns(expectedValueProviders[0]);
Mock<ValueProviderFactory> mockFactory2 = new Mock<ValueProviderFactory>();
mockFactory2.Setup(o => o.GetValueProvider(controllerContext)).Returns(expectedValueProviders[1]);
ValueProviderFactoryCollection factories = new ValueProviderFactoryCollection()
{
mockFactory1.Object,
mockFactory2.Object
};
// Act
ValueProviderCollection valueProviders = (ValueProviderCollection)factories.GetValueProvider(controllerContext);
// Assert
Assert.Equal(expectedValueProviders, valueProviders.ToArray());
}
[Fact]
public void GetValueProviderDelegatesToResolver()
{
//Arrange
ControllerContext controllerContext = new ControllerContext();
IValueProvider[] expectedValueProviders = new[]
{
new Mock<IValueProvider>().Object,
new Mock<IValueProvider>().Object
};
Mock<ValueProviderFactory> mockFactory1 = new Mock<ValueProviderFactory>();
mockFactory1.Setup(o => o.GetValueProvider(controllerContext)).Returns(expectedValueProviders[0]);
Mock<ValueProviderFactory> mockFactory2 = new Mock<ValueProviderFactory>();
mockFactory2.Setup(o => o.GetValueProvider(controllerContext)).Returns(expectedValueProviders[1]);
Resolver<IEnumerable<ValueProviderFactory>> resolver = new Resolver<IEnumerable<ValueProviderFactory>> { Current = new[] { mockFactory1.Object, mockFactory2.Object } };
ValueProviderFactoryCollection factories = new ValueProviderFactoryCollection(resolver);
// Act
ValueProviderCollection valueProviders = (ValueProviderCollection)factories.GetValueProvider(controllerContext);
// Assert
Assert.Equal(expectedValueProviders, valueProviders.ToArray());
}
[Fact]
public void SetItem()
{
// Arrange
ValueProviderFactoryCollection collection = new ValueProviderFactoryCollection();
collection.Add(new Mock<ValueProviderFactory>().Object);
ValueProviderFactory newFactory = new Mock<ValueProviderFactory>().Object;
// Act
collection[0] = newFactory;
// Assert
Assert.Single(collection);
Assert.Equal(newFactory, collection[0]);
}
[Fact]
public void SetNullValueProviderFactoryThrows()
{
// Arrange
ValueProviderFactoryCollection collection = new ValueProviderFactoryCollection();
collection.Add(new Mock<ValueProviderFactory>().Object);
// Act & Assert
Assert.ThrowsArgumentNull(
delegate { collection[0] = null; },
"item");
}
}
}