2 // Tests for System.Web.UI.WebControls.SqlDataSource
\r
5 // Chris Toshok (toshok@novell.com)
\r
9 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
\r
11 // Permission is hereby granted, free of charge, to any person obtaining
\r
12 // a copy of this software and associated documentation files (the
\r
13 // "Software"), to deal in the Software without restriction, including
\r
14 // without limitation the rights to use, copy, modify, merge, publish,
\r
15 // distribute, sublicense, and/or sell copies of the Software, and to
\r
16 // permit persons to whom the Software is furnished to do so, subject to
\r
17 // the following conditions:
\r
19 // The above copyright notice and this permission notice shall be
\r
20 // included in all copies or substantial portions of the Software.
\r
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
33 using NUnit.Framework;
\r
35 using System.Configuration;
\r
36 using System.Data.Common;
\r
37 using System.Data.SqlClient;
\r
39 using System.Globalization;
\r
41 using System.Web.UI;
\r
42 using System.Web.UI.WebControls;
\r
43 using System.Collections;
\r
46 namespace MonoTests.System.Web.UI.WebControls
\r
48 class SqlPoker : SqlDataSource
\r
55 public object SaveToViewState ()
\r
57 return SaveViewState ();
\r
60 public void LoadFromViewState (object savedState)
\r
62 LoadViewState (savedState);
\r
66 class CustomSqlDataSourceView : SqlDataSourceView
\r
68 public CustomSqlDataSourceView (SqlDataSource owner,string name,HttpContext context):base(owner,name,context)
\r
72 public new int ExecuteDelete (global::System.Collections.IDictionary keys, global::System.Collections.IDictionary oldValues)
\r
74 return base.ExecuteDelete (keys, oldValues);
\r
77 public new int ExecuteInsert (global::System.Collections.IDictionary values)
\r
79 return base.ExecuteInsert (values);
\r
82 public new global::System.Collections.IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)
\r
84 return base.ExecuteSelect (arguments);
\r
87 public new int ExecuteUpdate (global::System.Collections.IDictionary keys, global::System.Collections.IDictionary values, global::System.Collections.IDictionary oldValues)
\r
89 return base.ExecuteUpdate (keys, values, oldValues);
\r
96 public class SqlDataSourceTest
\r
99 public void SetUp ()
\r
101 SqlDataSourceTest.CustomEventParameterCollection = null;
\r
102 SqlDataSourceTest.PassedParameters = "";
\r
106 public void Defaults ()
\r
108 SqlPoker sql = new SqlPoker ();
\r
109 Assert.AreEqual ("", sql.CacheKeyDependency, "A1");
\r
110 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A2");
\r
111 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A3");
\r
112 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");
\r
113 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A5");
\r
114 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A6");
\r
115 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A7");
\r
116 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A8");
\r
117 Assert.AreEqual ("", sql.SqlCacheDependency, "A9");
\r
118 Assert.AreEqual ("", sql.SortParameterName, "A10");
\r
119 Assert.AreEqual (0, sql.CacheDuration, "A11");
\r
120 Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "A12");
\r
121 Assert.IsFalse (sql.EnableCaching, "A13");
\r
122 Assert.AreEqual ("", sql.ProviderName, "A14");
\r
123 Assert.AreEqual ("", sql.ConnectionString, "A15");
\r
124 Assert.AreEqual (SqlDataSourceMode.DataSet, sql.DataSourceMode, "A16");
\r
125 Assert.AreEqual ("", sql.DeleteCommand, "A17");
\r
126 Assert.IsNotNull (sql.DeleteParameters, "A18");
\r
127 Assert.AreEqual (0, sql.DeleteParameters.Count, "A18.1");
\r
128 Assert.IsNotNull (sql.FilterParameters, "A19");
\r
129 Assert.AreEqual (0, sql.FilterParameters.Count, "A19.1");
\r
130 Assert.AreEqual ("", sql.InsertCommand, "A20");
\r
131 Assert.IsNotNull (sql.InsertParameters, "A21");
\r
132 Assert.AreEqual (0, sql.InsertParameters.Count, "A21.1");
\r
133 Assert.AreEqual ("", sql.SelectCommand, "A22");
\r
134 Assert.IsNotNull (sql.SelectParameters, "A23");
\r
135 Assert.AreEqual (0, sql.SelectParameters.Count, "A23.1");
\r
136 Assert.AreEqual ("", sql.UpdateCommand, "A24");
\r
137 Assert.IsNotNull (sql.UpdateParameters, "A25");
\r
138 Assert.AreEqual (0, sql.UpdateParameters.Count, "A25.1");
\r
139 Assert.AreEqual ("", sql.FilterExpression, "A26");
\r
143 public void ViewState ()
\r
145 SqlPoker sql = new SqlPoker ();
\r
147 sql.CacheKeyDependency = "hi";
\r
148 sql.CancelSelectOnNullParameter = false;
\r
149 sql.ConflictDetection = ConflictOptions.CompareAllValues;
\r
150 sql.DeleteCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
151 sql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
152 sql.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
153 sql.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
154 sql.OldValuesParameterFormatString = "{1}";
\r
155 sql.SqlCacheDependency = "hi";
\r
156 sql.SortParameterName = "hi";
\r
157 sql.CacheDuration = 1;
\r
158 sql.CacheExpirationPolicy = DataSourceCacheExpiry.Sliding;
\r
159 sql.EnableCaching = true;
\r
160 sql.DataSourceMode = SqlDataSourceMode.DataReader;
\r
161 sql.DeleteCommand = "DELETE foo";
\r
162 sql.InsertCommand = "INSERT foo";
\r
163 sql.SelectCommand = "SELECT foo";
\r
164 sql.UpdateCommand = "UPDATE foo";
\r
165 sql.FilterExpression = "hi";
\r
167 Assert.AreEqual ("hi", sql.CacheKeyDependency, "A1");
\r
168 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A2");
\r
169 Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A3");
\r
170 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.DeleteCommandType, "A4");
\r
171 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.InsertCommandType, "A5");
\r
172 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.SelectCommandType, "A6");
\r
173 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.UpdateCommandType, "A7");
\r
174 Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");
\r
175 Assert.AreEqual ("hi", sql.SqlCacheDependency, "A9");
\r
176 Assert.AreEqual ("hi", sql.SortParameterName, "A10");
\r
177 Assert.AreEqual (1, sql.CacheDuration, "A11");
\r
178 Assert.AreEqual (DataSourceCacheExpiry.Sliding, sql.CacheExpirationPolicy, "A12");
\r
179 Assert.IsTrue (sql.EnableCaching, "A13");
\r
180 Assert.AreEqual (SqlDataSourceMode.DataReader, sql.DataSourceMode, "A16");
\r
181 Assert.AreEqual ("DELETE foo", sql.DeleteCommand, "A17");
\r
182 Assert.AreEqual ("INSERT foo", sql.InsertCommand, "A20");
\r
183 Assert.AreEqual ("SELECT foo", sql.SelectCommand, "A22");
\r
184 Assert.AreEqual ("UPDATE foo", sql.UpdateCommand, "A24");
\r
185 Assert.AreEqual ("hi", sql.FilterExpression, "A26");
\r
187 object state = sql.SaveToViewState ();
\r
188 Assert.IsNull (state, "ViewState is null");
\r
190 sql = new SqlPoker ();
\r
191 sql.LoadFromViewState (state);
\r
193 Assert.AreEqual ("", sql.CacheKeyDependency, "B1");
\r
194 Assert.IsTrue (sql.CancelSelectOnNullParameter, "B2");
\r
195 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "B3");
\r
196 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B4");
\r
197 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "B5");
\r
198 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "B6");
\r
199 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B7");
\r
200 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "B8");
\r
201 Assert.AreEqual ("", sql.SqlCacheDependency, "B9");
\r
202 Assert.AreEqual ("", sql.SortParameterName, "B10");
\r
203 Assert.AreEqual (0, sql.CacheDuration, "B11");
\r
204 Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "B12");
\r
205 Assert.IsFalse (sql.EnableCaching, "B13");
\r
206 Assert.AreEqual (SqlDataSourceMode.DataSet, sql.DataSourceMode, "B16");
\r
207 Assert.AreEqual ("", sql.DeleteCommand, "B17");
\r
208 Assert.IsNotNull (sql.DeleteParameters, "B18");
\r
209 Assert.AreEqual (0, sql.DeleteParameters.Count, "B18.1");
\r
210 Assert.IsNotNull (sql.FilterParameters, "B19");
\r
211 Assert.AreEqual (0, sql.FilterParameters.Count, "B19.1");
\r
212 Assert.AreEqual ("", sql.InsertCommand, "B20");
\r
213 Assert.IsNotNull (sql.InsertParameters, "B21");
\r
214 Assert.AreEqual (0, sql.InsertParameters.Count, "B21.1");
\r
215 Assert.AreEqual ("", sql.SelectCommand, "B22");
\r
216 Assert.IsNotNull (sql.SelectParameters, "B23");
\r
217 Assert.AreEqual (0, sql.SelectParameters.Count, "B23.1");
\r
218 Assert.AreEqual ("", sql.UpdateCommand, "B24");
\r
219 Assert.IsNotNull (sql.UpdateParameters, "B25");
\r
220 Assert.AreEqual (0, sql.UpdateParameters.Count, "B25.1");
\r
221 Assert.AreEqual ("", sql.FilterExpression, "B26");
\r
224 // Help parameter for Asserts
\r
225 private static SqlParameterCollection CustomEventParameterCollection;
\r
226 private static string PassedParameters;
\r
229 public void ExecuteSelect ()
\r
231 SqlPoker sql = new SqlPoker();
\r
232 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
233 sql.ProviderName = "System.Data.SqlClient";
\r
234 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
235 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
236 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
237 view.OldValuesParameterFormatString = "origin_{0}";
\r
239 view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "10"));
\r
240 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
\r
241 view.Select (new DataSourceSelectArguments ());
\r
242 Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");
\r
243 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
244 Assert.AreEqual ("@ProductID", CustomEventParameterCollection[0].ParameterName, "Parameter name");
\r
245 Assert.AreEqual (10, CustomEventParameterCollection[0].Value, "Parameter value");
\r
249 public void ExecuteSelect2 ()
\r
251 SqlPoker sql = new SqlPoker ();
\r
252 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
253 sql.ProviderName = "System.Data.SqlClient";
\r
254 sql.DataSourceMode = SqlDataSourceMode.DataReader;
\r
255 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
256 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
257 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
258 view.OldValuesParameterFormatString = "origin_{0}";
\r
260 view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "10"));
\r
261 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
\r
262 view.Select (new DataSourceSelectArguments ());
\r
263 Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");
\r
264 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
265 Assert.AreEqual ("@ProductID", CustomEventParameterCollection [0].ParameterName, "Parameter name");
\r
266 Assert.AreEqual (10, CustomEventParameterCollection [0].Value, "Parameter value");
\r
270 public void ExecuteUpdate ()
\r
272 SqlPoker sql = new SqlPoker ();
\r
273 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
274 sql.ProviderName = "System.Data.SqlClient";
\r
275 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
276 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
277 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
278 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
279 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
280 view.OldValuesParameterFormatString = "origin_{0}";
\r
281 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
282 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
283 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
284 view.Update (null, null, null);
\r
285 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
286 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
287 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
288 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
289 Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
290 Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
294 public void ExecuteInsert ()
\r
296 SqlPoker sql = new SqlPoker ();
\r
297 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
298 sql.ProviderName = "System.Data.SqlClient";
\r
299 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
300 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
301 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
302 view.InsertCommandType = SqlDataSourceCommandType.Text;
\r
303 view.InsertCommand = "INSERT INTO Table1 (UserId, UserName) VALUES ({0},{1})";
\r
304 view.InsertParameters.Add (new Parameter ("UserId", TypeCode.Int32, "15"));
\r
305 view.InsertParameters.Add (new Parameter ("UserName", TypeCode.String, "newuser"));
\r
306 view.OldValuesParameterFormatString = "origin_{0}";
\r
307 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
\r
308 view.Insert (null);
\r
309 Assert.IsNotNull (CustomEventParameterCollection, "Insert event not fired");
\r
310 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
311 Assert.AreEqual ("@UserId", CustomEventParameterCollection[0].ParameterName, "Parameter name#2");
\r
312 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#2");
\r
313 Assert.AreEqual ("@UserName", CustomEventParameterCollection[1].ParameterName, "Parameter name#1");
\r
314 Assert.AreEqual ("newuser", CustomEventParameterCollection[1].Value, "Parameter value#1");
\r
318 public void ExecuteInsertWithCollection ()
\r
320 SqlPoker sql = new SqlPoker ();
\r
321 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
322 sql.ProviderName = "System.Data.SqlClient";
\r
323 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
324 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
325 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
326 view.InsertCommandType = SqlDataSourceCommandType.Text;
\r
327 view.InsertCommand = "INSERT INTO products (UserId, UserName) VALUES ({0},{1})";
\r
328 view.InsertParameters.Add (new Parameter ("UserId", TypeCode.Int32, "15"));
\r
329 view.InsertParameters.Add (new Parameter ("UserName", TypeCode.String, "newuser"));
\r
330 view.OldValuesParameterFormatString = "origin_{0}";
\r
331 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
\r
332 Hashtable value = new Hashtable ();
\r
333 value.Add ("Description", "TestDescription");
\r
334 view.Insert (value);
\r
335 Assert.IsNotNull (CustomEventParameterCollection, "Insert event not fired");
\r
336 Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");
\r
337 Assert.AreEqual ("@UserId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
338 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
339 Assert.AreEqual ("@UserName", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
340 Assert.AreEqual ("newuser", CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
341 Assert.AreEqual ("@Description", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");
\r
342 Assert.AreEqual ("TestDescription", CustomEventParameterCollection[2].Value, "Parameter value#3");
\r
346 public void ExecuteDelete ()
\r
348 SqlPoker sql = new SqlPoker ();
\r
349 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
350 sql.ProviderName = "System.Data.SqlClient";
\r
351 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
352 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
353 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
354 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
355 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
356 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
357 view.OldValuesParameterFormatString = "origin_{0}";
\r
358 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
359 view.Delete (null, null);
\r
360 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
361 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
362 Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
363 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
367 public void ExecuteDeleteWithOldValues ()
\r
369 SqlPoker sql = new SqlPoker ();
\r
370 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
371 sql.ProviderName = "System.Data.SqlClient";
\r
372 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
373 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
374 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
375 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
376 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
377 view.DeleteParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "15"));
\r
378 view.OldValuesParameterFormatString = "origin_{0}";
\r
379 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
380 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
381 Hashtable oldvalue = new Hashtable ();
\r
382 oldvalue.Add ("ProductID", 10);
\r
383 view.Delete (null,oldvalue );
\r
384 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
385 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
386 Assert.AreEqual ("@origin_ProductID", CustomEventParameterCollection[0].ParameterName, "Parameter name#2");
\r
387 Assert.AreEqual (10, CustomEventParameterCollection[0].Value, "Parameter value#2");
\r
391 public void ExecuteDeleteWithMergedOldValues ()
\r
393 SqlPoker sql = new SqlPoker ();
\r
394 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
395 sql.ProviderName = "System.Data.SqlClient";
\r
396 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
397 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
398 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
399 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
400 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
401 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
402 view.OldValuesParameterFormatString = "origin_{0}";
\r
403 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
404 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
405 Hashtable oldvalue = new Hashtable ();
\r
406 oldvalue.Add ("Desc", "Description");
\r
407 view.Delete (null, oldvalue);
\r
408 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
409 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
410 Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
411 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
412 Assert.AreEqual ("@origin_Desc", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
413 Assert.AreEqual ("Description", CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
417 public void ExecuteDeleteWithMergedValues ()
\r
419 SqlPoker sql = new SqlPoker ();
\r
420 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
421 sql.ProviderName = "System.Data.SqlClient";
\r
422 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
423 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
424 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
425 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
426 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
427 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
428 view.OldValuesParameterFormatString = "origin_{0}";
\r
429 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
430 Hashtable value = new Hashtable ();
\r
431 value.Add ("Desc", "Description");
\r
432 view.Delete (value, null);
\r
433 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
434 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
435 Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
436 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
437 Assert.AreEqual ("@origin_Desc", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
438 Assert.AreEqual ("Description", CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
442 public void ExecuteDelete_KeysAndOldValues_OverwriteChanges ()
\r
444 SqlPoker sql = new SqlPoker ();
\r
445 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
446 sql.ProviderName = "System.Data.SqlClient";
\r
447 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
449 IDictionary values;
\r
450 IDictionary oldValues;
\r
451 InitializeView (view, out keys, out values, out oldValues);
\r
453 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
455 view.Delete (keys, oldValues);
\r
457 Assert.IsNotNull (CustomEventParameterCollection, "KeysAndOldValues_OverwriteChanges");
\r
458 Assert.AreEqual ("String:@origin_ProductID=k_10", PassedParameters, "KeysAndOldValues_OverwriteChanges Values");
\r
462 public void ExecuteDelete_KeysAndOldValues_CompareAllValues ()
\r
464 SqlPoker sql = new SqlPoker ();
\r
465 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
466 sql.ProviderName = "System.Data.SqlClient";
\r
467 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
469 IDictionary values;
\r
470 IDictionary oldValues;
\r
471 InitializeView (view, out keys, out values, out oldValues);
\r
473 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
475 view.Delete (keys, oldValues);
\r
477 Assert.IsNotNull (CustomEventParameterCollection, "KeysAndOldValues_CompareAllValues");
\r
478 Assert.AreEqual ("String:@origin_ProductID=ov_10, String:@origin_Description=ov_Beautifull, String:@origin_Name=ov_ColorTV", PassedParameters, "KeysAndOldValues_CompareAllValues Values");
\r
482 public void ExecuteDelete_KeysAndOldValues_CompareAllValues2 ()
\r
484 SqlPoker sql = new SqlPoker ();
\r
485 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
486 sql.ProviderName = "System.Data.SqlClient";
\r
487 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
489 IDictionary values;
\r
490 IDictionary oldValues;
\r
491 InitializeView (view, out keys, out values, out oldValues);
\r
492 view.DeleteParameters.Add ("origin_ProductID", "po_10");
\r
494 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
496 view.Delete (keys, oldValues);
\r
498 Assert.IsNotNull (CustomEventParameterCollection, "ExecuteDelete_KeysAndOldValues_CompareAllValues2");
\r
499 string [] expectedParams = new string []
\r
501 "String:@origin_ProductID=ov_10",
\r
502 "String:@origin_Description=ov_Beautifull",
\r
503 "String:@origin_Name=ov_ColorTV"
\r
505 string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
\r
506 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");
\r
507 ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");
\r
510 private static void ValidatePassedParams (string [] expectedParams, string [] actualValues, string errorMessageFormat)
\r
512 foreach (string eps in expectedParams) {
\r
513 bool found = false;
\r
514 foreach (string aps in actualValues) {
\r
520 Assert.IsTrue (found, String.Format (errorMessageFormat, eps));
\r
524 private void InitializeView (CustomSqlDataSourceView view, out IDictionary keys, out IDictionary values, out IDictionary oldValues)
\r
526 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
527 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
528 view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_10"));
\r
529 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
\r
531 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
532 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
533 view.DeleteParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_10"));
\r
534 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
536 view.InsertCommandType = SqlDataSourceCommandType.Text;
\r
537 view.InsertCommand = "INSERT INTO products (ProductID, Name, Description) VALUES (@ProductID, @Name, @Description)";
\r
538 view.InsertParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_15"));
\r
539 view.InsertParameters.Add (new Parameter ("Name", TypeCode.String, "p_NewProduct"));
\r
540 view.InsertParameters.Add (new Parameter ("Description", TypeCode.String, "p_Description"));
\r
541 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
\r
543 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
544 view.UpdateCommand = "UPDATE products SET Name = @Name, Description = @Description WHERE ProductID = @ProductID";
\r
545 view.UpdateParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_15"));
\r
546 view.UpdateParameters.Add (new Parameter ("Name", TypeCode.String, "p_UpdatedProduct"));
\r
547 view.UpdateParameters.Add (new Parameter ("Description", TypeCode.String, "p_UpdatedDescription"));
\r
548 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
550 view.OldValuesParameterFormatString = "origin_{0}";
\r
552 keys = new Hashtable ();
\r
553 values = new Hashtable ();
\r
554 oldValues = new Hashtable ();
\r
556 keys.Add ("ProductID", "k_10");
\r
558 values.Add ("ProductID", "n_10");
\r
559 values.Add ("Name", "n_ColorTV");
\r
560 values.Add ("Description", "n_Beautifull");
\r
562 oldValues.Add ("ProductID", "ov_10");
\r
563 oldValues.Add ("Name", "ov_ColorTV");
\r
564 oldValues.Add ("Description", "ov_Beautifull");
\r
568 public void ExecuteUpdateWithOldValues ()
\r
570 SqlPoker sql = new SqlPoker ();
\r
571 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
572 sql.ProviderName = "System.Data.SqlClient";
\r
573 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
574 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
575 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
576 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
577 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
578 view.OldValuesParameterFormatString = "origin_{0}";
\r
579 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
580 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
581 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
582 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
583 Hashtable oldvalue = new Hashtable ();
\r
584 oldvalue.Add ("UserId", 2);
\r
585 view.Update (null, null, oldvalue);
\r
586 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
587 Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");
\r
588 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
589 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
590 Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
591 Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
592 Assert.AreEqual ("@origin_UserId", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");
\r
593 Assert.AreEqual (2, CustomEventParameterCollection[2].Value, "Parameter value#3");
\r
597 public void ExecuteUpdateWithOverwriteParameters ()
\r
599 SqlPoker sql = new SqlPoker ();
\r
600 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
601 sql.ProviderName = "System.Data.SqlClient";
\r
602 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
603 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
604 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
605 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
606 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
607 view.OldValuesParameterFormatString = "origin_{0}";
\r
608 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
609 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
610 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
611 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
612 Hashtable value = new Hashtable ();
\r
613 value.Add ("UserId", 2);
\r
614 view.Update (value, null, null);
\r
615 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
616 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
617 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
618 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
619 Assert.AreEqual ("@origin_UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
620 Assert.AreEqual (2, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
624 public void ExecuteUpdateWithMargeParameters ()
\r
626 SqlPoker sql = new SqlPoker ();
\r
627 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
628 sql.ProviderName = "System.Data.SqlClient";
\r
629 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
630 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
631 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
632 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
633 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
634 view.OldValuesParameterFormatString = "origin_{0}";
\r
635 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
636 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
637 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
638 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
639 Hashtable value = new Hashtable ();
\r
640 value.Add ("UserLName", "TestLName");
\r
641 view.Update (null, value, null);
\r
642 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
643 Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");
\r
644 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
645 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
646 Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
647 Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
648 Assert.AreEqual ("@UserLName", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");
\r
649 Assert.AreEqual ("TestLName", CustomEventParameterCollection[2].Value, "Parameter value#3");
\r
653 public void ExecuteUpdate_KeysValuesAndOldValues_OverwriteChanges ()
\r
655 SqlPoker sql = new SqlPoker ();
\r
656 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
657 sql.ProviderName = "System.Data.SqlClient";
\r
658 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
660 IDictionary values;
\r
661 IDictionary oldValues;
\r
662 InitializeView (view, out keys, out values, out oldValues);
\r
664 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
666 view.Update (keys, values, oldValues);
\r
668 Assert.IsNotNull (CustomEventParameterCollection, "ExecuteUpdate_KeysValuesAndOldValues_OverwriteChanges");
\r
669 string [] expectedParams = new string []
\r
671 "String:@ProductID=n_10",
\r
672 "String:@Name=n_ColorTV",
\r
673 "String:@Description=n_Beautifull",
\r
674 "String:@origin_ProductID=k_10"
\r
676 string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
\r
677 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");
\r
678 ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");
\r
682 public void ExecuteUpdate_KeysValuesAndOldValues_CompareAllValues ()
\r
684 SqlPoker sql = new SqlPoker ();
\r
685 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
686 sql.ProviderName = "System.Data.SqlClient";
\r
687 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
689 IDictionary values;
\r
690 IDictionary oldValues;
\r
691 InitializeView (view, out keys, out values, out oldValues);
\r
693 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
695 view.Update (keys, values, oldValues);
\r
697 Assert.IsNotNull (CustomEventParameterCollection, "ExecuteUpdate_KeysValuesAndOldValues_CompareAllValues");
\r
698 string [] expectedParams = new string []
\r
700 "String:@ProductID=n_10",
\r
701 "String:@Name=n_ColorTV",
\r
702 "String:@Description=n_Beautifull",
\r
703 "String:@origin_ProductID=ov_10",
\r
704 "String:@origin_Name=ov_ColorTV",
\r
705 "String:@origin_Description=ov_Beautifull",
\r
707 string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
\r
708 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");
\r
709 ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");
\r
712 void view_Updating (object sender, SqlDataSourceCommandEventArgs e)
\r
714 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
715 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
719 void view_Selecting (object sender, SqlDataSourceSelectingEventArgs e)
\r
721 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
722 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
726 void view_Inserting (object sender, SqlDataSourceCommandEventArgs e)
\r
728 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
729 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
733 void view_Deleting (object sender, SqlDataSourceCommandEventArgs e)
\r
735 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
736 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
740 private string FormatParameters (SqlParameterCollection sqlParameterCollection)
\r
742 StringBuilder sb = new StringBuilder ();
\r
743 foreach (SqlParameter p in sqlParameterCollection) {
\r
744 if (sb.Length > 0) {
\r
747 sb.AppendFormat ("{0}:{1}={2}", p.DbType, p.ParameterName, p.Value);
\r
749 return sb.ToString ();
\r
754 [ExpectedException (typeof (NotSupportedException))]
\r
755 public void ExecuteUpdateException ()
\r
757 SqlPoker sql = new SqlPoker ();
\r
758 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
759 sql.ProviderName = "System.Data.SqlClient";
\r
760 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
761 view.Update (null, null, null);
\r
765 [ExpectedException (typeof (NotSupportedException))]
\r
766 public void ExecuteDeleteException ()
\r
768 SqlPoker sql = new SqlPoker ();
\r
769 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
770 sql.ProviderName = "System.Data.SqlClient";
\r
771 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
772 view.Delete (null, null);
\r
776 [ExpectedException (typeof (NotSupportedException))]
\r
777 public void ExecuteInsertException ()
\r
779 SqlPoker sql = new SqlPoker ();
\r
780 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
781 sql.ProviderName = "System.Data.SqlClient";
\r
782 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
783 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
784 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
785 view.Insert (null);
\r
788 [Test] //ConflictOptions.CompareAllValues must include old value collection
\r
789 [ExpectedException (typeof (InvalidOperationException))]
\r
790 public void ExecuteUpdateWithOldValuesException ()
\r
792 SqlPoker sql = new SqlPoker ();
\r
793 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
794 sql.ProviderName = "System.Data.SqlClient";
\r
795 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
796 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
797 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
798 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
799 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
800 view.OldValuesParameterFormatString = "origin_{0}";
\r
801 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
802 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
803 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
804 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
805 view.Update (null, null, null);
\r
808 [Test] //ConflictOptions.CompareAllValues must include old value collection
\r
809 [ExpectedException (typeof (InvalidOperationException))]
\r
810 public void ExecuteDeleteWithOldValuesException ()
\r
812 SqlPoker sql = new SqlPoker ();
\r
813 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
814 sql.ProviderName = "System.Data.SqlClient";
\r
815 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
816 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
817 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
818 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
819 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
820 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
821 view.OldValuesParameterFormatString = "origin_{0}";
\r
822 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
823 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
824 Hashtable oldvalue = new Hashtable ();
\r
825 oldvalue.Add ("ProductID", 10);
\r
826 view.Delete (null, null);
\r