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
47 namespace MonoTests.System.Web.UI.WebControls
\r
49 class SqlPoker : SqlDataSource
\r
56 public object SaveToViewState ()
\r
58 return SaveViewState ();
\r
61 public void LoadFromViewState (object savedState)
\r
63 LoadViewState (savedState);
\r
66 public void DoRaiseDataSourceChangedEvent ()
\r
68 base.RaiseDataSourceChangedEvent(new EventArgs());
\r
72 class CustomSqlDataSourceView : SqlDataSourceView
\r
74 public CustomSqlDataSourceView (SqlDataSource owner,string name,HttpContext context):base(owner,name,context)
\r
78 public new int ExecuteDelete (global::System.Collections.IDictionary keys, global::System.Collections.IDictionary oldValues)
\r
80 return base.ExecuteDelete (keys, oldValues);
\r
83 public new int ExecuteInsert (global::System.Collections.IDictionary values)
\r
85 return base.ExecuteInsert (values);
\r
88 public new global::System.Collections.IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)
\r
90 return base.ExecuteSelect (arguments);
\r
93 public new int ExecuteUpdate (global::System.Collections.IDictionary keys, global::System.Collections.IDictionary values, global::System.Collections.IDictionary oldValues)
\r
95 return base.ExecuteUpdate (keys, values, oldValues);
\r
102 public class SqlDataSourceTest
\r
105 public void SetUp ()
\r
107 SqlDataSourceTest.CustomEventParameterCollection = null;
\r
108 SqlDataSourceTest.PassedParameters = "";
\r
112 public void Defaults ()
\r
114 SqlPoker sql = new SqlPoker ();
\r
115 Assert.AreEqual ("", sql.CacheKeyDependency, "A1");
\r
116 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A2");
\r
117 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A3");
\r
118 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");
\r
119 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A5");
\r
120 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A6");
\r
121 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A7");
\r
122 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A8");
\r
123 Assert.AreEqual ("", sql.SqlCacheDependency, "A9");
\r
124 Assert.AreEqual ("", sql.SortParameterName, "A10");
\r
125 Assert.AreEqual (0, sql.CacheDuration, "A11");
\r
126 Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "A12");
\r
127 Assert.IsFalse (sql.EnableCaching, "A13");
\r
128 Assert.AreEqual ("", sql.ProviderName, "A14");
\r
129 Assert.AreEqual ("", sql.ConnectionString, "A15");
\r
130 Assert.AreEqual (SqlDataSourceMode.DataSet, sql.DataSourceMode, "A16");
\r
131 Assert.AreEqual ("", sql.DeleteCommand, "A17");
\r
132 Assert.IsNotNull (sql.DeleteParameters, "A18");
\r
133 Assert.AreEqual (0, sql.DeleteParameters.Count, "A18.1");
\r
134 Assert.IsNotNull (sql.FilterParameters, "A19");
\r
135 Assert.AreEqual (0, sql.FilterParameters.Count, "A19.1");
\r
136 Assert.AreEqual ("", sql.InsertCommand, "A20");
\r
137 Assert.IsNotNull (sql.InsertParameters, "A21");
\r
138 Assert.AreEqual (0, sql.InsertParameters.Count, "A21.1");
\r
139 Assert.AreEqual ("", sql.SelectCommand, "A22");
\r
140 Assert.IsNotNull (sql.SelectParameters, "A23");
\r
141 Assert.AreEqual (0, sql.SelectParameters.Count, "A23.1");
\r
142 Assert.AreEqual ("", sql.UpdateCommand, "A24");
\r
143 Assert.IsNotNull (sql.UpdateParameters, "A25");
\r
144 Assert.AreEqual (0, sql.UpdateParameters.Count, "A25.1");
\r
145 Assert.AreEqual ("", sql.FilterExpression, "A26");
\r
149 public void ViewState ()
\r
151 SqlPoker sql = new SqlPoker ();
\r
153 sql.CacheKeyDependency = "hi";
\r
154 sql.CancelSelectOnNullParameter = false;
\r
155 sql.ConflictDetection = ConflictOptions.CompareAllValues;
\r
156 sql.DeleteCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
157 sql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
158 sql.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
159 sql.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
160 sql.OldValuesParameterFormatString = "{1}";
\r
161 sql.SqlCacheDependency = "hi";
\r
162 sql.SortParameterName = "hi";
\r
163 sql.CacheDuration = 1;
\r
164 sql.CacheExpirationPolicy = DataSourceCacheExpiry.Sliding;
\r
165 sql.EnableCaching = true;
\r
166 sql.DataSourceMode = SqlDataSourceMode.DataReader;
\r
167 sql.DeleteCommand = "DELETE foo";
\r
168 sql.InsertCommand = "INSERT foo";
\r
169 sql.SelectCommand = "SELECT foo";
\r
170 sql.UpdateCommand = "UPDATE foo";
\r
171 sql.FilterExpression = "hi";
\r
173 Assert.AreEqual ("hi", sql.CacheKeyDependency, "A1");
\r
174 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A2");
\r
175 Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A3");
\r
176 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.DeleteCommandType, "A4");
\r
177 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.InsertCommandType, "A5");
\r
178 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.SelectCommandType, "A6");
\r
179 Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.UpdateCommandType, "A7");
\r
180 Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");
\r
181 Assert.AreEqual ("hi", sql.SqlCacheDependency, "A9");
\r
182 Assert.AreEqual ("hi", sql.SortParameterName, "A10");
\r
183 Assert.AreEqual (1, sql.CacheDuration, "A11");
\r
184 Assert.AreEqual (DataSourceCacheExpiry.Sliding, sql.CacheExpirationPolicy, "A12");
\r
185 Assert.IsTrue (sql.EnableCaching, "A13");
\r
186 Assert.AreEqual (SqlDataSourceMode.DataReader, sql.DataSourceMode, "A16");
\r
187 Assert.AreEqual ("DELETE foo", sql.DeleteCommand, "A17");
\r
188 Assert.AreEqual ("INSERT foo", sql.InsertCommand, "A20");
\r
189 Assert.AreEqual ("SELECT foo", sql.SelectCommand, "A22");
\r
190 Assert.AreEqual ("UPDATE foo", sql.UpdateCommand, "A24");
\r
191 Assert.AreEqual ("hi", sql.FilterExpression, "A26");
\r
193 object state = sql.SaveToViewState ();
\r
194 Assert.IsNull (state, "ViewState is null");
\r
196 sql = new SqlPoker ();
\r
197 sql.LoadFromViewState (state);
\r
199 Assert.AreEqual ("", sql.CacheKeyDependency, "B1");
\r
200 Assert.IsTrue (sql.CancelSelectOnNullParameter, "B2");
\r
201 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "B3");
\r
202 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B4");
\r
203 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "B5");
\r
204 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "B6");
\r
205 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B7");
\r
206 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "B8");
\r
207 Assert.AreEqual ("", sql.SqlCacheDependency, "B9");
\r
208 Assert.AreEqual ("", sql.SortParameterName, "B10");
\r
209 Assert.AreEqual (0, sql.CacheDuration, "B11");
\r
210 Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "B12");
\r
211 Assert.IsFalse (sql.EnableCaching, "B13");
\r
212 Assert.AreEqual (SqlDataSourceMode.DataSet, sql.DataSourceMode, "B16");
\r
213 Assert.AreEqual ("", sql.DeleteCommand, "B17");
\r
214 Assert.IsNotNull (sql.DeleteParameters, "B18");
\r
215 Assert.AreEqual (0, sql.DeleteParameters.Count, "B18.1");
\r
216 Assert.IsNotNull (sql.FilterParameters, "B19");
\r
217 Assert.AreEqual (0, sql.FilterParameters.Count, "B19.1");
\r
218 Assert.AreEqual ("", sql.InsertCommand, "B20");
\r
219 Assert.IsNotNull (sql.InsertParameters, "B21");
\r
220 Assert.AreEqual (0, sql.InsertParameters.Count, "B21.1");
\r
221 Assert.AreEqual ("", sql.SelectCommand, "B22");
\r
222 Assert.IsNotNull (sql.SelectParameters, "B23");
\r
223 Assert.AreEqual (0, sql.SelectParameters.Count, "B23.1");
\r
224 Assert.AreEqual ("", sql.UpdateCommand, "B24");
\r
225 Assert.IsNotNull (sql.UpdateParameters, "B25");
\r
226 Assert.AreEqual (0, sql.UpdateParameters.Count, "B25.1");
\r
227 Assert.AreEqual ("", sql.FilterExpression, "B26");
\r
230 // Help parameter for Asserts
\r
231 private static SqlParameterCollection CustomEventParameterCollection;
\r
232 private static string PassedParameters;
\r
235 public void ReturnValueParameter ()
\r
237 SqlPoker sql = new SqlPoker ();
\r
238 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
239 sql.ProviderName = "System.Data.SqlClient";
\r
240 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
241 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
242 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
243 view.OldValuesParameterFormatString = "origin_{0}";
\r
245 view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "10"));
\r
246 Parameter myReturn = new Parameter ("myReturn", TypeCode.Int32);
\r
247 myReturn.Direction = ParameterDirection.ReturnValue;
\r
248 view.SelectParameters.Add (myReturn);
\r
250 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
\r
251 view.Select (new DataSourceSelectArguments ());
\r
253 Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");
\r
254 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
255 Assert.IsNotNull (CustomEventParameterCollection ["@myReturn"], "Parameter name");
\r
259 public void ExecuteSelect ()
\r
261 SqlPoker sql = new SqlPoker();
\r
262 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
263 sql.ProviderName = "System.Data.SqlClient";
\r
264 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
265 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
266 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
267 view.OldValuesParameterFormatString = "origin_{0}";
\r
269 view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "10"));
\r
270 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
\r
271 view.Select (new DataSourceSelectArguments ());
\r
272 Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");
\r
273 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
274 Assert.AreEqual ("@ProductID", CustomEventParameterCollection[0].ParameterName, "Parameter name");
\r
275 Assert.AreEqual (10, CustomEventParameterCollection[0].Value, "Parameter value");
\r
279 public void ExecuteSelect2 ()
\r
281 SqlPoker sql = new SqlPoker ();
\r
282 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
283 sql.ProviderName = "System.Data.SqlClient";
\r
284 sql.DataSourceMode = SqlDataSourceMode.DataReader;
\r
285 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
286 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
287 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
288 view.OldValuesParameterFormatString = "origin_{0}";
\r
290 view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "10"));
\r
291 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
\r
292 view.Select (new DataSourceSelectArguments ());
\r
293 Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");
\r
294 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
295 Assert.AreEqual ("@ProductID", CustomEventParameterCollection [0].ParameterName, "Parameter name");
\r
296 Assert.AreEqual (10, CustomEventParameterCollection [0].Value, "Parameter value");
\r
300 public void ExecuteUpdate ()
\r
302 SqlPoker sql = new SqlPoker ();
\r
303 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
304 sql.ProviderName = "System.Data.SqlClient";
\r
305 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
306 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
307 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
308 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
309 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
310 view.OldValuesParameterFormatString = "origin_{0}";
\r
311 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
312 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
313 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
314 view.Update (null, null, null);
\r
315 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
316 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
317 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
318 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
319 Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
320 Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
324 public void ExecuteInsert ()
\r
326 SqlPoker sql = new SqlPoker ();
\r
327 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
328 sql.ProviderName = "System.Data.SqlClient";
\r
329 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
330 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
331 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
332 view.InsertCommandType = SqlDataSourceCommandType.Text;
\r
333 view.InsertCommand = "INSERT INTO Table1 (UserId, UserName) VALUES ({0},{1})";
\r
334 view.InsertParameters.Add (new Parameter ("UserId", TypeCode.Int32, "15"));
\r
335 view.InsertParameters.Add (new Parameter ("UserName", TypeCode.String, "newuser"));
\r
336 view.OldValuesParameterFormatString = "origin_{0}";
\r
337 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
\r
338 view.Insert (null);
\r
339 Assert.IsNotNull (CustomEventParameterCollection, "Insert event not fired");
\r
340 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
341 Assert.AreEqual ("@UserId", CustomEventParameterCollection[0].ParameterName, "Parameter name#2");
\r
342 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#2");
\r
343 Assert.AreEqual ("@UserName", CustomEventParameterCollection[1].ParameterName, "Parameter name#1");
\r
344 Assert.AreEqual ("newuser", CustomEventParameterCollection[1].Value, "Parameter value#1");
\r
348 public void ExecuteInsertWithCollection ()
\r
350 SqlPoker sql = new SqlPoker ();
\r
351 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
352 sql.ProviderName = "System.Data.SqlClient";
\r
353 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
354 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
355 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
356 view.InsertCommandType = SqlDataSourceCommandType.Text;
\r
357 view.InsertCommand = "INSERT INTO products (UserId, UserName) VALUES ({0},{1})";
\r
358 view.InsertParameters.Add (new Parameter ("UserId", TypeCode.Int32, "15"));
\r
359 view.InsertParameters.Add (new Parameter ("UserName", TypeCode.String, "newuser"));
\r
360 view.OldValuesParameterFormatString = "origin_{0}";
\r
361 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
\r
362 Hashtable value = new Hashtable ();
\r
363 value.Add ("Description", "TestDescription");
\r
364 view.Insert (value);
\r
365 Assert.IsNotNull (CustomEventParameterCollection, "Insert event not fired");
\r
366 Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");
\r
367 Assert.AreEqual ("@UserId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
368 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
369 Assert.AreEqual ("@UserName", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
370 Assert.AreEqual ("newuser", CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
371 Assert.AreEqual ("@Description", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");
\r
372 Assert.AreEqual ("TestDescription", CustomEventParameterCollection[2].Value, "Parameter value#3");
\r
376 public void ExecuteDelete ()
\r
378 SqlPoker sql = new SqlPoker ();
\r
379 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
380 sql.ProviderName = "System.Data.SqlClient";
\r
381 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
382 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
383 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
384 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
385 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
386 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
387 view.OldValuesParameterFormatString = "origin_{0}";
\r
388 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
389 view.Delete (null, null);
\r
390 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
391 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
392 Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
393 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
397 public void ExecuteDeleteWithOldValues ()
\r
399 SqlPoker sql = new SqlPoker ();
\r
400 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
401 sql.ProviderName = "System.Data.SqlClient";
\r
402 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
403 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
404 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
405 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
406 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
407 view.DeleteParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "15"));
\r
408 view.OldValuesParameterFormatString = "origin_{0}";
\r
409 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
410 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
411 Hashtable oldvalue = new Hashtable ();
\r
412 oldvalue.Add ("ProductID", 10);
\r
413 view.Delete (null,oldvalue );
\r
414 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
415 Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");
\r
416 Assert.AreEqual ("@origin_ProductID", CustomEventParameterCollection[0].ParameterName, "Parameter name#2");
\r
417 Assert.AreEqual (10, CustomEventParameterCollection[0].Value, "Parameter value#2");
\r
421 public void ExecuteDeleteWithMergedOldValues ()
\r
423 SqlPoker sql = new SqlPoker ();
\r
424 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
425 sql.ProviderName = "System.Data.SqlClient";
\r
426 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
427 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
428 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
429 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
430 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
431 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
432 view.OldValuesParameterFormatString = "origin_{0}";
\r
433 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
434 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
435 Hashtable oldvalue = new Hashtable ();
\r
436 oldvalue.Add ("Desc", "Description");
\r
437 view.Delete (null, oldvalue);
\r
438 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
439 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
440 Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
441 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
442 Assert.AreEqual ("@origin_Desc", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
443 Assert.AreEqual ("Description", CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
447 public void ExecuteDeleteWithMergedValues ()
\r
449 SqlPoker sql = new SqlPoker ();
\r
450 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
451 sql.ProviderName = "System.Data.SqlClient";
\r
452 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
453 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
454 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
455 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
456 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
457 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
458 view.OldValuesParameterFormatString = "origin_{0}";
\r
459 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
460 Hashtable value = new Hashtable ();
\r
461 value.Add ("Desc", "Description");
\r
462 view.Delete (value, null);
\r
463 Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");
\r
464 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
465 Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
466 Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
467 Assert.AreEqual ("@origin_Desc", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
468 Assert.AreEqual ("Description", CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
472 public void ExecuteDelete_KeysAndOldValues_OverwriteChanges ()
\r
474 SqlPoker sql = new SqlPoker ();
\r
475 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
476 sql.ProviderName = "System.Data.SqlClient";
\r
477 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
479 IDictionary values;
\r
480 IDictionary oldValues;
\r
481 InitializeView (view, out keys, out values, out oldValues);
\r
483 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
485 view.Delete (keys, oldValues);
\r
487 Assert.IsNotNull (CustomEventParameterCollection, "KeysAndOldValues_OverwriteChanges");
\r
488 Assert.AreEqual ("String:@origin_ProductID=k_10", PassedParameters, "KeysAndOldValues_OverwriteChanges Values");
\r
492 public void ExecuteDelete_KeysAndOldValues_CompareAllValues ()
\r
494 SqlPoker sql = new SqlPoker ();
\r
495 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
496 sql.ProviderName = "System.Data.SqlClient";
\r
497 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
499 IDictionary values;
\r
500 IDictionary oldValues;
\r
501 InitializeView (view, out keys, out values, out oldValues);
\r
503 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
505 view.Delete (keys, oldValues);
\r
507 Assert.IsNotNull (CustomEventParameterCollection, "KeysAndOldValues_CompareAllValues");
\r
508 Assert.AreEqual ("String:@origin_ProductID=ov_10, String:@origin_Description=ov_Beautifull, String:@origin_Name=ov_ColorTV", PassedParameters, "KeysAndOldValues_CompareAllValues Values");
\r
512 public void ExecuteDelete_KeysAndOldValues_CompareAllValues2 ()
\r
514 SqlPoker sql = new SqlPoker ();
\r
515 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
516 sql.ProviderName = "System.Data.SqlClient";
\r
517 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
519 IDictionary values;
\r
520 IDictionary oldValues;
\r
521 InitializeView (view, out keys, out values, out oldValues);
\r
522 view.DeleteParameters.Add ("origin_ProductID", "po_10");
\r
524 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
526 view.Delete (keys, oldValues);
\r
528 Assert.IsNotNull (CustomEventParameterCollection, "ExecuteDelete_KeysAndOldValues_CompareAllValues2");
\r
529 string [] expectedParams = new string []
\r
531 "String:@origin_ProductID=ov_10",
\r
532 "String:@origin_Description=ov_Beautifull",
\r
533 "String:@origin_Name=ov_ColorTV"
\r
535 string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
\r
536 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");
\r
537 ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");
\r
540 private static void ValidatePassedParams (string [] expectedParams, string [] actualValues, string errorMessageFormat)
\r
542 foreach (string eps in expectedParams) {
\r
543 bool found = false;
\r
544 foreach (string aps in actualValues) {
\r
550 Assert.IsTrue (found, String.Format (errorMessageFormat, eps));
\r
554 private void InitializeView (CustomSqlDataSourceView view, out IDictionary keys, out IDictionary values, out IDictionary oldValues)
\r
556 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
557 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
558 view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_10"));
\r
559 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
\r
561 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
562 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
563 view.DeleteParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_10"));
\r
564 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
566 view.InsertCommandType = SqlDataSourceCommandType.Text;
\r
567 view.InsertCommand = "INSERT INTO products (ProductID, Name, Description) VALUES (@ProductID, @Name, @Description)";
\r
568 view.InsertParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_15"));
\r
569 view.InsertParameters.Add (new Parameter ("Name", TypeCode.String, "p_NewProduct"));
\r
570 view.InsertParameters.Add (new Parameter ("Description", TypeCode.String, "p_Description"));
\r
571 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
\r
573 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
574 view.UpdateCommand = "UPDATE products SET Name = @Name, Description = @Description WHERE ProductID = @ProductID";
\r
575 view.UpdateParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_15"));
\r
576 view.UpdateParameters.Add (new Parameter ("Name", TypeCode.String, "p_UpdatedProduct"));
\r
577 view.UpdateParameters.Add (new Parameter ("Description", TypeCode.String, "p_UpdatedDescription"));
\r
578 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
580 view.OldValuesParameterFormatString = "origin_{0}";
\r
582 keys = new Hashtable ();
\r
583 values = new Hashtable ();
\r
584 oldValues = new Hashtable ();
\r
586 keys.Add ("ProductID", "k_10");
\r
588 values.Add ("ProductID", "n_10");
\r
589 values.Add ("Name", "n_ColorTV");
\r
590 values.Add ("Description", "n_Beautifull");
\r
592 oldValues.Add ("ProductID", "ov_10");
\r
593 oldValues.Add ("Name", "ov_ColorTV");
\r
594 oldValues.Add ("Description", "ov_Beautifull");
\r
598 public void ExecuteUpdateWithOldValues ()
\r
600 SqlPoker sql = new SqlPoker ();
\r
601 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
602 sql.ProviderName = "System.Data.SqlClient";
\r
603 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
604 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
605 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
606 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
607 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
608 view.OldValuesParameterFormatString = "origin_{0}";
\r
609 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
610 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
611 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
612 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
613 Hashtable oldvalue = new Hashtable ();
\r
614 oldvalue.Add ("UserId", 2);
\r
615 view.Update (null, null, oldvalue);
\r
616 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
617 Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");
\r
618 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
619 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
620 Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
621 Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
622 Assert.AreEqual ("@origin_UserId", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");
\r
623 Assert.AreEqual (2, CustomEventParameterCollection[2].Value, "Parameter value#3");
\r
627 public void ExecuteUpdateWithOverwriteParameters ()
\r
629 SqlPoker sql = new SqlPoker ();
\r
630 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
631 sql.ProviderName = "System.Data.SqlClient";
\r
632 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
633 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
634 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
635 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
636 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
637 view.OldValuesParameterFormatString = "origin_{0}";
\r
638 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
639 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
640 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
641 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
642 Hashtable value = new Hashtable ();
\r
643 value.Add ("UserId", 2);
\r
644 view.Update (value, null, null);
\r
645 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
646 Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");
\r
647 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
648 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
649 Assert.AreEqual ("@origin_UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
650 Assert.AreEqual (2, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
654 public void ExecuteUpdateWithMargeParameters ()
\r
656 SqlPoker sql = new SqlPoker ();
\r
657 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
658 sql.ProviderName = "System.Data.SqlClient";
\r
659 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
660 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
661 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
662 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
663 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
664 view.OldValuesParameterFormatString = "origin_{0}";
\r
665 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
666 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
667 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
668 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
669 Hashtable value = new Hashtable ();
\r
670 value.Add ("UserLName", "TestLName");
\r
671 view.Update (null, value, null);
\r
672 Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");
\r
673 Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");
\r
674 Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");
\r
675 Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");
\r
676 Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");
\r
677 Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");
\r
678 Assert.AreEqual ("@UserLName", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");
\r
679 Assert.AreEqual ("TestLName", CustomEventParameterCollection[2].Value, "Parameter value#3");
\r
683 public void ExecuteUpdate_KeysValuesAndOldValues_OverwriteChanges ()
\r
685 SqlPoker sql = new SqlPoker ();
\r
686 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
687 sql.ProviderName = "System.Data.SqlClient";
\r
688 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
690 IDictionary values;
\r
691 IDictionary oldValues;
\r
692 InitializeView (view, out keys, out values, out oldValues);
\r
694 view.ConflictDetection = ConflictOptions.OverwriteChanges;
\r
696 view.Update (keys, values, oldValues);
\r
698 Assert.IsNotNull (CustomEventParameterCollection, "ExecuteUpdate_KeysValuesAndOldValues_OverwriteChanges");
\r
699 string [] expectedParams = new string []
\r
701 "String:@ProductID=n_10",
\r
702 "String:@Name=n_ColorTV",
\r
703 "String:@Description=n_Beautifull",
\r
704 "String:@origin_ProductID=k_10"
\r
706 string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
\r
707 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");
\r
708 ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");
\r
712 public void ExecuteUpdate_KeysValuesAndOldValues_CompareAllValues ()
\r
714 SqlPoker sql = new SqlPoker ();
\r
715 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
716 sql.ProviderName = "System.Data.SqlClient";
\r
717 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
719 IDictionary values;
\r
720 IDictionary oldValues;
\r
721 InitializeView (view, out keys, out values, out oldValues);
\r
723 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
725 view.Update (keys, values, oldValues);
\r
727 Assert.IsNotNull (CustomEventParameterCollection, "ExecuteUpdate_KeysValuesAndOldValues_CompareAllValues");
\r
728 string [] expectedParams = new string []
\r
730 "String:@ProductID=n_10",
\r
731 "String:@Name=n_ColorTV",
\r
732 "String:@Description=n_Beautifull",
\r
733 "String:@origin_ProductID=ov_10",
\r
734 "String:@origin_Name=ov_ColorTV",
\r
735 "String:@origin_Description=ov_Beautifull",
\r
737 string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
\r
738 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");
\r
739 ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");
\r
742 void view_Updating (object sender, SqlDataSourceCommandEventArgs e)
\r
744 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
745 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
749 void view_Selecting (object sender, SqlDataSourceSelectingEventArgs e)
\r
751 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
752 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
756 void view_Inserting (object sender, SqlDataSourceCommandEventArgs e)
\r
758 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
759 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
763 void view_Deleting (object sender, SqlDataSourceCommandEventArgs e)
\r
765 SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;
\r
766 SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);
\r
770 private string FormatParameters (SqlParameterCollection sqlParameterCollection)
\r
772 StringBuilder sb = new StringBuilder ();
\r
773 foreach (SqlParameter p in sqlParameterCollection) {
\r
774 if (sb.Length > 0) {
\r
777 sb.AppendFormat ("{0}:{1}={2}", p.DbType, p.ParameterName, p.Value);
\r
779 return sb.ToString ();
\r
782 #region help_results
\r
785 private static int _testcounter;
\r
786 private static bool _eventChecker;
\r
787 private eventAssert ()
\r
792 public static bool eventChecker
\r
796 throw new NotImplementedException ();
\r
800 _eventChecker = value;
\r
804 static private void testAdded ()
\r
807 _eventChecker = false;
\r
810 public static void IsTrue (string msg)
\r
812 Assert.IsTrue (_eventChecker, msg + "#" + _testcounter);
\r
817 public static void IsFalse (string msg)
\r
819 Assert.IsFalse (_eventChecker, msg + "#" + _testcounter);
\r
826 [Category ("NotWorking")]
\r
827 public void SqlDataSource_DataSourceViewChanged ()
\r
829 SqlPoker sql = new SqlPoker ();
\r
830 ((IDataSource) sql).DataSourceChanged += new EventHandler (SqlDataSourceTest_DataSourceChanged);
\r
832 sql.DoRaiseDataSourceChangedEvent ();
\r
833 eventAssert.IsTrue ("SqlDataSourceView"); // Assert include counter the first is zero
\r
834 sql.CacheKeyDependency = "hi";
\r
835 eventAssert.IsFalse ("SqlDataSourceView");
\r
836 sql.CancelSelectOnNullParameter = false;
\r
837 eventAssert.IsFalse ("SqlDataSourceView");
\r
838 sql.ConflictDetection = ConflictOptions.CompareAllValues;
\r
839 eventAssert.IsFalse ("SqlDataSourceView");
\r
840 sql.DeleteCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
841 eventAssert.IsFalse ("SqlDataSourceView");
\r
842 sql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
843 eventAssert.IsFalse ("SqlDataSourceView");
\r
844 sql.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
845 eventAssert.IsFalse ("SqlDataSourceView");
\r
846 sql.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;
\r
847 eventAssert.IsFalse ("SqlDataSourceView");
\r
848 sql.OldValuesParameterFormatString = "{1}";
\r
849 eventAssert.IsFalse ("SqlDataSourceView");
\r
850 sql.SqlCacheDependency = "hi";
\r
851 eventAssert.IsFalse ("SqlDataSourceView");
\r
852 sql.SortParameterName = "hi";
\r
853 eventAssert.IsFalse ("SqlDataSourceView");
\r
854 sql.CacheDuration = 1;
\r
855 eventAssert.IsFalse ("SqlDataSourceView");
\r
856 sql.CacheExpirationPolicy = DataSourceCacheExpiry.Sliding;
\r
857 eventAssert.IsFalse ("SqlDataSourceView");
\r
858 sql.EnableCaching = true;
\r
859 eventAssert.IsFalse ("SqlDataSourceView");
\r
860 sql.DataSourceMode = SqlDataSourceMode.DataReader;
\r
861 eventAssert.IsTrue ("SqlDataSourceView");
\r
862 sql.DeleteCommand = "DELETE foo";
\r
863 eventAssert.IsFalse ("SqlDataSourceView");
\r
864 sql.InsertCommand = "INSERT foo";
\r
865 eventAssert.IsFalse ("SqlDataSourceView");
\r
866 sql.SelectCommand = "SELECT foo";
\r
867 eventAssert.IsFalse ("SqlDataSourceView");
\r
868 sql.UpdateCommand = "UPDATE foo";
\r
869 eventAssert.IsFalse ("SqlDataSourceView");
\r
870 sql.FilterExpression = "hi";
\r
871 eventAssert.IsFalse ("SqlDataSourceView");
\r
874 void SqlDataSourceTest_DataSourceChanged (object sender, EventArgs e)
\r
876 eventAssert.eventChecker = true;
\r
881 [ExpectedException (typeof (NotSupportedException))]
\r
882 public void ExecuteUpdateException ()
\r
884 SqlPoker sql = new SqlPoker ();
\r
885 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
886 sql.ProviderName = "System.Data.SqlClient";
\r
887 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
888 view.Update (null, null, null);
\r
892 [ExpectedException (typeof (NotSupportedException))]
\r
893 public void ExecuteDeleteException ()
\r
895 SqlPoker sql = new SqlPoker ();
\r
896 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
897 sql.ProviderName = "System.Data.SqlClient";
\r
898 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
899 view.Delete (null, null);
\r
903 [ExpectedException (typeof (NotSupportedException))]
\r
904 public void ExecuteInsertException ()
\r
906 SqlPoker sql = new SqlPoker ();
\r
907 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
908 sql.ProviderName = "System.Data.SqlClient";
\r
909 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
910 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
911 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
912 view.Insert (null);
\r
915 [Test] //ConflictOptions.CompareAllValues must include old value collection
\r
916 [ExpectedException (typeof (InvalidOperationException))]
\r
917 public void ExecuteUpdateWithOldValuesException ()
\r
919 SqlPoker sql = new SqlPoker ();
\r
920 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
921 sql.ProviderName = "System.Data.SqlClient";
\r
922 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
923 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
924 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
925 view.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
926 view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";
\r
927 view.OldValuesParameterFormatString = "origin_{0}";
\r
928 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
929 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
\r
930 view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));
\r
931 view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));
\r
932 view.Update (null, null, null);
\r
935 [Test] //ConflictOptions.CompareAllValues must include old value collection
\r
936 [ExpectedException (typeof (InvalidOperationException))]
\r
937 public void ExecuteDeleteWithOldValuesException ()
\r
939 SqlPoker sql = new SqlPoker ();
\r
940 sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
\r
941 sql.ProviderName = "System.Data.SqlClient";
\r
942 CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);
\r
943 view.SelectCommandType = SqlDataSourceCommandType.Text;
\r
944 view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";
\r
945 view.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
946 view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";
\r
947 view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));
\r
948 view.OldValuesParameterFormatString = "origin_{0}";
\r
949 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
950 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
\r
951 Hashtable oldvalue = new Hashtable ();
\r
952 oldvalue.Add ("ProductID", 10);
\r
953 view.Delete (null, null);
\r