Skip to content

Commit 60dfe9a

Browse files
committed
try set value inner for enumerable type bug fix, null check
1 parent 58b9f42 commit 60dfe9a

File tree

8 files changed

+59
-3
lines changed

8 files changed

+59
-3
lines changed

src/NetCoreStack.Proxy/DefaultModelContentResolver.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ private void TrySetValueInner(string key, ProxyModelMetadata modelMetadata, Mode
118118
var index = 0;
119119
foreach (var v in values)
120120
{
121+
if (v == null)
122+
{
123+
continue;
124+
}
125+
121126
var propKey = $"{key}[{index}]";
122127
var propValue = propertyInfo?.GetValue(v);
123128
ResolveInternal(elementModelMetadata, result, propValue, isTopLevelObject:false, prefix: propKey);

src/NetCoreStack.Proxy/NetCoreStack.Proxy.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PackageReference Include="Microsoft.AspNetCore.Routing" Version="2.0.1" />
1212
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0" />
1313
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.0" />
14-
<PackageReference Include="NetCoreStack.Contracts" Version="2.0.5" />
14+
<PackageReference Include="NetCoreStack.Contracts" Version="2.0.6" />
1515
<PackageReference Include="NetCoreStack.DispatchProxyAsync" Version="2.0.2" />
1616
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
1717
<PackageReference Include="System.Xml.XmlSerializer" Version="4.3.0" />

test/NetCoreStack.Proxy.Test.Contracts/NetCoreStack.Proxy.Test.Contracts.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<ItemGroup>
88
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.2" />
9-
<PackageReference Include="NetCoreStack.Contracts" Version="2.0.5" />
9+
<PackageReference Include="NetCoreStack.Contracts" Version="2.0.6" />
1010
</ItemGroup>
1111

1212
</Project>

test/NetCoreStack.Proxy.Test.Contracts/TypesModel.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Microsoft.AspNetCore.Http;
2+
using NetCoreStack.Contracts;
23
using System;
34
using System.Collections;
45
using System.Collections.Generic;
@@ -66,6 +67,12 @@ public class Foo
6667
public IEnumerable<int> IEnumerableInt { get; set; }
6768
}
6869

70+
public class FooColumns
71+
{
72+
public string String { get; set; }
73+
public List<Column> IEnumerableColumns { get; set; }
74+
}
75+
6976
public class Bar
7077
{
7178
public string String { get; set; }

test/NetCoreStack.Proxy.Tests/ModelTypeTests.cs

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
using NetCoreStack.Proxy.Internal;
1+
using NetCoreStack.Contracts;
2+
using NetCoreStack.Proxy.Internal;
23
using NetCoreStack.Proxy.Test.Contracts;
4+
using Newtonsoft.Json;
35
using System;
46
using System.Collections.Generic;
57
using System.Globalization;
8+
using System.IO;
69
using System.Linq;
710
using Xunit;
811

@@ -167,6 +170,25 @@ public void ProxyModelMetadataInfoForFooModel()
167170
Assert.Equal(6, contentResult.Dictionary.Count);
168171
}
169172

173+
[Fact]
174+
public void ProxyModelMetadataInfoForFooModelNull()
175+
{
176+
Foo model = new Foo
177+
{
178+
String = "Foo string value!",
179+
IEnumerableInt = null
180+
};
181+
182+
var contentResult = GetResolvedContentResult(model);
183+
184+
var expect = new Dictionary<string, string>()
185+
{
186+
["String"] = "Foo string value!"
187+
};
188+
189+
Assert.Equal(expect, contentResult.Dictionary);
190+
}
191+
170192
[Fact]
171193
public void ProxyModelMetadataInfoForBarModel()
172194
{
@@ -414,6 +436,24 @@ public void ProxyModelMetadataInfoForFileModel()
414436
Assert.Equal("some_text_file.txt", files["InnerFileModel.Files[0]"].FileName);
415437
}
416438

439+
[Fact]
440+
public void FooColumnEnumerableNullItemTest()
441+
{
442+
var objStr = File.ReadAllText("ObjFile.txt");
443+
CollectionRequest collection = JsonConvert.DeserializeObject<CollectionRequest>(objStr);
444+
445+
var fooColums = new FooColumns {
446+
IEnumerableColumns = new List<Column>()
447+
};
448+
foreach (var item in collection.Columns)
449+
{
450+
fooColums.IEnumerableColumns.Add(item);
451+
}
452+
453+
var contentResult = GetResolvedContentResult(collection);
454+
Assert.True(true);
455+
}
456+
417457
[Fact]
418458
public void XmlSerializationTest()
419459
{

test/NetCoreStack.Proxy.Tests/NetCoreStack.Proxy.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
<None Update="appsettings.json">
2727
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
2828
</None>
29+
<None Update="ObjFile.txt">
30+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
31+
</None>
2932
</ItemGroup>
3033

3134
</Project>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"Metadata":"NetCoreStack.Domain.Contracts.AlbumKnockoutValidatorViewModel","Draw":1,"Length":10,"Start":0,"Text":null,"Search":null,"Filters":null,"Order":null,"Columns":[{"Data":"id","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"genreId","Meta":"Int64?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"artist","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"title","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"title","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"title","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"title","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"title","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"title","Meta":"String?","Composer":"","Searchable":true,"Orderable":true,"Search":null},{"Data":"price","Meta":"Decimal?","Composer":"","Searchable":true,"Orderable":true,"Search":null},null]}
0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)