1+ using System ;
2+ using System . Collections . Generic ;
3+ using Xunit ;
4+
5+ namespace SmartSql . Test . Unit . DbSessions
6+ {
7+ [ Collection ( "GlobalSmartSql" ) ]
8+ public class NestTest
9+ {
10+ protected ISqlMapper SqlMapper { get ; }
11+
12+ public NestTest ( SmartSqlFixture smartSqlFixture )
13+ {
14+ SqlMapper = smartSqlFixture . SqlMapper ;
15+ }
16+
17+ [ Fact ]
18+ public void QueryNestObject1 ( )
19+ {
20+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
21+ {
22+ RealSql = "SELECT @User.Id" ,
23+ Request = new { User = new { Id = 1 } }
24+ } ) ;
25+
26+ Assert . Equal ( 1 , result ) ;
27+ }
28+
29+ [ Fact ]
30+ public void QueryNestObject2 ( )
31+ {
32+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
33+ {
34+ RealSql = "SELECT @User.Info.Id" ,
35+ Request = new
36+ {
37+ User = new
38+ {
39+ Info = new
40+ {
41+ Id = 1
42+ }
43+ }
44+ }
45+ } ) ;
46+
47+ Assert . Equal ( 1 , result ) ;
48+ }
49+
50+ [ Fact ]
51+ public void QueryNestArray ( )
52+ {
53+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
54+ {
55+ RealSql = "SELECT @Order.Items[0]" ,
56+ Request = new
57+ {
58+ Order = new
59+ {
60+ Items = new int [ ] { 1 }
61+ }
62+ }
63+ } ) ;
64+
65+ Assert . Equal ( 1 , result ) ;
66+ }
67+
68+ [ Fact ]
69+ public void QueryNestList ( )
70+ {
71+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
72+ {
73+ RealSql = "SELECT @Order.Items[0]" ,
74+ Request = new
75+ {
76+ Order = new
77+ {
78+ Items = new List < int >
79+ {
80+ 1
81+ }
82+ }
83+ }
84+ } ) ;
85+
86+ Assert . Equal ( 1 , result ) ;
87+ }
88+
89+ [ Fact ]
90+ public void QueryNestDic ( )
91+ {
92+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
93+ {
94+ Scope = nameof ( NestTest ) ,
95+ SqlId = "QueryNestDic" ,
96+ Request = new
97+ {
98+ Order = new
99+ {
100+ Items = new Dictionary < string , int >
101+ {
102+ { "Id" , 1 }
103+ }
104+ }
105+ }
106+ } ) ;
107+
108+ Assert . Equal ( 1 , result ) ;
109+ }
110+
111+ [ Fact ]
112+ public void QueryNestArrayObject ( )
113+ {
114+ var result = SqlMapper . ExecuteScalar < String > ( new RequestContext
115+ {
116+ Scope = nameof ( NestTest ) ,
117+ SqlId = "QueryNestArrayObject" ,
118+ Request = new
119+ {
120+ Order = new
121+ {
122+ Items = new [ ]
123+ {
124+ new { Name = "SmartSql" }
125+ }
126+ }
127+ }
128+ } ) ;
129+
130+ Assert . Equal ( "SmartSql" , result ) ;
131+ }
132+
133+ [ Fact ]
134+ public void QueryNestArrayStrongObject ( )
135+ {
136+ var result = SqlMapper . ExecuteScalar < String > ( new RequestContext
137+ {
138+ Scope = nameof ( NestTest ) ,
139+ SqlId = "QueryNestArrayObject" ,
140+ Request = new
141+ {
142+ Order = new
143+ {
144+ Items = new [ ]
145+ {
146+ new OrderItem { Name = "SmartSql" }
147+ }
148+ }
149+ }
150+ } ) ;
151+
152+ Assert . Equal ( "SmartSql" , result ) ;
153+ }
154+
155+
156+ [ Fact ]
157+ public void FilterNestObject1 ( )
158+ {
159+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
160+ {
161+ Scope = nameof ( NestTest ) ,
162+ SqlId = "FilterNestObject1" ,
163+ Request = new { User = new { Id = 1 } }
164+ } ) ;
165+
166+ Assert . Equal ( 1 , result ) ;
167+ }
168+
169+ [ Fact ]
170+ public void FilterNestObject2 ( )
171+ {
172+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
173+ {
174+ Scope = nameof ( NestTest ) ,
175+ SqlId = "FilterNestObject2" ,
176+ Request = new
177+ {
178+ User = new
179+ {
180+ Info = new
181+ {
182+ Id = 1
183+ }
184+ }
185+ }
186+ } ) ;
187+
188+ Assert . Equal ( 1 , result ) ;
189+ }
190+
191+ [ Fact ]
192+ public void FilterNestArray ( )
193+ {
194+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
195+ {
196+ Scope = nameof ( NestTest ) ,
197+ SqlId = "FilterNestArray" ,
198+ Request = new
199+ {
200+ Order = new
201+ {
202+ Items = new int [ ] { 1 }
203+ }
204+ }
205+ } ) ;
206+
207+ Assert . Equal ( 1 , result ) ;
208+ }
209+
210+ [ Fact ]
211+ public void FilterNestDic ( )
212+ {
213+ var result = SqlMapper . ExecuteScalar < int > ( new RequestContext
214+ {
215+ Scope = nameof ( NestTest ) ,
216+ SqlId = "FilterNestDic" ,
217+ Request = new
218+ {
219+ Order = new
220+ {
221+ Items = new Dictionary < string , int >
222+ {
223+ { "Id" , 1 }
224+ }
225+ }
226+ }
227+ } ) ;
228+
229+ Assert . Equal ( 1 , result ) ;
230+ }
231+
232+ [ Fact ]
233+ public void FilterNestArrayObject ( )
234+ {
235+ var result = SqlMapper . ExecuteScalar < String > ( new RequestContext
236+ {
237+ Scope = nameof ( NestTest ) ,
238+ SqlId = "FilterNestArrayObject" ,
239+ Request = new
240+ {
241+ Order = new
242+ {
243+ Items = new [ ]
244+ {
245+ new OrderItem { Name = "SmartSql" }
246+ }
247+ }
248+ }
249+ } ) ;
250+
251+ Assert . Equal ( "SmartSql" , result ) ;
252+ }
253+
254+ public class OrderItem
255+ {
256+ public String Name { get ; set ; }
257+ }
258+ }
259+ }
0 commit comments