Skip to content

Commit bbc37e5

Browse files
committed
Tests completed
1 parent a2a8002 commit bbc37e5

9 files changed

Lines changed: 416 additions & 724 deletions

File tree

src/RoyalCode.SmartSelector.Demo/Details/Blogs/BlogDetails.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#nullable disable
22

3+
using RoyalCode.SmartSelector.Demo.Entities.Blogs;
4+
35
namespace RoyalCode.SmartSelector.Demo.Details.Blogs;
46

7+
[AutoSelect<Blog>]
58
public partial class BlogDetails
69
{
710
public string Id { get; set; }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using RoyalCode.SmartSelector.Demo.Entities.Blogs;
2+
using System.Linq.Expressions;
3+
4+
namespace RoyalCode.SmartSelector.Demo.Details.Blogs;
5+
6+
public partial class BlogDetails
7+
{
8+
private static Func<Blog, BlogDetails> selectBlogFunc;
9+
10+
public static Expression<Func<Blog, BlogDetails>> SelectBlogExpression { get; } = a => new BlogDetails
11+
{
12+
Id = a.Id,
13+
Title = a.Title,
14+
Content = a.Content,
15+
Author = new AuthorDetails
16+
{
17+
Name = a.Author.Name
18+
},
19+
Posts = a.Posts.Select(b => new PostDetails
20+
{
21+
Title = b.Title,
22+
Content = b.Content,
23+
Author = new AuthorDetails
24+
{
25+
Name = b.Author.Name
26+
},
27+
Comments = b.Comments.Select(c => new CommentDetails
28+
{
29+
Content = c.Content,
30+
AuthorName = c.Author.Name
31+
}).ToList()
32+
}).ToList()
33+
};
34+
35+
public static BlogDetails From(Blog blog) => (selectBlogFunc ??= SelectBlogExpression.Compile())(blog);
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using RoyalCode.SmartSelector.Demo.Entities.Blogs;
2+
3+
namespace RoyalCode.SmartSelector.Demo.Details.Blogs;
4+
5+
public static class BlogDetails_Extensions
6+
{
7+
public static IQueryable<BlogDetails> SelectBlogDetails(this IQueryable<Blog> query)
8+
{
9+
return query.Select(BlogDetails.SelectBlogExpression);
10+
}
11+
12+
public static IEnumerable<BlogDetails> SelectBlogDetails(this IEnumerable<Blog> enumerable)
13+
{
14+
return enumerable.Select(BlogDetails.From);
15+
}
16+
17+
public static BlogDetails ToBlogDetails(this Blog blog) => BlogDetails.From(blog);
18+
}

src/RoyalCode.SmartSelector.Tests/Models/Expected/Nulls.cs

Lines changed: 127 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ public partial class EnumNullsDto
116116
public static EnumNullsDto From(EnumNulls enumNulls) => (selectEnumNullsFunc ??= SelectEnumNullsExpression.Compile())(enumNulls);
117117
}
118118

119+
119120
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
120121

121122

@@ -149,4 +150,129 @@ public partial class EnumNullsTypeDto
149150
};
150151

151152
public static EnumNullsTypeDto From(EnumNulls enumNulls) => (selectEnumNullsTypeFunc ??= SelectEnumNullsTypeExpression.Compile())(enumNulls);
152-
}
153+
}
154+
155+
156+
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
157+
158+
159+
public class EnumerableNulls
160+
{
161+
public IEnumerable<string> Value1 { get; set; } = default!;
162+
public IEnumerable<string> Value2 { get; set; } = default!;
163+
public IEnumerable<string>? Value3 { get; set; }
164+
public IEnumerable<string>? Value4 { get; set; }
165+
}
166+
167+
[AutoSelect<EnumerableNulls>]
168+
public partial class EnumerableNullsDto
169+
{
170+
public IEnumerable<string> Value1 { get; set; } = default!;
171+
public IEnumerable<string>? Value2 { get; set; }
172+
public IEnumerable<string> Value3 { get; set; } = default!;
173+
public IEnumerable<string>? Value4 { get; set; }
174+
}
175+
176+
// expected
177+
public partial class EnumerableNullsDto
178+
{
179+
private static Func<EnumerableNulls, EnumerableNullsDto> selectEnumerableNullsFunc;
180+
181+
public static Expression<Func<EnumerableNulls, EnumerableNullsDto>> SelectEnumerableNullsExpression { get; } = a => new EnumerableNullsDto
182+
{
183+
Value1 = a.Value1,
184+
Value2 = a.Value2,
185+
Value3 = a.Value3,
186+
Value4 = a.Value4
187+
};
188+
189+
public static EnumerableNullsDto From(EnumerableNulls enumerableNulls) => (selectEnumerableNullsFunc ??= SelectEnumerableNullsExpression.Compile())(enumerableNulls);
190+
}
191+
192+
193+
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
194+
195+
196+
[AutoSelect<EnumerableNulls>]
197+
public partial class CollectionsNullsDto
198+
{
199+
public ICollection<string> Value1 { get; set; } = default!;
200+
public ICollection<string>? Value2 { get; set; }
201+
public ICollection<string> Value3 { get; set; } = default!;
202+
public ICollection<string>? Value4 { get; set; }
203+
}
204+
205+
// expected
206+
public partial class CollectionsNullsDto
207+
{
208+
private static Func<EnumerableNulls, CollectionsNullsDto> selectEnumerableNullsFunc;
209+
210+
public static Expression<Func<EnumerableNulls, CollectionsNullsDto>> SelectEnumerableNullsExpression { get; } = a => new CollectionsNullsDto
211+
{
212+
Value1 = a.Value1.ToList(),
213+
Value2 = a.Value2.ToList(),
214+
Value3 = a.Value3.ToList(),
215+
Value4 = a.Value4.ToList()
216+
};
217+
218+
public static CollectionsNullsDto From(EnumerableNulls enumerableNulls) => (selectEnumerableNullsFunc ??= SelectEnumerableNullsExpression.Compile())(enumerableNulls);
219+
}
220+
221+
222+
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
223+
224+
225+
public class ValueObject
226+
{
227+
public string Value { get; set; } = default!;
228+
}
229+
230+
public class ValueSelectNulls
231+
{
232+
public ICollection<ValueObject> Value1 { get; set; } = default!;
233+
public ICollection<ValueObject> Value2 { get; set; } = default!;
234+
public ICollection<ValueObject>? Value3 { get; set; }
235+
public ICollection<ValueObject>? Value4 { get; set; }
236+
}
237+
238+
public class ValueDto
239+
{
240+
public string Value { get; set; } = default!;
241+
}
242+
243+
[AutoSelect<ValueSelectNulls>]
244+
public partial class ValueSelectNullsDto
245+
{
246+
public IReadOnlyList<ValueDto> Value1 { get; set; } = default!;
247+
public IReadOnlyList<ValueDto>? Value2 { get; set; }
248+
public IReadOnlyList<ValueDto> Value3 { get; set; } = default!;
249+
public IReadOnlyList<ValueDto>? Value4 { get; set; }
250+
}
251+
252+
// expected
253+
public partial class ValueSelectNullsDto
254+
{
255+
private static Func<ValueSelectNulls, ValueSelectNullsDto> selectValueSelectNullsFunc;
256+
257+
public static Expression<Func<ValueSelectNulls, ValueSelectNullsDto>> SelectValueSelectNullsExpression { get; } = a => new ValueSelectNullsDto
258+
{
259+
Value1 = a.Value1.Select(b => new ValueDto
260+
{
261+
Value = b.Value
262+
}).ToList(),
263+
Value2 = a.Value2.Select(b => new ValueDto
264+
{
265+
Value = b.Value
266+
}).ToList(),
267+
Value3 = a.Value3.Select(b => new ValueDto
268+
{
269+
Value = b.Value
270+
}).ToList(),
271+
Value4 = a.Value4.Select(b => new ValueDto
272+
{
273+
Value = b.Value
274+
}).ToList()
275+
};
276+
277+
public static ValueSelectNullsDto From(ValueSelectNulls valueSelectNulls) => (selectValueSelectNullsFunc ??= SelectValueSelectNullsExpression.Compile())(valueSelectNulls);
278+
}

0 commit comments

Comments
 (0)