@@ -8,6 +8,76 @@ namespace FluentCommand.Tests.Query;
88
99public class InsertBuilderTest
1010{
11+ [ Fact ]
12+ public void InsertValueWithEnumAddsUnderlyingValueAndType ( )
13+ {
14+ var sqlProvider = new SqlServerGenerator ( ) ;
15+ var parameters = new List < QueryParameter > ( ) ;
16+
17+ var builder = new InsertBuilder ( sqlProvider , parameters )
18+ . Into ( "EnumLog" )
19+ . Value ( "Status" , BuilderStatus . Active ) ;
20+
21+ var queryStatement = builder . BuildStatement ( ) ;
22+ var parameter = queryStatement ! . Parameters . Single ( ) ;
23+
24+ parameter . Value . Should ( ) . Be ( ( short ) BuilderStatus . Active ) ;
25+ parameter . Type . Should ( ) . Be ( typeof ( short ) ) ;
26+ }
27+
28+ [ Fact ]
29+ public void InsertValueWithNullableEnumAddsUnderlyingValueAndType ( )
30+ {
31+ var sqlProvider = new SqlServerGenerator ( ) ;
32+ var parameters = new List < QueryParameter > ( ) ;
33+ BuilderStatus ? value = BuilderStatus . Active ;
34+
35+ var builder = new InsertBuilder ( sqlProvider , parameters )
36+ . Into ( "EnumLog" )
37+ . Value ( "Status" , value ) ;
38+
39+ var queryStatement = builder . BuildStatement ( ) ;
40+ var parameter = queryStatement ! . Parameters . Single ( ) ;
41+
42+ parameter . Value . Should ( ) . Be ( ( short ) BuilderStatus . Active ) ;
43+ parameter . Type . Should ( ) . Be ( typeof ( short ) ) ;
44+ }
45+
46+ [ Fact ]
47+ public void InsertValueWithNullNullableEnumAddsNullWithUnderlyingType ( )
48+ {
49+ var sqlProvider = new SqlServerGenerator ( ) ;
50+ var parameters = new List < QueryParameter > ( ) ;
51+ BuilderStatus ? value = null ;
52+
53+ var builder = new InsertBuilder ( sqlProvider , parameters )
54+ . Into ( "EnumLog" )
55+ . Value ( "Status" , value ) ;
56+
57+ var queryStatement = builder . BuildStatement ( ) ;
58+ var parameter = queryStatement ! . Parameters . Single ( ) ;
59+
60+ parameter . Value . Should ( ) . BeNull ( ) ;
61+ parameter . Type . Should ( ) . Be ( typeof ( short ) ) ;
62+ }
63+
64+ [ Fact ]
65+ public void InsertEntityValuesWithEnumAddsUnderlyingValueAndType ( )
66+ {
67+ var sqlProvider = new SqlServerGenerator ( ) ;
68+ var parameters = new List < QueryParameter > ( ) ;
69+ var entity = new EnumLog { Status = BuilderStatus . Active } ;
70+
71+ var builder = new InsertEntityBuilder < EnumLog > ( sqlProvider , parameters )
72+ . Values ( entity ) ;
73+
74+ var queryStatement = builder . BuildStatement ( ) ;
75+ var parameter = queryStatement ! . Parameters . Single ( ) ;
76+
77+ parameter . Value . Should ( ) . Be ( ( short ) BuilderStatus . Active ) ;
78+ parameter . Type . Should ( ) . Be ( typeof ( short ) ) ;
79+ }
80+
1181 [ Fact ]
1282 public void InsertValueJsonWithOptionsAddsJsonStringParameter ( )
1383 {
@@ -75,4 +145,15 @@ private sealed class JsonLog
75145 {
76146 public ValueJsonModel Data { get ; set ; } = null ! ;
77147 }
148+
149+ private enum BuilderStatus : short
150+ {
151+ Inactive = 0 ,
152+ Active = 1
153+ }
154+
155+ private sealed class EnumLog
156+ {
157+ public BuilderStatus ? Status { get ; set ; }
158+ }
78159}
0 commit comments