2 // Tests for System.Web.UI.WebControls.SqlDataSourceView
5 // Chris Toshok (toshok@novell.com)
9 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using NUnit.Framework;
34 using System.Configuration;
35 using System.Data.Common;
37 using System.Globalization;
40 using System.Web.UI.WebControls;
41 using System.Collections;
42 using System.Data.SqlClient;
45 namespace MonoTests.System.Web.UI.WebControls
47 class SqlViewPoker : SqlDataSourceView {
48 public SqlViewPoker (SqlDataSource ds, string name, HttpContext context)
49 : base (ds, name, context)
54 public object SaveToViewState ()
56 return SaveViewState ();
59 public void LoadFromViewState (object savedState)
61 LoadViewState (savedState);
64 public void DoOnDataSourceViewChanged ()
66 base.OnDataSourceViewChanged (new EventArgs());
71 public class SqlDataSourceViewTest
80 public void Defaults ()
82 SqlDataSource ds = new SqlDataSource ();
83 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
85 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
86 Assert.IsFalse (sql.CanDelete,"A2");
87 Assert.IsFalse (sql.CanInsert,"A3");
88 Assert.IsFalse (sql.CanPage,"A4");
89 Assert.IsFalse (sql.CanRetrieveTotalRowCount,"A5");
90 Assert.IsTrue (sql.CanSort,"A6");
91 Assert.IsFalse (sql.CanUpdate,"A7");
92 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A8");
93 Assert.AreEqual ("", sql.DeleteCommand, "A9");
94 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A10");
95 Assert.IsNotNull (sql.DeleteParameters, "A11");
96 Assert.AreEqual (0, sql.DeleteParameters.Count, "A12");
97 Assert.AreEqual ("", sql.FilterExpression, "A13");
98 Assert.IsNotNull (sql.FilterParameters, "A14");
99 Assert.AreEqual (0, sql.FilterParameters.Count, "A15");
100 Assert.AreEqual ("", sql.InsertCommand, "A16");
101 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A17");
102 Assert.IsNotNull (sql.InsertParameters, "A18");
103 Assert.AreEqual (0, sql.InsertParameters.Count, "A19");
104 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A20");
105 Assert.AreEqual ("", sql.SelectCommand, "A21");
106 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A22");
107 Assert.IsNotNull (sql.SelectParameters, "A23");
108 Assert.AreEqual (0, sql.SelectParameters.Count, "A24");
109 Assert.AreEqual ("", sql.SortParameterName, "A25");
110 Assert.AreEqual ("", sql.UpdateCommand, "A26");
111 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A27");
112 Assert.IsNotNull (sql.UpdateParameters, "A28");
113 Assert.AreEqual (0, sql.UpdateParameters.Count, "A29");
117 public void ViewStateSupport ()
119 SqlDataSource ds = new SqlDataSource ();
120 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
122 ds.ID = "SqlDataSource1";
123 ds.SelectCommand = "Select";
125 Parameter p1 = new Parameter ("test", TypeCode.String);
127 Assert.IsTrue (((IStateManager) view).IsTrackingViewState, "IsTrackingViewState");
128 Assert.IsTrue (((IStateManager) view.FilterParameters).IsTrackingViewState, "FilterParameters.IsTrackingViewState");
129 Assert.IsTrue (((IStateManager) view.SelectParameters).IsTrackingViewState, "SelecteParameters.IsTrackingViewState");
130 Assert.IsFalse (((IStateManager) view.DeleteParameters).IsTrackingViewState, "DeleteParameters.IsTrackingViewState");
131 Assert.IsFalse (((IStateManager) view.InsertParameters).IsTrackingViewState, "InsertParameters.IsTrackingViewState");
132 Assert.IsFalse (((IStateManager) view.UpdateParameters).IsTrackingViewState, "UpdateParameters.IsTrackingViewState");
134 object state = ((IStateManager) view).SaveViewState ();
135 Assert.IsNull (state, "view ViewState not null");
137 view.DeleteParameters.Add (p1);
138 view.InsertParameters.Add (p1);
139 //view.UpdateParameters.Add (p1);
141 state = ((IStateManager) view).SaveViewState ();
142 Assert.IsNull (state, "view ViewState not null");
144 view.FilterParameters.Add (p1);
145 //view.SelectParameters.Add (p1);
147 state = ((IStateManager) view).SaveViewState ();
148 Assert.IsNotNull (state, "view ViewState not null");
150 state = ((IStateManager) view.FilterParameters).SaveViewState ();
151 Assert.IsNotNull (state, "FilterParamenters ViewState not null");
152 state = ((IStateManager) view.SelectParameters).SaveViewState ();
153 Assert.IsNull (state, "SelectParameters ViewState not null");
155 state = ((IStateManager) view.DeleteParameters).SaveViewState ();
156 Assert.IsNotNull (state, "DeleteParameters ViewState not null");
157 state = ((IStateManager) view.InsertParameters).SaveViewState ();
158 Assert.IsNotNull (state, "InsertParameters ViewState not null");
159 state = ((IStateManager) view.UpdateParameters).SaveViewState ();
160 Assert.IsNull (state, "UpdateParameters ViewState not null");
164 public void ViewState ()
166 SqlDataSource ds = new SqlDataSource ();
167 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
169 /* XXX test parameters */
171 sql.CancelSelectOnNullParameter = false;
172 sql.ConflictDetection = ConflictOptions.CompareAllValues;
173 sql.DeleteCommandType = SqlDataSourceCommandType.Text;
174 sql.DeleteCommand = "delete command";
175 sql.FilterExpression = "filter expression";
176 sql.InsertCommand = "insert command";
177 sql.InsertCommandType = SqlDataSourceCommandType.Text;
178 sql.OldValuesParameterFormatString = "{1}";
179 sql.SelectCommand = "select command";
180 sql.SelectCommandType = SqlDataSourceCommandType.Text;
181 sql.SortParameterName = "sort parameter";
182 sql.UpdateCommand = "update command";
183 sql.UpdateCommandType = SqlDataSourceCommandType.Text;
185 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A1");
186 Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A2");
187 Assert.AreEqual ("delete command", sql.DeleteCommand, "A3");
188 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");
189 Assert.AreEqual ("filter expression", sql.FilterExpression, "A5");
190 Assert.AreEqual ("insert command", sql.InsertCommand, "A6");
191 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A7");
192 Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");
193 Assert.AreEqual ("select command", sql.SelectCommand, "A9");
194 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A10");
195 Assert.AreEqual ("sort parameter", sql.SortParameterName, "A11");
196 Assert.AreEqual ("update command", sql.UpdateCommand, "A12");
197 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A13");
199 object state = sql.SaveToViewState ();
200 Assert.IsNull (state, "ViewState is null");
202 sql = new SqlViewPoker (ds, "DefaultView", null);
203 sql.LoadFromViewState (state);
205 Assert.IsTrue (sql.CancelSelectOnNullParameter, "B1");
206 Assert.IsFalse (sql.CanDelete, "B2");
207 Assert.IsFalse (sql.CanInsert, "B3");
208 Assert.IsFalse (sql.CanPage, "B4");
209 Assert.IsFalse (sql.CanRetrieveTotalRowCount, "B5");
210 Assert.IsTrue (sql.CanSort, "B6");
211 Assert.IsFalse (sql.CanUpdate, "B7");
212 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "B8");
213 Assert.AreEqual ("", sql.DeleteCommand, "B9");
214 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B10");
215 Assert.IsNotNull (sql.DeleteParameters, "B11");
216 Assert.AreEqual (0, sql.DeleteParameters.Count, "B12");
217 Assert.AreEqual ("", sql.FilterExpression, "B13");
218 Assert.IsNotNull (sql.FilterParameters, "B14");
219 Assert.AreEqual (0, sql.FilterParameters.Count, "B15");
220 Assert.AreEqual ("", sql.InsertCommand, "B16");
221 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "B17");
222 Assert.IsNotNull (sql.InsertParameters, "B18");
223 Assert.AreEqual (0, sql.InsertParameters.Count, "B19");
224 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "B20");
225 Assert.AreEqual ("", sql.SelectCommand, "B21");
226 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "B22");
227 Assert.IsNotNull (sql.SelectParameters, "B23");
228 Assert.AreEqual (0, sql.SelectParameters.Count, "B24");
229 Assert.AreEqual ("", sql.SortParameterName, "B25");
230 Assert.AreEqual ("", sql.UpdateCommand, "B26");
231 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B27");
232 Assert.IsNotNull (sql.UpdateParameters, "B28");
233 Assert.AreEqual (0, sql.UpdateParameters.Count, "B29");
239 private static int _testcounter;
240 private static bool _eventChecker;
241 private eventAssert ()
246 public static bool eventChecker
250 throw new NotImplementedException ();
254 _eventChecker = value;
258 static private void testAdded ()
261 _eventChecker = false;
264 public static void IsTrue (string msg)
266 Assert.IsTrue (_eventChecker, msg + "#" + _testcounter);
271 public static void IsFalse (string msg)
273 Assert.IsFalse (_eventChecker, msg + "#" + _testcounter);
280 public void SqlDataSourceView_DataSourceViewChanged ()
282 SqlDataSource ds = new SqlDataSource ();
283 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
284 sql.DataSourceViewChanged += new EventHandler (sql_DataSourceViewChanged);
285 sql.DoOnDataSourceViewChanged ();
286 eventAssert.IsTrue ("SqlDataSourceView"); // Assert include counter the first is zero
287 /* XXX test parameters */
289 sql.CancelSelectOnNullParameter = false;
290 eventAssert.IsTrue ("SqlDataSourceView");
291 sql.ConflictDetection = ConflictOptions.CompareAllValues;
292 eventAssert.IsTrue ("SqlDataSourceView");
293 sql.DeleteCommandType = SqlDataSourceCommandType.Text;
294 eventAssert.IsFalse ("SqlDataSourceView");
295 sql.DeleteCommand = "delete command";
296 eventAssert.IsFalse ("SqlDataSourceView");
297 sql.FilterExpression = "filter expression";
298 eventAssert.IsTrue ("SqlDataSourceView");
299 sql.InsertCommand = "insert command";
300 eventAssert.IsFalse ("SqlDataSourceView");
301 sql.InsertCommandType = SqlDataSourceCommandType.Text;
302 eventAssert.IsFalse ("SqlDataSourceView");
303 sql.OldValuesParameterFormatString = "{1}";
304 eventAssert.IsTrue ("SqlDataSourceView");
305 sql.SelectCommand = "select command";
306 eventAssert.IsTrue ("SqlDataSourceView");
307 sql.SelectCommandType = SqlDataSourceCommandType.Text;
308 eventAssert.IsFalse ("SqlDataSourceView");
309 sql.SortParameterName = "sort parameter";
310 eventAssert.IsTrue ("SqlDataSourceView");
311 sql.UpdateCommand = "update command";
312 eventAssert.IsFalse ("SqlDataSourceView");
313 sql.UpdateCommandType = SqlDataSourceCommandType.Text;
314 eventAssert.IsFalse ("SqlDataSourceView");
317 void sql_DataSourceViewChanged (object sender, EventArgs e)
319 eventAssert.eventChecker = true;
323 public void CanDelete ()
325 SqlDataSource ds = new SqlDataSource ();
326 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
328 sql.DeleteCommand = "DELETE from foo";
329 Assert.IsTrue (sql.CanDelete, "A1");
331 sql.DeleteCommand = "";
332 Assert.IsFalse (sql.CanDelete, "A2");
334 sql.DeleteCommand = null;
335 Assert.IsFalse (sql.CanDelete, "A3");
339 public void CanInsert ()
341 SqlDataSource ds = new SqlDataSource ();
342 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
344 sql.InsertCommand = "INSERT into foo";
345 Assert.IsTrue (sql.CanInsert, "A1");
347 sql.InsertCommand = "";
348 Assert.IsFalse (sql.CanInsert, "A2");
350 sql.InsertCommand = null;
351 Assert.IsFalse (sql.CanInsert, "A3");
355 public void CanUpdate ()
357 SqlDataSource ds = new SqlDataSource ();
358 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
360 sql.UpdateCommand = "UPDATE foo";
361 Assert.IsTrue (sql.CanUpdate, "A1");
363 sql.UpdateCommand = "";
364 Assert.IsFalse (sql.CanUpdate, "A2");
366 sql.UpdateCommand = null;
367 Assert.IsFalse (sql.CanUpdate, "A3");
371 public void CanSort ()
373 SqlDataSource ds = new SqlDataSource ();
374 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
376 sql.SortParameterName = "foo";
377 Assert.IsTrue (sql.CanSort, "A1");
379 sql.SortParameterName = null;
380 Assert.IsTrue (sql.CanSort, "A2");
382 sql.SortParameterName = "";
383 Assert.IsTrue (sql.CanSort, "A3");
385 sql.SortParameterName = "foo";
387 ds.DataSourceMode = SqlDataSourceMode.DataReader;
388 Assert.IsTrue (sql.CanSort, "A4");
390 ds.DataSourceMode = SqlDataSourceMode.DataSet;
391 Assert.IsTrue (sql.CanSort, "A5");
393 sql.SortParameterName = "";
395 ds.DataSourceMode = SqlDataSourceMode.DataReader;
396 Assert.IsFalse (sql.CanSort, "A6");
398 ds.DataSourceMode = SqlDataSourceMode.DataSet;
399 Assert.IsTrue (sql.CanSort, "A7");
403 public void OldValuesParameterFormatString ()
405 SqlDataSource ds = new SqlDataSource ();
407 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A1");
409 ds.OldValuesParameterFormatString = "hi {0}";
411 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
413 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A2");
415 ds.OldValuesParameterFormatString = "hi {0}";
417 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A3");
419 ds.OldValuesParameterFormatString = "{0}";
420 sql.OldValuesParameterFormatString = "hi {0}";
422 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A4");
426 public void CancelSelectOnNullParameter ()
428 SqlDataSource ds = new SqlDataSource ();
430 ds.CancelSelectOnNullParameter = false;
432 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
434 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
436 ds.CancelSelectOnNullParameter = true;
437 sql.CancelSelectOnNullParameter = false;
439 Assert.IsTrue (ds.CancelSelectOnNullParameter, "A2");
441 sql.CancelSelectOnNullParameter = false;
442 ds.CancelSelectOnNullParameter = true;
443 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A3");
446 public class AlwaysChangingParameter : Parameter
450 public AlwaysChangingParameter (string name, TypeCode type, string defaultValue)
451 : base (name, type, defaultValue) {
458 protected override object Evaluate (HttpContext context, Control control) {
460 return String.Format ("{0}{1}", DefaultValue, evaluateCount);
467 MatchParamsToOldValues,
472 public void SelectCommand_DataSourceViewChanged2 ()
474 SqlDataSource ds = new SqlDataSource ();
475 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
476 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
478 Assert.AreEqual ("", view.SelectCommand);
479 view.SelectCommand = null;
480 Assert.AreEqual (1, eventsCalled.Count);
481 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
482 Assert.AreEqual ("", view.SelectCommand);
484 view.SelectCommand = null;
485 Assert.AreEqual (2, eventsCalled.Count);
486 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
487 Assert.AreEqual ("", view.SelectCommand);
489 view.SelectCommand = "";
490 Assert.AreEqual (2, eventsCalled.Count);
494 public void SelectCommand_DataSourceViewChanged1 ()
496 SqlDataSource ds = new SqlDataSource ();
497 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
498 view.DataSourceViewChanged+=new EventHandler(view_DataSourceViewChanged);
500 view.SelectCommand = "select 1";
501 Assert.AreEqual (1, eventsCalled.Count);
502 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled[0]);
504 view.SelectCommand = "select 2";
505 Assert.AreEqual (2, eventsCalled.Count);
506 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
508 view.SelectCommand = "select 2";
509 Assert.AreEqual (2, eventsCalled.Count);
511 view.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
512 Assert.AreEqual (2, eventsCalled.Count);
514 view.SelectCommandType = SqlDataSourceCommandType.Text;
515 Assert.AreEqual (2, eventsCalled.Count);
518 private static SqlViewPoker InitializeView (InitViewType initType, ConflictOptions conflictDetection, out Hashtable keys, out Hashtable old_value, out Hashtable new_value)
520 SqlDataSource ds = new SqlDataSource ();
521 ds.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
522 ds.ProviderName = "System.Data.SqlClient";
523 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
525 view.ConflictDetection = conflictDetection;
526 view.OldValuesParameterFormatString = "oldvalue_{0}";
527 view.SelectCommandType = SqlDataSourceCommandType.Text;
528 view.InsertCommandType = SqlDataSourceCommandType.Text;
529 view.UpdateCommandType = SqlDataSourceCommandType.Text;
530 view.DeleteCommandType = SqlDataSourceCommandType.Text;
532 view.SelectCommand = "SELECT * FROM Customers WHERE ID = @ID";
533 view.InsertCommand = "INSERT INTO Customers (ID) VALUES (@ID)";
534 view.UpdateCommand = "UPDATE Customers SET ID = @ID WHERE ID = @oldvalue_ID";
535 view.DeleteCommand = "DELETE * FROM Customers WHERE ID = @ID";
537 Parameter selectParameter = null;
538 Parameter insertParameter = null;
539 Parameter updateParameter = null;
540 Parameter deleteParameter = null;
542 selectParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueSelect");
543 view.SelectParameters.Add (selectParameter);
546 case InitViewType.MatchParamsToOldValues:
547 insertParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueInsert");
548 view.InsertParameters.Add (insertParameter);
549 updateParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueUpdate");
550 view.UpdateParameters.Add (updateParameter);
551 deleteParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueDelete");
552 view.DeleteParameters.Add (deleteParameter);
555 case InitViewType.MatchParamsToValues:
556 insertParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueInsert");
557 view.InsertParameters.Add (insertParameter);
558 updateParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueUpdate");
559 view.UpdateParameters.Add (updateParameter);
560 deleteParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueDelete");
561 view.DeleteParameters.Add (deleteParameter);
564 case InitViewType.DontMatchParams:
565 insertParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueInsert");
566 view.InsertParameters.Add (insertParameter);
567 updateParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueUpdate");
568 view.UpdateParameters.Add (updateParameter);
569 deleteParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueDelete");
570 view.DeleteParameters.Add (deleteParameter);
574 view.SelectParameters.ParametersChanged += new EventHandler (SelectParameters_ParametersChanged);
575 view.InsertParameters.ParametersChanged += new EventHandler (InsertParameters_ParametersChanged);
576 view.UpdateParameters.ParametersChanged += new EventHandler (UpdateParameters_ParametersChanged);
577 view.DeleteParameters.ParametersChanged += new EventHandler (DeleteParameters_ParametersChanged);
579 keys = new Hashtable ();
580 keys.Add ("ID", "k_1001");
582 old_value = new Hashtable ();
583 old_value.Add ("ID", "ov_1001");
585 new_value = new Hashtable ();
586 new_value.Add ("ID", "n_1001");
588 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
590 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
591 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
592 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
593 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
597 static void view_Selecting (object source, SqlDataSourceSelectingEventArgs e)
599 if (eventsCalled == null) {
600 eventsCalled = new ArrayList ();
602 eventsCalled.Add (e.Arguments.ToString ());
603 eventsCalled.Add ("view_Selecting");
604 eventsCalled.Add (FormatParameters ((SqlParameterCollection)e.Command.Parameters));
608 static void view_Inserting (object source, SqlDataSourceCommandEventArgs e)
610 if (eventsCalled == null) {
611 eventsCalled = new ArrayList ();
613 eventsCalled.Add ("view_Inserting");
614 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
618 static void view_Updating (object source, SqlDataSourceCommandEventArgs e)
620 if (eventsCalled == null) {
621 eventsCalled = new ArrayList ();
623 eventsCalled.Add ("view_Updating");
624 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
628 static void view_Deleting (object source, SqlDataSourceCommandEventArgs e)
630 if (eventsCalled == null) {
631 eventsCalled = new ArrayList ();
633 eventsCalled.Add ("view_Deleting");
634 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
638 private static string FormatParameters (SqlParameterCollection sqlParameterCollection)
640 StringBuilder sb = new StringBuilder ();
641 foreach (SqlParameter p in sqlParameterCollection) {
645 sb.AppendFormat ("{0}:{1}={2}", p.DbType, p.ParameterName, p.Value);
647 return sb.ToString ();
650 private static IList eventsCalled;
652 static void view_DataSourceViewChanged (object sender, EventArgs e)
654 if (eventsCalled == null) {
655 eventsCalled = new ArrayList ();
657 eventsCalled.Add ("view_DataSourceViewChanged");
660 static void SelectParameters_ParametersChanged (object sender, EventArgs e)
662 if (eventsCalled == null) {
663 eventsCalled = new ArrayList ();
665 eventsCalled.Add ("SelectParameters_ParametersChanged");
668 static void InsertParameters_ParametersChanged (object sender, EventArgs e)
670 if (eventsCalled == null) {
671 eventsCalled = new ArrayList ();
673 eventsCalled.Add ("InsertParameters_ParametersChanged");
676 static void UpdateParameters_ParametersChanged (object sender, EventArgs e)
678 if (eventsCalled == null) {
679 eventsCalled = new ArrayList ();
681 eventsCalled.Add ("UpdateParameters_ParametersChanged");
684 static void DeleteParameters_ParametersChanged (object sender, EventArgs e)
686 if (eventsCalled == null) {
687 eventsCalled = new ArrayList ();
689 eventsCalled.Add ("DeleteParameters_ParametersChanged");
693 public void ParametersAndViewChangedEvent_Select ()
695 Hashtable keys = null;
696 Hashtable old_values = null;
697 Hashtable new_values = null;
698 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
700 view.Select (DataSourceSelectArguments.Empty);
702 Assert.IsNotNull (eventsCalled, "Events not raized");
703 Assert.AreEqual (5, eventsCalled.Count, "Events Count");
704 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0], "view_DataSourceViewChanged");
705 Assert.AreEqual ("SelectParameters_ParametersChanged", eventsCalled [1], "SelectParameters_ParametersChanged");
706 Assert.AreEqual ("System.Web.UI.DataSourceSelectArguments", eventsCalled [2], "DataSourceSelectArguments");
707 Assert.AreEqual ("view_Selecting", eventsCalled [3], "view_Selecting");
708 string [] expectedParams = new string []
710 "String:@ID=p_ValueSelect1"
712 string [] actualValues = ((string)eventsCalled [4]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
713 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_Select Params count");
714 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_Select expecte '{0}'");
718 public void ParametersAndViewChangedEvent_MatchInsert ()
720 Hashtable keys = null;
721 Hashtable old_values = null;
722 Hashtable new_values = null;
723 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
725 view.Insert (new_values);
727 Assert.IsNotNull (eventsCalled, "Events not raized");
728 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
729 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
730 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
731 string [] expectedParams = new string []
735 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
736 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchInsert Params count");
737 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchInsert expecte '{0}'");
741 public void ParametersAndViewChangedEvent_MatchInsertAllValues ()
743 Hashtable keys = null;
744 Hashtable old_values = null;
745 Hashtable new_values = null;
746 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
748 view.Insert (new_values);
750 Assert.IsNotNull (eventsCalled, "Events not raized");
751 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
752 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
753 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
754 string [] expectedParams = new string []
758 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
759 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchInsert Params count");
760 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchInsert expecte '{0}'");
764 public void ParametersAndViewChangedEvent_MatchOldInsert ()
766 Hashtable keys = null;
767 Hashtable old_values = null;
768 Hashtable new_values = null;
769 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
771 view.Insert (new_values);
773 Assert.IsNotNull (eventsCalled, "Events not raized");
774 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
775 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
776 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
777 string [] expectedParams = new string []
779 "String:@oldvalue_ID=p_OldValueInsert1",
782 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
783 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldInsert Params count");
784 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldInsert expecte '{0}'");
788 public void ParametersAndViewChangedEvent_MatchOldInsertAllValues ()
790 Hashtable keys = null;
791 Hashtable old_values = null;
792 Hashtable new_values = null;
793 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
795 view.Insert (new_values);
797 Assert.IsNotNull (eventsCalled, "Events not raized");
798 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
799 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
800 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
801 string [] expectedParams = new string []
803 "String:@oldvalue_ID=p_OldValueInsert1",
806 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
807 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldInsert Params count");
808 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldInsert expecte '{0}'");
812 public void ParametersAndViewChangedEvent_DontMatchInsert ()
814 Hashtable keys = null;
815 Hashtable old_values = null;
816 Hashtable new_values = null;
817 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
819 view.Insert (new_values);
821 Assert.IsNotNull (eventsCalled, "Events not raized");
822 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
823 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
824 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
825 string [] expectedParams = new string []
827 "String:@OtherValue=p_OtherValueInsert1",
830 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
831 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_DontMatchInsert Params count");
832 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_DontMatchInsert expecte '{0}'");
836 public void ParametersAndViewChangedEvent_MatchUpdate ()
838 Hashtable keys = null;
839 Hashtable old_values = null;
840 Hashtable new_values = null;
841 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
843 view.Update (keys, new_values, old_values);
845 Assert.IsNotNull (eventsCalled, "Events not raized");
846 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
847 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
848 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
849 string [] expectedParams = new string []
851 "String:@oldvalue_ID=k_1001",
854 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
855 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
856 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
860 public void ParametersAndViewChangedEvent_MatchUpdateAllValues ()
862 Hashtable keys = null;
863 Hashtable old_values = null;
864 Hashtable new_values = null;
865 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
867 view.Update (keys, new_values, old_values);
869 Assert.IsNotNull (eventsCalled, "Events not raized");
870 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
871 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
872 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
873 string [] expectedParams = new string []
875 "String:@oldvalue_ID=ov_1001",
878 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
879 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
880 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
884 public void ParametersAndViewChangedEvent_MatchOldUpdate ()
886 Hashtable keys = null;
887 Hashtable old_values = null;
888 Hashtable new_values = null;
889 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
891 view.Update (keys, new_values, old_values);
893 Assert.IsNotNull (eventsCalled, "Events not raized");
894 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
895 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
896 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
897 string [] expectedParams = new string []
899 "String:@oldvalue_ID=k_1001",
902 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
903 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
904 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
908 public void ParametersAndViewChangedEvent_MatchOldUpdateAllValues ()
910 Hashtable keys = null;
911 Hashtable old_values = null;
912 Hashtable new_values = null;
913 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
915 view.Update (keys, new_values, old_values);
917 Assert.IsNotNull (eventsCalled, "Events not raized");
918 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
919 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
920 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
921 string [] expectedParams = new string []
923 "String:@oldvalue_ID=ov_1001",
926 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
927 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
928 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
932 public void ParametersAndViewChangedEvent_DontMatchUpdate ()
934 Hashtable keys = null;
935 Hashtable old_values = null;
936 Hashtable new_values = null;
937 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
939 view.Update (keys, new_values, old_values);
941 Assert.IsNotNull (eventsCalled, "Events not raized");
942 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
943 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
944 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
945 string [] expectedParams = new string []
947 "String:@oldvalue_ID=k_1001",
949 "String:@OtherValue=p_OtherValueUpdate1"
951 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
952 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_DontMatchUpdate Params count");
953 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_DontMatchUpdate expecte '{0}'");
957 public void ParametersAndViewChangedEvent_MatchDelete ()
959 Hashtable keys = null;
960 Hashtable old_values = null;
961 Hashtable new_values = null;
962 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
964 view.Delete (keys, old_values);
966 Assert.IsNotNull (eventsCalled, "Events not raized");
967 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
968 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
969 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
970 string [] expectedParams = new string []
972 "String:@oldvalue_ID=k_1001",
974 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
975 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchDelete Params count");
976 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchDelete expecte '{0}'");
980 public void ParametersAndViewChangedEvent_MatchDeleteAllValues ()
982 Hashtable keys = null;
983 Hashtable old_values = null;
984 Hashtable new_values = null;
985 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
987 view.Delete (keys, old_values);
989 Assert.IsNotNull (eventsCalled, "Events not raized");
990 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
991 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
992 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
993 string [] expectedParams = new string []
995 "String:@oldvalue_ID=ov_1001",
997 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
998 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchDelete Params count");
999 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchDelete expecte '{0}'");
1003 public void ParametersAndViewChangedEvent_MatchOldDelete ()
1005 Hashtable keys = null;
1006 Hashtable old_values = null;
1007 Hashtable new_values = null;
1008 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
1010 view.Delete (keys, old_values);
1012 Assert.IsNotNull (eventsCalled, "Events not raized");
1013 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1014 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1015 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
1016 string [] expectedParams = new string []
1018 "String:@oldvalue_ID=k_1001",
1020 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
1021 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
1022 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
1026 public void ParametersAndViewChangedEvent_MatchOldDeleteAllValues ()
1028 Hashtable keys = null;
1029 Hashtable old_values = null;
1030 Hashtable new_values = null;
1031 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
1033 view.Delete (keys, old_values);
1035 Assert.IsNotNull (eventsCalled, "Events not raized");
1036 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1037 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1038 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
1039 string [] expectedParams = new string []
1041 "String:@oldvalue_ID=ov_1001",
1043 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
1044 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
1045 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
1049 public void ParametersAndViewChangedEvent_DontMatchDelete ()
1051 Hashtable keys = null;
1052 Hashtable old_values = null;
1053 Hashtable new_values = null;
1054 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
1056 view.Delete (keys, old_values);
1058 Assert.IsNotNull (eventsCalled, "Events not raized");
1059 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1060 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1061 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
1062 string [] expectedParams = new string []
1064 "String:@oldvalue_ID=k_1001",
1065 "String:@OtherValue=p_OtherValueDelete1"
1067 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
1068 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
1069 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
1072 private static void ValidatePassedParams (string [] expectedParams, string [] actualValues, string errorMessageFormat)
1074 foreach (string eps in expectedParams) {
1076 foreach (string aps in actualValues) {
1082 Assert.IsTrue (found, String.Format (errorMessageFormat, eps));