PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/mvc3/test/MvcFuturesTest/Mvc/ModelBinding/Test/ExtensibleModelBindingContextTest.cs

https://github.com/jeanlyn/ASP.NET-Mvc-3
C# | 126 lines | 84 code | 22 blank | 20 comment | 0 complexity | 67ce470aa04b5ae1ad1d2372f50b4a1a MD5 | raw file
  1. namespace Microsoft.Web.Mvc.ModelBinding.Test {
  2. using System;
  3. using System.Web.Mvc;
  4. using System.Web.TestUtil;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. using Microsoft.Web.UnitTestUtil;
  7. using ModelBinderProviderCollection = Microsoft.Web.Mvc.ModelBinding.ModelBinderProviderCollection;
  8. using ModelBinderProviders = Microsoft.Web.Mvc.ModelBinding.ModelBinderProviders;
  9. [TestClass]
  10. public class ExtensibleModelBindingContextTest {
  11. [TestMethod]
  12. public void CopyConstructor() {
  13. // Arrange
  14. ExtensibleModelBindingContext originalBindingContext = new ExtensibleModelBindingContext() {
  15. ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(object)),
  16. ModelName = "theName",
  17. ModelState = new ModelStateDictionary(),
  18. ValueProvider = new SimpleValueProvider()
  19. };
  20. // Act
  21. ExtensibleModelBindingContext newBindingContext = new ExtensibleModelBindingContext(originalBindingContext);
  22. // Assert
  23. Assert.IsNull(newBindingContext.ModelMetadata, "Property 'ModelMetadata' should not have been propagated.");
  24. Assert.AreEqual("", newBindingContext.ModelName, "Property 'ModelName' should not have been propagated.");
  25. Assert.AreEqual(originalBindingContext.ModelState, newBindingContext.ModelState, "Property 'ModelState' should have been propagated.");
  26. Assert.AreEqual(originalBindingContext.ValueProvider, newBindingContext.ValueProvider, "Property 'ValueProvider' should have been propagated.");
  27. }
  28. [TestMethod]
  29. public void ModelBinderProvidersProperty() {
  30. // Arrange
  31. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext();
  32. // Act & assert
  33. MemberHelper.TestPropertyWithDefaultInstance(bindingContext, "ModelBinderProviders", new ModelBinderProviderCollection(), ModelBinderProviders.Providers);
  34. }
  35. [TestMethod]
  36. public void ModelProperty() {
  37. // Arrange
  38. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext() {
  39. ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(int))
  40. };
  41. // Act & assert
  42. MemberHelper.TestPropertyValue(bindingContext, "Model", 42);
  43. }
  44. [TestMethod]
  45. public void ModelProperty_ThrowsIfModelMetadataDoesNotExist() {
  46. // Arrange
  47. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext();
  48. // Act & assert
  49. ExceptionHelper.ExpectInvalidOperationException(
  50. delegate {
  51. bindingContext.Model = null;
  52. },
  53. "The ModelMetadata property must be set before accessing this property.");
  54. }
  55. [TestMethod]
  56. public void ModelNameProperty() {
  57. // Arrange
  58. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext();
  59. // Act & assert
  60. MemberHelper.TestStringProperty(bindingContext, "ModelName", String.Empty);
  61. }
  62. [TestMethod]
  63. public void ModelStateProperty() {
  64. // Arrange
  65. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext();
  66. ModelStateDictionary modelState = new ModelStateDictionary();
  67. // Act & assert
  68. MemberHelper.TestPropertyWithDefaultInstance(bindingContext, "ModelState", modelState);
  69. }
  70. [TestMethod]
  71. public void ModelAndModelTypeAreFedFromModelMetadata() {
  72. // Act
  73. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext {
  74. ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => 42, typeof(int))
  75. };
  76. // Assert
  77. Assert.AreEqual(42, bindingContext.Model);
  78. Assert.AreEqual(typeof(int), bindingContext.ModelType);
  79. }
  80. [TestMethod]
  81. public void ValidationNodeProperty() {
  82. // Act
  83. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext {
  84. ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => 42, typeof(int))
  85. };
  86. // Act & assert
  87. MemberHelper.TestPropertyWithDefaultInstance(bindingContext, "ValidationNode", new ModelValidationNode(bindingContext.ModelMetadata, "someName"));
  88. }
  89. [TestMethod]
  90. public void ValidationNodeProperty_DefaultValues() {
  91. // Act
  92. ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext {
  93. ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => 42, typeof(int)),
  94. ModelName = "theInt"
  95. };
  96. // Act
  97. ModelValidationNode validationNode = bindingContext.ValidationNode;
  98. // Assert
  99. Assert.IsNotNull(validationNode);
  100. Assert.AreEqual(bindingContext.ModelMetadata, validationNode.ModelMetadata);
  101. Assert.AreEqual(bindingContext.ModelName, validationNode.ModelStateKey);
  102. }
  103. }
  104. }