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.
33 using NUnit.Framework;
35 using System.Configuration;
36 using System.Data.Common;
38 using System.Globalization;
41 using System.Web.UI.WebControls;
42 using System.Collections;
43 using System.Data.SqlClient;
46 namespace MonoTests.System.Web.UI.WebControls
48 class SqlViewPoker : SqlDataSourceView {
49 public SqlViewPoker (SqlDataSource ds, string name, HttpContext context)
50 : base (ds, name, context)
55 public object SaveToViewState ()
57 return SaveViewState ();
60 public void LoadFromViewState (object savedState)
62 LoadViewState (savedState);
65 public void DoOnDataSourceViewChanged ()
\r
67 base.OnDataSourceViewChanged (new EventArgs());
\r
72 public class SqlDataSourceViewTest
81 public void Defaults ()
83 SqlDataSource ds = new SqlDataSource ();
84 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
86 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
87 Assert.IsFalse (sql.CanDelete,"A2");
88 Assert.IsFalse (sql.CanInsert,"A3");
89 Assert.IsFalse (sql.CanPage,"A4");
90 Assert.IsFalse (sql.CanRetrieveTotalRowCount,"A5");
91 Assert.IsTrue (sql.CanSort,"A6");
92 Assert.IsFalse (sql.CanUpdate,"A7");
93 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A8");
94 Assert.AreEqual ("", sql.DeleteCommand, "A9");
95 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A10");
96 Assert.IsNotNull (sql.DeleteParameters, "A11");
97 Assert.AreEqual (0, sql.DeleteParameters.Count, "A12");
98 Assert.AreEqual ("", sql.FilterExpression, "A13");
99 Assert.IsNotNull (sql.FilterParameters, "A14");
100 Assert.AreEqual (0, sql.FilterParameters.Count, "A15");
101 Assert.AreEqual ("", sql.InsertCommand, "A16");
102 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A17");
103 Assert.IsNotNull (sql.InsertParameters, "A18");
104 Assert.AreEqual (0, sql.InsertParameters.Count, "A19");
105 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A20");
106 Assert.AreEqual ("", sql.SelectCommand, "A21");
107 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A22");
108 Assert.IsNotNull (sql.SelectParameters, "A23");
109 Assert.AreEqual (0, sql.SelectParameters.Count, "A24");
110 Assert.AreEqual ("", sql.SortParameterName, "A25");
111 Assert.AreEqual ("", sql.UpdateCommand, "A26");
112 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A27");
113 Assert.IsNotNull (sql.UpdateParameters, "A28");
114 Assert.AreEqual (0, sql.UpdateParameters.Count, "A29");
118 public void ViewStateSupport ()
120 SqlDataSource ds = new SqlDataSource ();
121 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
123 ds.ID = "SqlDataSource1";
124 ds.SelectCommand = "Select";
126 Parameter p1 = new Parameter ("test", TypeCode.String);
128 Assert.IsTrue (((IStateManager) view).IsTrackingViewState, "IsTrackingViewState");
129 Assert.IsTrue (((IStateManager) view.FilterParameters).IsTrackingViewState, "FilterParameters.IsTrackingViewState");
130 Assert.IsTrue (((IStateManager) view.SelectParameters).IsTrackingViewState, "SelecteParameters.IsTrackingViewState");
131 Assert.IsFalse (((IStateManager) view.DeleteParameters).IsTrackingViewState, "DeleteParameters.IsTrackingViewState");
132 Assert.IsFalse (((IStateManager) view.InsertParameters).IsTrackingViewState, "InsertParameters.IsTrackingViewState");
133 Assert.IsFalse (((IStateManager) view.UpdateParameters).IsTrackingViewState, "UpdateParameters.IsTrackingViewState");
135 object state = ((IStateManager) view).SaveViewState ();
136 Assert.IsNull (state, "view ViewState not null");
138 view.DeleteParameters.Add (p1);
139 view.InsertParameters.Add (p1);
140 //view.UpdateParameters.Add (p1);
142 state = ((IStateManager) view).SaveViewState ();
143 Assert.IsNull (state, "view ViewState not null");
145 view.FilterParameters.Add (p1);
146 //view.SelectParameters.Add (p1);
148 state = ((IStateManager) view).SaveViewState ();
149 Assert.IsNotNull (state, "view ViewState not null");
151 state = ((IStateManager) view.FilterParameters).SaveViewState ();
152 Assert.IsNotNull (state, "FilterParamenters ViewState not null");
153 state = ((IStateManager) view.SelectParameters).SaveViewState ();
154 Assert.IsNull (state, "SelectParameters ViewState not null");
156 state = ((IStateManager) view.DeleteParameters).SaveViewState ();
157 Assert.IsNotNull (state, "DeleteParameters ViewState not null");
158 state = ((IStateManager) view.InsertParameters).SaveViewState ();
159 Assert.IsNotNull (state, "InsertParameters ViewState not null");
160 state = ((IStateManager) view.UpdateParameters).SaveViewState ();
161 Assert.IsNull (state, "UpdateParameters ViewState not null");
165 public void ViewState ()
\r
167 SqlDataSource ds = new SqlDataSource ();
\r
168 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
\r
170 /* XXX test parameters */
\r
172 sql.CancelSelectOnNullParameter = false;
\r
173 sql.ConflictDetection = ConflictOptions.CompareAllValues;
\r
174 sql.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
175 sql.DeleteCommand = "delete command";
\r
176 sql.FilterExpression = "filter expression";
\r
177 sql.InsertCommand = "insert command";
\r
178 sql.InsertCommandType = SqlDataSourceCommandType.Text;
\r
179 sql.OldValuesParameterFormatString = "{1}";
\r
180 sql.SelectCommand = "select command";
\r
181 sql.SelectCommandType = SqlDataSourceCommandType.Text;
\r
182 sql.SortParameterName = "sort parameter";
\r
183 sql.UpdateCommand = "update command";
\r
184 sql.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
186 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A1");
\r
187 Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A2");
\r
188 Assert.AreEqual ("delete command", sql.DeleteCommand, "A3");
\r
189 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");
\r
190 Assert.AreEqual ("filter expression", sql.FilterExpression, "A5");
\r
191 Assert.AreEqual ("insert command", sql.InsertCommand, "A6");
\r
192 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A7");
\r
193 Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");
\r
194 Assert.AreEqual ("select command", sql.SelectCommand, "A9");
\r
195 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A10");
\r
196 Assert.AreEqual ("sort parameter", sql.SortParameterName, "A11");
\r
197 Assert.AreEqual ("update command", sql.UpdateCommand, "A12");
\r
198 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A13");
\r
200 object state = sql.SaveToViewState ();
\r
201 Assert.IsNull (state, "ViewState is null");
\r
203 sql = new SqlViewPoker (ds, "DefaultView", null);
\r
204 sql.LoadFromViewState (state);
\r
206 Assert.IsTrue (sql.CancelSelectOnNullParameter, "B1");
\r
207 Assert.IsFalse (sql.CanDelete, "B2");
\r
208 Assert.IsFalse (sql.CanInsert, "B3");
\r
209 Assert.IsFalse (sql.CanPage, "B4");
\r
210 Assert.IsFalse (sql.CanRetrieveTotalRowCount, "B5");
\r
211 Assert.IsTrue (sql.CanSort, "B6");
\r
212 Assert.IsFalse (sql.CanUpdate, "B7");
\r
213 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "B8");
\r
214 Assert.AreEqual ("", sql.DeleteCommand, "B9");
\r
215 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B10");
\r
216 Assert.IsNotNull (sql.DeleteParameters, "B11");
\r
217 Assert.AreEqual (0, sql.DeleteParameters.Count, "B12");
\r
218 Assert.AreEqual ("", sql.FilterExpression, "B13");
\r
219 Assert.IsNotNull (sql.FilterParameters, "B14");
\r
220 Assert.AreEqual (0, sql.FilterParameters.Count, "B15");
\r
221 Assert.AreEqual ("", sql.InsertCommand, "B16");
\r
222 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "B17");
\r
223 Assert.IsNotNull (sql.InsertParameters, "B18");
\r
224 Assert.AreEqual (0, sql.InsertParameters.Count, "B19");
\r
225 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "B20");
\r
226 Assert.AreEqual ("", sql.SelectCommand, "B21");
\r
227 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "B22");
\r
228 Assert.IsNotNull (sql.SelectParameters, "B23");
\r
229 Assert.AreEqual (0, sql.SelectParameters.Count, "B24");
\r
230 Assert.AreEqual ("", sql.SortParameterName, "B25");
\r
231 Assert.AreEqual ("", sql.UpdateCommand, "B26");
\r
232 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B27");
\r
233 Assert.IsNotNull (sql.UpdateParameters, "B28");
\r
234 Assert.AreEqual (0, sql.UpdateParameters.Count, "B29");
\r
237 #region help_results
\r
240 private static int _testcounter;
\r
241 private static bool _eventChecker;
\r
242 private eventAssert ()
\r
247 public static bool eventChecker
\r
251 throw new NotImplementedException ();
\r
255 _eventChecker = value;
\r
259 static private void testAdded ()
\r
262 _eventChecker = false;
\r
265 public static void IsTrue (string msg)
\r
267 Assert.IsTrue (_eventChecker, msg + "#" + _testcounter);
\r
272 public static void IsFalse (string msg)
\r
274 Assert.IsFalse (_eventChecker, msg + "#" + _testcounter);
\r
281 [Category ("NotWorking")]
\r
282 public void SqlDataSourceView_DataSourceViewChanged ()
\r
284 SqlDataSource ds = new SqlDataSource ();
\r
285 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
\r
286 sql.DataSourceViewChanged += new EventHandler (sql_DataSourceViewChanged);
\r
287 sql.DoOnDataSourceViewChanged ();
\r
288 eventAssert.IsTrue ("SqlDataSourceView"); // Assert include counter the first is zero
\r
289 /* XXX test parameters */
\r
291 sql.CancelSelectOnNullParameter = false;
\r
292 eventAssert.IsTrue ("SqlDataSourceView");
\r
293 sql.ConflictDetection = ConflictOptions.CompareAllValues;
\r
294 eventAssert.IsTrue ("SqlDataSourceView");
\r
295 sql.DeleteCommandType = SqlDataSourceCommandType.Text;
\r
296 eventAssert.IsFalse ("SqlDataSourceView");
\r
297 sql.DeleteCommand = "delete command";
\r
298 eventAssert.IsFalse ("SqlDataSourceView");
\r
299 sql.FilterExpression = "filter expression";
\r
300 eventAssert.IsTrue ("SqlDataSourceView");
\r
301 sql.InsertCommand = "insert command";
\r
302 eventAssert.IsFalse ("SqlDataSourceView");
\r
303 sql.InsertCommandType = SqlDataSourceCommandType.Text;
\r
304 eventAssert.IsFalse ("SqlDataSourceView");
\r
305 sql.OldValuesParameterFormatString = "{1}";
\r
306 eventAssert.IsTrue ("SqlDataSourceView");
\r
307 sql.SelectCommand = "select command";
\r
308 eventAssert.IsTrue ("SqlDataSourceView");
\r
309 sql.SelectCommandType = SqlDataSourceCommandType.Text;
\r
310 eventAssert.IsFalse ("SqlDataSourceView");
\r
311 sql.SortParameterName = "sort parameter";
\r
312 eventAssert.IsTrue ("SqlDataSourceView");
\r
313 sql.UpdateCommand = "update command";
\r
314 eventAssert.IsFalse ("SqlDataSourceView");
\r
315 sql.UpdateCommandType = SqlDataSourceCommandType.Text;
\r
316 eventAssert.IsFalse ("SqlDataSourceView");
\r
319 void sql_DataSourceViewChanged (object sender, EventArgs e)
\r
321 eventAssert.eventChecker = true;
\r
325 public void CanDelete ()
327 SqlDataSource ds = new SqlDataSource ();
328 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
330 sql.DeleteCommand = "DELETE from foo";
331 Assert.IsTrue (sql.CanDelete, "A1");
333 sql.DeleteCommand = "";
334 Assert.IsFalse (sql.CanDelete, "A2");
336 sql.DeleteCommand = null;
337 Assert.IsFalse (sql.CanDelete, "A3");
341 public void CanInsert ()
343 SqlDataSource ds = new SqlDataSource ();
344 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
346 sql.InsertCommand = "INSERT into foo";
347 Assert.IsTrue (sql.CanInsert, "A1");
349 sql.InsertCommand = "";
350 Assert.IsFalse (sql.CanInsert, "A2");
352 sql.InsertCommand = null;
353 Assert.IsFalse (sql.CanInsert, "A3");
357 public void CanUpdate ()
359 SqlDataSource ds = new SqlDataSource ();
360 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
362 sql.UpdateCommand = "UPDATE foo";
363 Assert.IsTrue (sql.CanUpdate, "A1");
365 sql.UpdateCommand = "";
366 Assert.IsFalse (sql.CanUpdate, "A2");
368 sql.UpdateCommand = null;
369 Assert.IsFalse (sql.CanUpdate, "A3");
373 public void CanSort ()
375 SqlDataSource ds = new SqlDataSource ();
376 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
378 sql.SortParameterName = "foo";
379 Assert.IsTrue (sql.CanSort, "A1");
381 sql.SortParameterName = null;
382 Assert.IsTrue (sql.CanSort, "A2");
384 sql.SortParameterName = "";
385 Assert.IsTrue (sql.CanSort, "A3");
387 sql.SortParameterName = "foo";
389 ds.DataSourceMode = SqlDataSourceMode.DataReader;
390 Assert.IsTrue (sql.CanSort, "A4");
392 ds.DataSourceMode = SqlDataSourceMode.DataSet;
393 Assert.IsTrue (sql.CanSort, "A5");
395 sql.SortParameterName = "";
397 ds.DataSourceMode = SqlDataSourceMode.DataReader;
398 Assert.IsFalse (sql.CanSort, "A6");
400 ds.DataSourceMode = SqlDataSourceMode.DataSet;
401 Assert.IsTrue (sql.CanSort, "A7");
405 public void OldValuesParameterFormatString ()
407 SqlDataSource ds = new SqlDataSource ();
409 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A1");
411 ds.OldValuesParameterFormatString = "hi {0}";
413 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
415 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A2");
417 ds.OldValuesParameterFormatString = "hi {0}";
419 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A3");
421 ds.OldValuesParameterFormatString = "{0}";
422 sql.OldValuesParameterFormatString = "hi {0}";
424 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A4");
428 public void CancelSelectOnNullParameter ()
430 SqlDataSource ds = new SqlDataSource ();
432 ds.CancelSelectOnNullParameter = false;
434 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
436 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
438 ds.CancelSelectOnNullParameter = true;
439 sql.CancelSelectOnNullParameter = false;
441 Assert.IsTrue (ds.CancelSelectOnNullParameter, "A2");
443 sql.CancelSelectOnNullParameter = false;
444 ds.CancelSelectOnNullParameter = true;
445 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A3");
448 public class AlwaysChangingParameter : Parameter
452 public AlwaysChangingParameter (string name, TypeCode type, string defaultValue)
453 : base (name, type, defaultValue) {
457 protected override object Evaluate (HttpContext context, Control control) {
459 return String.Format ("{0}{1}", DefaultValue, evaluateCount);
466 MatchParamsToOldValues,
471 public void SelectCommand_DataSourceViewChanged2 ()
473 SqlDataSource ds = new SqlDataSource ();
474 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
475 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
477 Assert.AreEqual ("", view.SelectCommand);
478 view.SelectCommand = null;
479 Assert.AreEqual (1, eventsCalled.Count);
480 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
481 Assert.AreEqual ("", view.SelectCommand);
483 view.SelectCommand = null;
484 Assert.AreEqual (2, eventsCalled.Count);
485 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
486 Assert.AreEqual ("", view.SelectCommand);
488 view.SelectCommand = "";
489 Assert.AreEqual (2, eventsCalled.Count);
493 public void SelectCommand_DataSourceViewChanged1 ()
495 SqlDataSource ds = new SqlDataSource ();
496 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
497 view.DataSourceViewChanged+=new EventHandler(view_DataSourceViewChanged);
499 view.SelectCommand = "select 1";
500 Assert.AreEqual (1, eventsCalled.Count);
501 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled[0]);
503 view.SelectCommand = "select 2";
504 Assert.AreEqual (2, eventsCalled.Count);
505 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
507 view.SelectCommand = "select 2";
508 Assert.AreEqual (2, eventsCalled.Count);
510 view.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
511 Assert.AreEqual (2, eventsCalled.Count);
513 view.SelectCommandType = SqlDataSourceCommandType.Text;
514 Assert.AreEqual (2, eventsCalled.Count);
517 private static SqlViewPoker InitializeView (InitViewType initType, ConflictOptions conflictDetection, out Hashtable keys, out Hashtable old_value, out Hashtable new_value)
519 SqlDataSource ds = new SqlDataSource ();
520 ds.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
521 ds.ProviderName = "System.Data.SqlClient";
522 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
524 view.ConflictDetection = conflictDetection;
525 view.OldValuesParameterFormatString = "oldvalue_{0}";
526 view.SelectCommandType = SqlDataSourceCommandType.Text;
527 view.InsertCommandType = SqlDataSourceCommandType.Text;
528 view.UpdateCommandType = SqlDataSourceCommandType.Text;
529 view.DeleteCommandType = SqlDataSourceCommandType.Text;
531 view.SelectCommand = "SELECT * FROM Customers WHERE ID = @ID";
532 view.InsertCommand = "INSERT INTO Customers (ID) VALUES (@ID)";
533 view.UpdateCommand = "UPDATE Customers SET ID = @ID WHERE ID = @oldvalue_ID";
534 view.DeleteCommand = "DELETE * FROM Customers WHERE ID = @ID";
536 Parameter selectParameter = null;
537 Parameter insertParameter = null;
538 Parameter updateParameter = null;
539 Parameter deleteParameter = null;
541 selectParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueSelect");
542 view.SelectParameters.Add (selectParameter);
545 case InitViewType.MatchParamsToOldValues:
546 insertParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueInsert");
547 view.InsertParameters.Add (insertParameter);
548 updateParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueUpdate");
549 view.UpdateParameters.Add (updateParameter);
550 deleteParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueDelete");
551 view.DeleteParameters.Add (deleteParameter);
554 case InitViewType.MatchParamsToValues:
555 insertParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueInsert");
556 view.InsertParameters.Add (insertParameter);
557 updateParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueUpdate");
558 view.UpdateParameters.Add (updateParameter);
559 deleteParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueDelete");
560 view.DeleteParameters.Add (deleteParameter);
563 case InitViewType.DontMatchParams:
564 insertParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueInsert");
565 view.InsertParameters.Add (insertParameter);
566 updateParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueUpdate");
567 view.UpdateParameters.Add (updateParameter);
568 deleteParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueDelete");
569 view.DeleteParameters.Add (deleteParameter);
573 view.SelectParameters.ParametersChanged += new EventHandler (SelectParameters_ParametersChanged);
574 view.InsertParameters.ParametersChanged += new EventHandler (InsertParameters_ParametersChanged);
575 view.UpdateParameters.ParametersChanged += new EventHandler (UpdateParameters_ParametersChanged);
576 view.DeleteParameters.ParametersChanged += new EventHandler (DeleteParameters_ParametersChanged);
578 keys = new Hashtable ();
579 keys.Add ("ID", "k_1001");
581 old_value = new Hashtable ();
582 old_value.Add ("ID", "ov_1001");
584 new_value = new Hashtable ();
585 new_value.Add ("ID", "n_1001");
587 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
589 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
590 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
591 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
592 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
596 static void view_Selecting (object source, SqlDataSourceSelectingEventArgs e)
598 if (eventsCalled == null) {
599 eventsCalled = new ArrayList ();
601 eventsCalled.Add (e.Arguments.ToString ());
602 eventsCalled.Add ("view_Selecting");
603 eventsCalled.Add (FormatParameters ((SqlParameterCollection)e.Command.Parameters));
607 static void view_Inserting (object source, SqlDataSourceCommandEventArgs e)
609 if (eventsCalled == null) {
610 eventsCalled = new ArrayList ();
612 eventsCalled.Add ("view_Inserting");
613 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
617 static void view_Updating (object source, SqlDataSourceCommandEventArgs e)
619 if (eventsCalled == null) {
620 eventsCalled = new ArrayList ();
622 eventsCalled.Add ("view_Updating");
623 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
627 static void view_Deleting (object source, SqlDataSourceCommandEventArgs e)
629 if (eventsCalled == null) {
630 eventsCalled = new ArrayList ();
632 eventsCalled.Add ("view_Deleting");
633 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
637 private static string FormatParameters (SqlParameterCollection sqlParameterCollection)
639 StringBuilder sb = new StringBuilder ();
640 foreach (SqlParameter p in sqlParameterCollection) {
644 sb.AppendFormat ("{0}:{1}={2}", p.DbType, p.ParameterName, p.Value);
646 return sb.ToString ();
649 private static IList eventsCalled;
651 static void view_DataSourceViewChanged (object sender, EventArgs e)
653 if (eventsCalled == null) {
654 eventsCalled = new ArrayList ();
656 eventsCalled.Add ("view_DataSourceViewChanged");
659 static void SelectParameters_ParametersChanged (object sender, EventArgs e)
661 if (eventsCalled == null) {
662 eventsCalled = new ArrayList ();
664 eventsCalled.Add ("SelectParameters_ParametersChanged");
667 static void InsertParameters_ParametersChanged (object sender, EventArgs e)
669 if (eventsCalled == null) {
670 eventsCalled = new ArrayList ();
672 eventsCalled.Add ("InsertParameters_ParametersChanged");
675 static void UpdateParameters_ParametersChanged (object sender, EventArgs e)
677 if (eventsCalled == null) {
678 eventsCalled = new ArrayList ();
680 eventsCalled.Add ("UpdateParameters_ParametersChanged");
683 static void DeleteParameters_ParametersChanged (object sender, EventArgs e)
685 if (eventsCalled == null) {
686 eventsCalled = new ArrayList ();
688 eventsCalled.Add ("DeleteParameters_ParametersChanged");
692 public void ParametersAndViewChangedEvent_Select ()
694 Hashtable keys = null;
695 Hashtable old_values = null;
696 Hashtable new_values = null;
697 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
699 view.Select (DataSourceSelectArguments.Empty);
701 Assert.IsNotNull (eventsCalled, "Events not raized");
702 Assert.AreEqual (5, eventsCalled.Count, "Events Count");
703 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0], "view_DataSourceViewChanged");
704 Assert.AreEqual ("SelectParameters_ParametersChanged", eventsCalled [1], "SelectParameters_ParametersChanged");
705 Assert.AreEqual ("System.Web.UI.DataSourceSelectArguments", eventsCalled [2], "DataSourceSelectArguments");
706 Assert.AreEqual ("view_Selecting", eventsCalled [3], "view_Selecting");
707 string [] expectedParams = new string []
709 "String:@ID=p_ValueSelect1"
711 string [] actualValues = ((string)eventsCalled [4]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
712 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_Select Params count");
713 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_Select expecte '{0}'");
717 public void ParametersAndViewChangedEvent_MatchInsert ()
719 Hashtable keys = null;
720 Hashtable old_values = null;
721 Hashtable new_values = null;
722 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
724 view.Insert (new_values);
726 Assert.IsNotNull (eventsCalled, "Events not raized");
727 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
728 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
729 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
730 string [] expectedParams = new string []
734 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
735 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchInsert Params count");
736 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchInsert expecte '{0}'");
740 public void ParametersAndViewChangedEvent_MatchInsertAllValues ()
742 Hashtable keys = null;
743 Hashtable old_values = null;
744 Hashtable new_values = null;
745 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
747 view.Insert (new_values);
749 Assert.IsNotNull (eventsCalled, "Events not raized");
750 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
751 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
752 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
753 string [] expectedParams = new string []
757 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
758 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchInsert Params count");
759 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchInsert expecte '{0}'");
763 public void ParametersAndViewChangedEvent_MatchOldInsert ()
765 Hashtable keys = null;
766 Hashtable old_values = null;
767 Hashtable new_values = null;
768 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
770 view.Insert (new_values);
772 Assert.IsNotNull (eventsCalled, "Events not raized");
773 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
774 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
775 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
776 string [] expectedParams = new string []
778 "String:@oldvalue_ID=p_OldValueInsert1",
781 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
782 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldInsert Params count");
783 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldInsert expecte '{0}'");
787 public void ParametersAndViewChangedEvent_MatchOldInsertAllValues ()
789 Hashtable keys = null;
790 Hashtable old_values = null;
791 Hashtable new_values = null;
792 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
794 view.Insert (new_values);
796 Assert.IsNotNull (eventsCalled, "Events not raized");
797 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
798 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
799 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
800 string [] expectedParams = new string []
802 "String:@oldvalue_ID=p_OldValueInsert1",
805 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
806 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldInsert Params count");
807 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldInsert expecte '{0}'");
811 public void ParametersAndViewChangedEvent_DontMatchInsert ()
813 Hashtable keys = null;
814 Hashtable old_values = null;
815 Hashtable new_values = null;
816 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
818 view.Insert (new_values);
820 Assert.IsNotNull (eventsCalled, "Events not raized");
821 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
822 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
823 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
824 string [] expectedParams = new string []
826 "String:@OtherValue=p_OtherValueInsert1",
829 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
830 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_DontMatchInsert Params count");
831 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_DontMatchInsert expecte '{0}'");
835 public void ParametersAndViewChangedEvent_MatchUpdate ()
837 Hashtable keys = null;
838 Hashtable old_values = null;
839 Hashtable new_values = null;
840 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
842 view.Update (keys, new_values, old_values);
844 Assert.IsNotNull (eventsCalled, "Events not raized");
845 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
846 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
847 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
848 string [] expectedParams = new string []
850 "String:@oldvalue_ID=k_1001",
853 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
854 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
855 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
859 public void ParametersAndViewChangedEvent_MatchUpdateAllValues ()
861 Hashtable keys = null;
862 Hashtable old_values = null;
863 Hashtable new_values = null;
864 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
866 view.Update (keys, new_values, old_values);
868 Assert.IsNotNull (eventsCalled, "Events not raized");
869 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
870 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
871 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
872 string [] expectedParams = new string []
874 "String:@oldvalue_ID=ov_1001",
877 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
878 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
879 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
883 public void ParametersAndViewChangedEvent_MatchOldUpdate ()
885 Hashtable keys = null;
886 Hashtable old_values = null;
887 Hashtable new_values = null;
888 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
890 view.Update (keys, new_values, old_values);
892 Assert.IsNotNull (eventsCalled, "Events not raized");
893 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
894 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
895 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
896 string [] expectedParams = new string []
898 "String:@oldvalue_ID=k_1001",
901 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
902 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
903 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
907 public void ParametersAndViewChangedEvent_MatchOldUpdateAllValues ()
909 Hashtable keys = null;
910 Hashtable old_values = null;
911 Hashtable new_values = null;
912 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
914 view.Update (keys, new_values, old_values);
916 Assert.IsNotNull (eventsCalled, "Events not raized");
917 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
918 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
919 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
920 string [] expectedParams = new string []
922 "String:@oldvalue_ID=ov_1001",
925 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
926 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
927 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
931 public void ParametersAndViewChangedEvent_DontMatchUpdate ()
933 Hashtable keys = null;
934 Hashtable old_values = null;
935 Hashtable new_values = null;
936 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
938 view.Update (keys, new_values, old_values);
940 Assert.IsNotNull (eventsCalled, "Events not raized");
941 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
942 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
943 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
944 string [] expectedParams = new string []
946 "String:@oldvalue_ID=k_1001",
948 "String:@OtherValue=p_OtherValueUpdate1"
950 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
951 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_DontMatchUpdate Params count");
952 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_DontMatchUpdate expecte '{0}'");
956 public void ParametersAndViewChangedEvent_MatchDelete ()
958 Hashtable keys = null;
959 Hashtable old_values = null;
960 Hashtable new_values = null;
961 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
963 view.Delete (keys, old_values);
965 Assert.IsNotNull (eventsCalled, "Events not raized");
966 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
967 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
968 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
969 string [] expectedParams = new string []
971 "String:@oldvalue_ID=k_1001",
973 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
974 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchDelete Params count");
975 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchDelete expecte '{0}'");
979 public void ParametersAndViewChangedEvent_MatchDeleteAllValues ()
981 Hashtable keys = null;
982 Hashtable old_values = null;
983 Hashtable new_values = null;
984 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
986 view.Delete (keys, old_values);
988 Assert.IsNotNull (eventsCalled, "Events not raized");
989 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
990 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
991 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
992 string [] expectedParams = new string []
994 "String:@oldvalue_ID=ov_1001",
996 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
997 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchDelete Params count");
998 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchDelete expecte '{0}'");
1002 public void ParametersAndViewChangedEvent_MatchOldDelete ()
1004 Hashtable keys = null;
1005 Hashtable old_values = null;
1006 Hashtable new_values = null;
1007 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
1009 view.Delete (keys, old_values);
1011 Assert.IsNotNull (eventsCalled, "Events not raized");
1012 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1013 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1014 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
1015 string [] expectedParams = new string []
1017 "String:@oldvalue_ID=k_1001",
1019 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
1020 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
1021 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
1025 public void ParametersAndViewChangedEvent_MatchOldDeleteAllValues ()
1027 Hashtable keys = null;
1028 Hashtable old_values = null;
1029 Hashtable new_values = null;
1030 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
1032 view.Delete (keys, old_values);
1034 Assert.IsNotNull (eventsCalled, "Events not raized");
1035 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1036 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1037 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
1038 string [] expectedParams = new string []
1040 "String:@oldvalue_ID=ov_1001",
1042 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
1043 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
1044 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
1048 public void ParametersAndViewChangedEvent_DontMatchDelete ()
1050 Hashtable keys = null;
1051 Hashtable old_values = null;
1052 Hashtable new_values = null;
1053 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
1055 view.Delete (keys, old_values);
1057 Assert.IsNotNull (eventsCalled, "Events not raized");
1058 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1059 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1060 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
1061 string [] expectedParams = new string []
1063 "String:@oldvalue_ID=k_1001",
1064 "String:@OtherValue=p_OtherValueDelete1"
1066 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
1067 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
1068 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
1071 private static void ValidatePassedParams (string [] expectedParams, string [] actualValues, string errorMessageFormat)
1073 foreach (string eps in expectedParams) {
1075 foreach (string aps in actualValues) {
1081 Assert.IsTrue (found, String.Format (errorMessageFormat, eps));