aspnetcore/test/Microsoft.AspNet.Mvc.Core.Test/ModelBinding
Doug Bunting 48f09d0e8d Do not trounce existing property values that are not bound in `TryUpdateModel` scenarios
- #2836

Part 1: Use existing property values when recursing in `MutableObjectModelBinder`
- remove `ComplexModelDTO` because that indirection made fixing this issue more difficult and doesn't add value
  - started with an old closed PR (#2241) which did some of this work
- correct `MutableObjectModelBinderTest` tests that exercised behaviour that can't occur
  - the old `dto.Results` dictionary was never incomplete; nor could it contain `null` values

Part 2: Change `MutableObjectModelBinder` to pass complex property values into binding system
- model binding no longer trounces nodes in the model tree that aren't bound
- create model instances less often in `TryUpdateModel` scenarios
  - refactor `EnsureModel()` to `GetModel()` and use appropriately
- reorder logic in `SetProperty()` and `AddToProperty()` to avoid copying to / from the same collection
  - also cleans up some code duplication

nits:
- clean up `MutableObjectModelBinderTest`
  - fix odd line wrappings and indentation
  - use `nameof()` more
  - use `string.Empty` more
  - simplify a couple of `Returns()` expressions
- make assertions in `TryUpdateModelIntegrationTest` more readable
  - no need to work through `ModelStateDictionary.Keys`
  - also use `Length` instead of `Count()`; test code but we don't need Linq at all in that test class
2015-08-18 09:57:41 -07:00
..
Metadata
Validation
ArrayModelBinderTest.cs
BinderTypeBasedModelBinderModelBinderTest.cs
BindingSourceModelBinderTest.cs
BindingSourceValueProviderTest.cs
BodyModelBinderTests.cs
ByteArrayModelBinderTests.cs
CancellationTokenModelBinderTests.cs
CollectionModelBinderTest.cs
CompositeModelBinderTest.cs
CompositeValueProviderTest.cs
DictionaryBasedValueProviderTests.cs
DictionaryModelBinderTest.cs
ElementalValueProviderTests.cs
EnumerableValueProviderTest.cs
FormCollectionModelBinderTest.cs
FormFileModelBinderTest.cs
FormValueProviderFactoryTest.cs
HeaderModelBinderTests.cs
JQueryFormValueProviderFactoryTest.cs
JQueryFormValueProviderTest.cs
KeyValuePairModelBinderTest.cs
ModelBindingContextTest.cs
ModelBindingResultTest.cs
MutableObjectModelBinderTest.cs
QueryStringValueProviderFactoryTest.cs
ReadableStringCollectionValueProviderTest.cs
SimpleHttpValueProvider.cs
TestValueProvider.cs
TypeConverterModelBinderTest.cs
TypeMatchModelBinderTest.cs