@@ -20,7 +20,7 @@ docker exec -it sql1 "bash"
2020
2121 private static readonly string _connString = "Server=127.0.0.1,1433;Database=Master;User Id=SA;Password=Salakala123!" ;
2222 private static readonly string _tableName = "TestTable" ;
23-
23+
2424 [ TestInitialize ]
2525 public void Init ( )
2626 {
@@ -40,6 +40,10 @@ public void Init()
4040 command . CommandText = $ "CREATE PROCEDURE SelectAll AS select * from { _tableName } ";
4141 command . ExecuteNonQuery ( ) ;
4242
43+ //Select single parameter
44+ command . CommandText = $ "CREATE PROCEDURE SelectSingleParameter (@id INT) AS SELECT * FROM { _tableName } WHERE Id = @id";
45+ command . ExecuteNonQuery ( ) ;
46+
4347 //Select single
4448 command . CommandText = $ "CREATE PROCEDURE SelectSingle AS select * from { _tableName } where Id = 1";
4549 command . ExecuteNonQuery ( ) ;
@@ -90,7 +94,7 @@ CLOSE cur
9094 public async Task TestExecuteProcedure_ExecuteReader ( )
9195 {
9296 var transactionLevels = new List < SqlTransactionIsolationLevel > ( ) {
93- SqlTransactionIsolationLevel . Unspecified ,
97+ // SqlTransactionIsolationLevel.Unspecified,
9498 SqlTransactionIsolationLevel . Serializable ,
9599 SqlTransactionIsolationLevel . None ,
96100 SqlTransactionIsolationLevel . ReadUncommitted ,
@@ -148,67 +152,109 @@ public async Task TestExecuteProcedure_ExecuteReader()
148152
149153 // Insert rows
150154 var insert = await MicrosoftSQL . ExecuteProcedure ( inputInsert , options , default ) ;
151- Assert . IsTrue ( insert . Success ) ;
152- Assert . AreEqual ( 3 , insert . RecordsAffected ) ;
153- Assert . IsNull ( insert . ErrorMessage ) ;
154- Assert . AreEqual ( 3 , GetRowCount ( ) ) ;
155+ Assert . IsTrue ( insert . Success , $ "TransactionLevel: { level } ." ) ;
156+ Assert . AreEqual ( 3 , insert . RecordsAffected , $ "TransactionLevel: { level } ." ) ;
157+ Assert . IsNull ( insert . ErrorMessage , $ "TransactionLevel: { level } ." ) ;
158+ Assert . AreEqual ( 3 , GetRowCount ( ) , $ "TransactionLevel: { level } ." ) ;
155159
156160 // Select all
157161 var select = await MicrosoftSQL . ExecuteProcedure ( inputSelect , options , default ) ;
158- Assert . IsTrue ( select . Success ) ;
159- Assert . AreEqual ( - 1 , select . RecordsAffected ) ;
160- Assert . IsNull ( select . ErrorMessage ) ;
161- Assert . AreEqual ( typeof ( JArray ) , select . Data . GetType ( ) ) ;
162- Assert . AreEqual ( "Suku" , ( string ) select . Data [ 0 ] [ "LastName" ] ) ;
163- Assert . AreEqual ( "Etu" , ( string ) select . Data [ 0 ] [ "FirstName" ] ) ;
164- Assert . AreEqual ( "Last" , ( string ) select . Data [ 1 ] [ "LastName" ] ) ;
165- Assert . AreEqual ( "Forst" , ( string ) select . Data [ 1 ] [ "FirstName" ] ) ;
166- Assert . AreEqual ( "Hiiri" , ( string ) select . Data [ 2 ] [ "LastName" ] ) ;
167- Assert . AreEqual ( "Mikki" , ( string ) select . Data [ 2 ] [ "FirstName" ] ) ;
168- Assert . AreEqual ( 3 , GetRowCount ( ) ) ;
162+ Assert . IsTrue ( select . Success , $ "TransactionLevel: { level } ." ) ;
163+ Assert . AreEqual ( - 1 , select . RecordsAffected , $ "TransactionLevel: { level } ." ) ;
164+ Assert . IsNull ( select . ErrorMessage , $ "TransactionLevel: { level } ." ) ;
165+ Assert . AreEqual ( typeof ( JArray ) , select . Data . GetType ( ) , $ "TransactionLevel: { level } ." ) ;
166+ Assert . AreEqual ( "Suku" , ( string ) select . Data [ 0 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
167+ Assert . AreEqual ( "Etu" , ( string ) select . Data [ 0 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
168+ Assert . AreEqual ( "Last" , ( string ) select . Data [ 1 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
169+ Assert . AreEqual ( "Forst" , ( string ) select . Data [ 1 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
170+ Assert . AreEqual ( "Hiiri" , ( string ) select . Data [ 2 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
171+ Assert . AreEqual ( "Mikki" , ( string ) select . Data [ 2 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
172+ Assert . AreEqual ( 3 , GetRowCount ( ) , $ "TransactionLevel: { level } ." ) ;
169173
170174 // Select single
171175 var selectSingle = await MicrosoftSQL . ExecuteProcedure ( inputSelectSingle , options , default ) ;
172- Assert . IsTrue ( selectSingle . Success ) ;
173- Assert . AreEqual ( - 1 , selectSingle . RecordsAffected ) ;
174- Assert . IsNull ( selectSingle . ErrorMessage ) ;
175- Assert . AreEqual ( typeof ( JArray ) , selectSingle . Data . GetType ( ) ) ;
176- Assert . AreEqual ( "Suku" , ( string ) selectSingle . Data [ 0 ] [ "LastName" ] ) ;
177- Assert . AreEqual ( "Etu" , ( string ) selectSingle . Data [ 0 ] [ "FirstName" ] ) ;
176+ Assert . IsTrue ( selectSingle . Success , $ "TransactionLevel: { level } ." ) ;
177+ Assert . AreEqual ( - 1 , selectSingle . RecordsAffected , $ "TransactionLevel: { level } ." ) ;
178+ Assert . IsNull ( selectSingle . ErrorMessage , $ "TransactionLevel: { level } ." ) ;
179+ Assert . AreEqual ( typeof ( JArray ) , selectSingle . Data . GetType ( ) , $ "TransactionLevel: { level } ." ) ;
180+ Assert . AreEqual ( "Suku" , ( string ) selectSingle . Data [ 0 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
181+ Assert . AreEqual ( "Etu" , ( string ) selectSingle . Data [ 0 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
178182 Assert . AreEqual ( 3 , GetRowCount ( ) ) ;
179183
180184 // Update
181185 var update = await MicrosoftSQL . ExecuteProcedure ( inputUpdate , options , default ) ;
182- Assert . IsTrue ( update . Success ) ;
183- Assert . AreEqual ( 1 , update . RecordsAffected ) ;
184- Assert . IsNull ( update . ErrorMessage ) ;
185- Assert . AreEqual ( 3 , GetRowCount ( ) ) ;
186+ Assert . IsTrue ( update . Success , $ "TransactionLevel: { level } ." ) ;
187+ Assert . AreEqual ( 1 , update . RecordsAffected , $ "TransactionLevel: { level } ." ) ;
188+ Assert . IsNull ( update . ErrorMessage , $ "TransactionLevel: { level } ." ) ;
189+ Assert . AreEqual ( 3 , GetRowCount ( ) , $ "TransactionLevel: { level } ." ) ;
186190 var checkUpdateResult = await MicrosoftSQL . ExecuteProcedure ( inputSelect , options , default ) ;
187- Assert . AreEqual ( "Suku" , ( string ) checkUpdateResult . Data [ 0 ] [ "LastName" ] ) ;
188- Assert . AreEqual ( "Etu" , ( string ) checkUpdateResult . Data [ 0 ] [ "FirstName" ] ) ;
189- Assert . AreEqual ( "Edit" , ( string ) checkUpdateResult . Data [ 1 ] [ "LastName" ] ) ;
190- Assert . AreEqual ( "Forst" , ( string ) checkUpdateResult . Data [ 1 ] [ "FirstName" ] ) ;
191- Assert . AreEqual ( "Hiiri" , ( string ) checkUpdateResult . Data [ 2 ] [ "LastName" ] ) ;
192- Assert . AreEqual ( "Mikki" , ( string ) checkUpdateResult . Data [ 2 ] [ "FirstName" ] ) ;
191+ Assert . AreEqual ( "Suku" , ( string ) checkUpdateResult . Data [ 0 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
192+ Assert . AreEqual ( "Etu" , ( string ) checkUpdateResult . Data [ 0 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
193+ Assert . AreEqual ( "Edit" , ( string ) checkUpdateResult . Data [ 1 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
194+ Assert . AreEqual ( "Forst" , ( string ) checkUpdateResult . Data [ 1 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
195+ Assert . AreEqual ( "Hiiri" , ( string ) checkUpdateResult . Data [ 2 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
196+ Assert . AreEqual ( "Mikki" , ( string ) checkUpdateResult . Data [ 2 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
193197 Assert . AreEqual ( 3 , GetRowCount ( ) ) ;
194198
195199 // Delete
196200 var delete = await MicrosoftSQL . ExecuteProcedure ( inputDelete , options , default ) ;
197- Assert . IsTrue ( delete . Success ) ;
198- Assert . AreEqual ( 1 , delete . RecordsAffected ) ;
199- Assert . IsNull ( delete . ErrorMessage ) ;
200- Assert . AreEqual ( 2 , GetRowCount ( ) ) ;
201+ Assert . IsTrue ( delete . Success , $ "TransactionLevel: { level } ." ) ;
202+ Assert . AreEqual ( 1 , delete . RecordsAffected , $ "TransactionLevel: { level } ." ) ;
203+ Assert . IsNull ( delete . ErrorMessage , $ "TransactionLevel: { level } ." ) ;
204+ Assert . AreEqual ( 2 , GetRowCount ( ) , $ "TransactionLevel: { level } ." ) ;
201205 var checkDeleteResult = await MicrosoftSQL . ExecuteProcedure ( inputSelect , options , default ) ;
202- Assert . AreEqual ( "Suku" , ( string ) checkDeleteResult . Data [ 0 ] [ "LastName" ] ) ;
203- Assert . AreEqual ( "Etu" , ( string ) checkDeleteResult . Data [ 0 ] [ "FirstName" ] ) ;
204- Assert . AreEqual ( "Hiiri" , ( string ) checkDeleteResult . Data [ 1 ] [ "LastName" ] ) ;
205- Assert . AreEqual ( "Mikki" , ( string ) checkDeleteResult . Data [ 1 ] [ "FirstName" ] ) ;
206+ Assert . AreEqual ( "Suku" , ( string ) checkDeleteResult . Data [ 0 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
207+ Assert . AreEqual ( "Etu" , ( string ) checkDeleteResult . Data [ 0 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
208+ Assert . AreEqual ( "Hiiri" , ( string ) checkDeleteResult . Data [ 1 ] [ "LastName" ] , $ "TransactionLevel: { level } ." ) ;
209+ Assert . AreEqual ( "Mikki" , ( string ) checkDeleteResult . Data [ 1 ] [ "FirstName" ] , $ "TransactionLevel: { level } ." ) ;
206210
207211 CleanUp ( ) ;
208212 Init ( ) ;
209213 }
210214 }
211215
216+ [ TestMethod ]
217+ public async Task TestExecuteProcedure_ProcedureParameter ( )
218+ {
219+ var parameter = new ProcedureParameter
220+ {
221+ Name = "id" ,
222+ Value = "1" ,
223+ SqlDataType = SqlDataTypes . Auto
224+ } ;
225+
226+ var inputInsert = new Input ( )
227+ {
228+ ConnectionString = _connString ,
229+ Execute = "InsertValues" ,
230+ ExecuteType = ExecuteTypes . ExecuteReader ,
231+ Parameters = null
232+ } ;
233+
234+ var parameterInput = new Input ( )
235+ {
236+ ConnectionString = _connString ,
237+ Execute = "SelectSingleParameter" ,
238+ ExecuteType = ExecuteTypes . ExecuteReader ,
239+ Parameters = new ProcedureParameter [ ] { parameter }
240+ } ;
241+
242+ var options = new Options ( )
243+ {
244+ SqlTransactionIsolationLevel = SqlTransactionIsolationLevel . None ,
245+ CommandTimeoutSeconds = 2 ,
246+ ThrowErrorOnFailure = true
247+ } ;
248+
249+ await MicrosoftSQL . ExecuteProcedure ( inputInsert , options , default ) ;
250+
251+ var query = await MicrosoftSQL . ExecuteProcedure ( parameterInput , options , default ) ;
252+ Assert . IsTrue ( query . Success ) ;
253+ Assert . AreEqual ( - 1 , query . RecordsAffected ) ;
254+ Assert . IsNull ( query . ErrorMessage ) ;
255+ Assert . IsTrue ( ( ( IEnumerable < dynamic > ) query . Data ) . Any ( x => x . Id == 1 && x . LastName == "Suku" ) ) ;
256+ }
257+
212258 // Simple select query
213259 private static int GetRowCount ( )
214260 {
0 commit comments