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);
67 public class SqlDataSourceViewTest
76 public void Defaults ()
78 SqlDataSource ds = new SqlDataSource ();
79 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
81 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
82 Assert.IsFalse (sql.CanDelete,"A2");
83 Assert.IsFalse (sql.CanInsert,"A3");
84 Assert.IsFalse (sql.CanPage,"A4");
85 Assert.IsFalse (sql.CanRetrieveTotalRowCount,"A5");
86 Assert.IsTrue (sql.CanSort,"A6");
87 Assert.IsFalse (sql.CanUpdate,"A7");
88 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A8");
89 Assert.AreEqual ("", sql.DeleteCommand, "A9");
90 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A10");
91 Assert.IsNotNull (sql.DeleteParameters, "A11");
92 Assert.AreEqual (0, sql.DeleteParameters.Count, "A12");
93 Assert.AreEqual ("", sql.FilterExpression, "A13");
94 Assert.IsNotNull (sql.FilterParameters, "A14");
95 Assert.AreEqual (0, sql.FilterParameters.Count, "A15");
96 Assert.AreEqual ("", sql.InsertCommand, "A16");
97 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A17");
98 Assert.IsNotNull (sql.InsertParameters, "A18");
99 Assert.AreEqual (0, sql.InsertParameters.Count, "A19");
100 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A20");
101 Assert.AreEqual ("", sql.SelectCommand, "A21");
102 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A22");
103 Assert.IsNotNull (sql.SelectParameters, "A23");
104 Assert.AreEqual (0, sql.SelectParameters.Count, "A24");
105 Assert.AreEqual ("", sql.SortParameterName, "A25");
106 Assert.AreEqual ("", sql.UpdateCommand, "A26");
107 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A27");
108 Assert.IsNotNull (sql.UpdateParameters, "A28");
109 Assert.AreEqual (0, sql.UpdateParameters.Count, "A29");
113 public void ViewStateSupport ()
115 SqlDataSource ds = new SqlDataSource ();
116 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
118 ds.ID = "SqlDataSource1";
119 ds.SelectCommand = "Select";
121 Parameter p1 = new Parameter ("test", TypeCode.String);
123 Assert.IsTrue (((IStateManager) view).IsTrackingViewState, "IsTrackingViewState");
124 Assert.IsTrue (((IStateManager) view.FilterParameters).IsTrackingViewState, "FilterParameters.IsTrackingViewState");
125 Assert.IsTrue (((IStateManager) view.SelectParameters).IsTrackingViewState, "SelecteParameters.IsTrackingViewState");
126 Assert.IsFalse (((IStateManager) view.DeleteParameters).IsTrackingViewState, "DeleteParameters.IsTrackingViewState");
127 Assert.IsFalse (((IStateManager) view.InsertParameters).IsTrackingViewState, "InsertParameters.IsTrackingViewState");
128 Assert.IsFalse (((IStateManager) view.UpdateParameters).IsTrackingViewState, "UpdateParameters.IsTrackingViewState");
130 object state = ((IStateManager) view).SaveViewState ();
131 Assert.IsNull (state, "view ViewState not null");
133 view.DeleteParameters.Add (p1);
134 view.InsertParameters.Add (p1);
135 //view.UpdateParameters.Add (p1);
137 state = ((IStateManager) view).SaveViewState ();
138 Assert.IsNull (state, "view ViewState not null");
140 view.FilterParameters.Add (p1);
141 //view.SelectParameters.Add (p1);
143 state = ((IStateManager) view).SaveViewState ();
144 Assert.IsNotNull (state, "view ViewState not null");
146 state = ((IStateManager) view.FilterParameters).SaveViewState ();
147 Assert.IsNotNull (state, "FilterParamenters ViewState not null");
148 state = ((IStateManager) view.SelectParameters).SaveViewState ();
149 Assert.IsNull (state, "SelectParameters ViewState not null");
151 state = ((IStateManager) view.DeleteParameters).SaveViewState ();
152 Assert.IsNotNull (state, "DeleteParameters ViewState not null");
153 state = ((IStateManager) view.InsertParameters).SaveViewState ();
154 Assert.IsNotNull (state, "InsertParameters ViewState not null");
155 state = ((IStateManager) view.UpdateParameters).SaveViewState ();
156 Assert.IsNull (state, "UpdateParameters ViewState not null");
160 public void ViewState ()
162 SqlDataSource ds = new SqlDataSource ();
163 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
165 /* XXX test parameters */
167 sql.CancelSelectOnNullParameter = false;
168 sql.ConflictDetection = ConflictOptions.CompareAllValues;
169 sql.DeleteCommandType = SqlDataSourceCommandType.Text;
170 sql.DeleteCommand = "delete command";
171 sql.FilterExpression = "filter expression";
172 sql.InsertCommand = "insert command";
173 sql.InsertCommandType = SqlDataSourceCommandType.Text;
174 sql.OldValuesParameterFormatString = "{1}";
175 sql.SelectCommand = "select command";
176 sql.SelectCommandType = SqlDataSourceCommandType.Text;
177 sql.SortParameterName = "sort parameter";
178 sql.UpdateCommand = "update command";
179 sql.UpdateCommandType = SqlDataSourceCommandType.Text;
181 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A1");
182 Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A2");
183 Assert.AreEqual ("delete command", sql.DeleteCommand, "A3");
184 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");
185 Assert.AreEqual ("filter expression", sql.FilterExpression, "A5");
186 Assert.AreEqual ("insert command", sql.InsertCommand, "A6");
187 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A7");
188 Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");
189 Assert.AreEqual ("select command", sql.SelectCommand, "A9");
190 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A10");
191 Assert.AreEqual ("sort parameter", sql.SortParameterName, "A11");
192 Assert.AreEqual ("update command", sql.UpdateCommand, "A12");
193 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A13");
195 object state = sql.SaveToViewState();
196 Assert.IsNull (state, "ViewState is null");
198 sql = new SqlViewPoker (ds, "DefaultView", null);
199 sql.LoadFromViewState (state);
201 Assert.IsTrue(sql.CancelSelectOnNullParameter, "B1");
202 Assert.IsFalse(sql.CanDelete, "B2");
203 Assert.IsFalse(sql.CanInsert, "B3");
204 Assert.IsFalse(sql.CanPage, "B4");
205 Assert.IsFalse(sql.CanRetrieveTotalRowCount, "B5");
206 Assert.IsTrue(sql.CanSort, "B6");
207 Assert.IsFalse(sql.CanUpdate, "B7");
208 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "B8");
209 Assert.AreEqual ("", sql.DeleteCommand, "B9");
210 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B10");
211 Assert.IsNotNull(sql.DeleteParameters, "B11");
212 Assert.AreEqual(0, sql.DeleteParameters.Count, "B12");
213 Assert.AreEqual ("", sql.FilterExpression, "B13");
214 Assert.IsNotNull(sql.FilterParameters, "B14");
215 Assert.AreEqual(0, sql.FilterParameters.Count, "B15");
216 Assert.AreEqual ("", sql.InsertCommand, "B16");
217 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.InsertCommandType, "B17");
218 Assert.IsNotNull(sql.InsertParameters, "B18");
219 Assert.AreEqual(0, sql.InsertParameters.Count, "B19");
220 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "B20");
221 Assert.AreEqual ("", sql.SelectCommand, "B21");
222 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.SelectCommandType, "B22");
223 Assert.IsNotNull(sql.SelectParameters, "B23");
224 Assert.AreEqual(0, sql.SelectParameters.Count, "B24");
225 Assert.AreEqual ("", sql.SortParameterName, "B25");
226 Assert.AreEqual ("", sql.UpdateCommand, "B26");
227 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B27");
228 Assert.IsNotNull(sql.UpdateParameters, "B28");
229 Assert.AreEqual(0, sql.UpdateParameters.Count, "B29");
233 public void CanDelete ()
235 SqlDataSource ds = new SqlDataSource ();
236 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
238 sql.DeleteCommand = "DELETE from foo";
239 Assert.IsTrue (sql.CanDelete, "A1");
241 sql.DeleteCommand = "";
242 Assert.IsFalse (sql.CanDelete, "A2");
244 sql.DeleteCommand = null;
245 Assert.IsFalse (sql.CanDelete, "A3");
249 public void CanInsert ()
251 SqlDataSource ds = new SqlDataSource ();
252 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
254 sql.InsertCommand = "INSERT into foo";
255 Assert.IsTrue (sql.CanInsert, "A1");
257 sql.InsertCommand = "";
258 Assert.IsFalse (sql.CanInsert, "A2");
260 sql.InsertCommand = null;
261 Assert.IsFalse (sql.CanInsert, "A3");
265 public void CanUpdate ()
267 SqlDataSource ds = new SqlDataSource ();
268 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
270 sql.UpdateCommand = "UPDATE foo";
271 Assert.IsTrue (sql.CanUpdate, "A1");
273 sql.UpdateCommand = "";
274 Assert.IsFalse (sql.CanUpdate, "A2");
276 sql.UpdateCommand = null;
277 Assert.IsFalse (sql.CanUpdate, "A3");
281 public void CanSort ()
283 SqlDataSource ds = new SqlDataSource ();
284 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
286 sql.SortParameterName = "foo";
287 Assert.IsTrue (sql.CanSort, "A1");
289 sql.SortParameterName = null;
290 Assert.IsTrue (sql.CanSort, "A2");
292 sql.SortParameterName = "";
293 Assert.IsTrue (sql.CanSort, "A3");
295 sql.SortParameterName = "foo";
297 ds.DataSourceMode = SqlDataSourceMode.DataReader;
298 Assert.IsTrue (sql.CanSort, "A4");
300 ds.DataSourceMode = SqlDataSourceMode.DataSet;
301 Assert.IsTrue (sql.CanSort, "A5");
303 sql.SortParameterName = "";
305 ds.DataSourceMode = SqlDataSourceMode.DataReader;
306 Assert.IsFalse (sql.CanSort, "A6");
308 ds.DataSourceMode = SqlDataSourceMode.DataSet;
309 Assert.IsTrue (sql.CanSort, "A7");
313 public void OldValuesParameterFormatString ()
315 SqlDataSource ds = new SqlDataSource ();
317 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A1");
319 ds.OldValuesParameterFormatString = "hi {0}";
321 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
323 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A2");
325 ds.OldValuesParameterFormatString = "hi {0}";
327 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A3");
329 ds.OldValuesParameterFormatString = "{0}";
330 sql.OldValuesParameterFormatString = "hi {0}";
332 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A4");
336 public void CancelSelectOnNullParameter ()
338 SqlDataSource ds = new SqlDataSource ();
340 ds.CancelSelectOnNullParameter = false;
342 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
344 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
346 ds.CancelSelectOnNullParameter = true;
347 sql.CancelSelectOnNullParameter = false;
349 Assert.IsTrue (ds.CancelSelectOnNullParameter, "A2");
351 sql.CancelSelectOnNullParameter = false;
352 ds.CancelSelectOnNullParameter = true;
353 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A3");
356 public class AlwaysChangingParameter : Parameter
360 public AlwaysChangingParameter (string name, TypeCode type, string defaultValue)
361 : base (name, type, defaultValue) {
365 protected override object Evaluate (HttpContext context, Control control) {
367 return String.Format ("{0}{1}", DefaultValue, evaluateCount);
374 MatchParamsToOldValues,
378 private static SqlViewPoker InitializeView (InitViewType initType, ConflictOptions conflictDetection, out Hashtable keys, out Hashtable old_value, out Hashtable new_value)
380 SqlDataSource ds = new SqlDataSource ();
381 ds.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";
382 ds.ProviderName = "System.Data.SqlClient";
383 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
385 view.ConflictDetection = conflictDetection;
386 view.OldValuesParameterFormatString = "oldvalue_{0}";
387 view.SelectCommandType = SqlDataSourceCommandType.Text;
388 view.InsertCommandType = SqlDataSourceCommandType.Text;
389 view.UpdateCommandType = SqlDataSourceCommandType.Text;
390 view.DeleteCommandType = SqlDataSourceCommandType.Text;
392 view.SelectCommand = "SELECT * FROM Customers WHERE ID = @ID";
393 view.InsertCommand = "INSERT INTO Customers (ID) VALUES (@ID)";
394 view.UpdateCommand = "UPDATE Customers SET ID = @ID WHERE ID = @oldvalue_ID";
395 view.DeleteCommand = "DELETE * FROM Customers WHERE ID = @ID";
397 Parameter selectParameter = null;
398 Parameter insertParameter = null;
399 Parameter updateParameter = null;
400 Parameter deleteParameter = null;
402 selectParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueSelect");
403 view.SelectParameters.Add (selectParameter);
406 case InitViewType.MatchParamsToOldValues:
407 insertParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueInsert");
408 view.InsertParameters.Add (insertParameter);
409 updateParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueUpdate");
410 view.UpdateParameters.Add (updateParameter);
411 deleteParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueDelete");
412 view.DeleteParameters.Add (deleteParameter);
415 case InitViewType.MatchParamsToValues:
416 insertParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueInsert");
417 view.InsertParameters.Add (insertParameter);
418 updateParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueUpdate");
419 view.UpdateParameters.Add (updateParameter);
420 deleteParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueDelete");
421 view.DeleteParameters.Add (deleteParameter);
424 case InitViewType.DontMatchParams:
425 insertParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueInsert");
426 view.InsertParameters.Add (insertParameter);
427 updateParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueUpdate");
428 view.UpdateParameters.Add (updateParameter);
429 deleteParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueDelete");
430 view.DeleteParameters.Add (deleteParameter);
434 view.SelectParameters.ParametersChanged += new EventHandler (SelectParameters_ParametersChanged);
435 view.InsertParameters.ParametersChanged += new EventHandler (InsertParameters_ParametersChanged);
436 view.UpdateParameters.ParametersChanged += new EventHandler (UpdateParameters_ParametersChanged);
437 view.DeleteParameters.ParametersChanged += new EventHandler (DeleteParameters_ParametersChanged);
439 keys = new Hashtable ();
440 keys.Add ("ID", "k_1001");
442 old_value = new Hashtable ();
443 old_value.Add ("ID", "ov_1001");
445 new_value = new Hashtable ();
446 new_value.Add ("ID", "n_1001");
448 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
450 view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);
451 view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);
452 view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);
453 view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);
457 static void view_Selecting (object source, SqlDataSourceSelectingEventArgs e)
459 if (eventsCalled == null) {
460 eventsCalled = new ArrayList ();
462 eventsCalled.Add (e.Arguments.ToString ());
463 eventsCalled.Add ("view_Selecting");
464 eventsCalled.Add (FormatParameters ((SqlParameterCollection)e.Command.Parameters));
468 static void view_Inserting (object source, SqlDataSourceCommandEventArgs e)
470 if (eventsCalled == null) {
471 eventsCalled = new ArrayList ();
473 eventsCalled.Add ("view_Inserting");
474 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
478 static void view_Updating (object source, SqlDataSourceCommandEventArgs e)
480 if (eventsCalled == null) {
481 eventsCalled = new ArrayList ();
483 eventsCalled.Add ("view_Updating");
484 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
488 static void view_Deleting (object source, SqlDataSourceCommandEventArgs e)
490 if (eventsCalled == null) {
491 eventsCalled = new ArrayList ();
493 eventsCalled.Add ("view_Deleting");
494 eventsCalled.Add (FormatParameters ((SqlParameterCollection) e.Command.Parameters));
498 private static string FormatParameters (SqlParameterCollection sqlParameterCollection)
500 StringBuilder sb = new StringBuilder ();
501 foreach (SqlParameter p in sqlParameterCollection) {
505 sb.AppendFormat ("{0}:{1}={2}", p.DbType, p.ParameterName, p.Value);
507 return sb.ToString ();
510 private static IList eventsCalled;
512 static void view_DataSourceViewChanged (object sender, EventArgs e)
514 if (eventsCalled == null) {
515 eventsCalled = new ArrayList ();
517 eventsCalled.Add ("view_DataSourceViewChanged");
520 static void SelectParameters_ParametersChanged (object sender, EventArgs e)
522 if (eventsCalled == null) {
523 eventsCalled = new ArrayList ();
525 eventsCalled.Add ("SelectParameters_ParametersChanged");
528 static void InsertParameters_ParametersChanged (object sender, EventArgs e)
530 if (eventsCalled == null) {
531 eventsCalled = new ArrayList ();
533 eventsCalled.Add ("InsertParameters_ParametersChanged");
536 static void UpdateParameters_ParametersChanged (object sender, EventArgs e)
538 if (eventsCalled == null) {
539 eventsCalled = new ArrayList ();
541 eventsCalled.Add ("UpdateParameters_ParametersChanged");
544 static void DeleteParameters_ParametersChanged (object sender, EventArgs e)
546 if (eventsCalled == null) {
547 eventsCalled = new ArrayList ();
549 eventsCalled.Add ("DeleteParameters_ParametersChanged");
553 public void ParametersAndViewChangedEvent_Select ()
555 Hashtable keys = null;
556 Hashtable old_values = null;
557 Hashtable new_values = null;
558 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
560 view.Select (DataSourceSelectArguments.Empty);
562 Assert.IsNotNull (eventsCalled, "Events not raized");
563 Assert.AreEqual (5, eventsCalled.Count, "Events Count");
564 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0], "view_DataSourceViewChanged");
565 Assert.AreEqual ("SelectParameters_ParametersChanged", eventsCalled [1], "SelectParameters_ParametersChanged");
566 Assert.AreEqual ("System.Web.UI.DataSourceSelectArguments", eventsCalled [2], "DataSourceSelectArguments");
567 Assert.AreEqual ("view_Selecting", eventsCalled [3], "view_Selecting");
568 string [] expectedParams = new string []
570 "String:@ID=p_ValueSelect1"
572 string [] actualValues = ((string)eventsCalled [4]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
573 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_Select Params count");
574 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_Select expecte '{0}'");
578 public void ParametersAndViewChangedEvent_MatchInsert ()
580 Hashtable keys = null;
581 Hashtable old_values = null;
582 Hashtable new_values = null;
583 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
585 view.Insert (new_values);
587 Assert.IsNotNull (eventsCalled, "Events not raized");
588 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
589 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
590 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
591 string [] expectedParams = new string []
595 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
596 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchInsert Params count");
597 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchInsert expecte '{0}'");
601 public void ParametersAndViewChangedEvent_MatchInsertAllValues ()
603 Hashtable keys = null;
604 Hashtable old_values = null;
605 Hashtable new_values = null;
606 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
608 view.Insert (new_values);
610 Assert.IsNotNull (eventsCalled, "Events not raized");
611 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
612 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
613 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
614 string [] expectedParams = new string []
618 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
619 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchInsert Params count");
620 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchInsert expecte '{0}'");
624 public void ParametersAndViewChangedEvent_MatchOldInsert ()
626 Hashtable keys = null;
627 Hashtable old_values = null;
628 Hashtable new_values = null;
629 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
631 view.Insert (new_values);
633 Assert.IsNotNull (eventsCalled, "Events not raized");
634 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
635 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
636 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
637 string [] expectedParams = new string []
639 "String:@oldvalue_ID=p_OldValueInsert1",
642 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
643 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldInsert Params count");
644 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldInsert expecte '{0}'");
648 public void ParametersAndViewChangedEvent_MatchOldInsertAllValues ()
650 Hashtable keys = null;
651 Hashtable old_values = null;
652 Hashtable new_values = null;
653 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
655 view.Insert (new_values);
657 Assert.IsNotNull (eventsCalled, "Events not raized");
658 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
659 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
660 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
661 string [] expectedParams = new string []
663 "String:@oldvalue_ID=p_OldValueInsert1",
666 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
667 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldInsert Params count");
668 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldInsert expecte '{0}'");
672 public void ParametersAndViewChangedEvent_DontMatchInsert ()
674 Hashtable keys = null;
675 Hashtable old_values = null;
676 Hashtable new_values = null;
677 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
679 view.Insert (new_values);
681 Assert.IsNotNull (eventsCalled, "Events not raized");
682 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
683 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
684 Assert.AreEqual ("view_Inserting", eventsCalled [1], "view_Inserting");
685 string [] expectedParams = new string []
687 "String:@OtherValue=p_OtherValueInsert1",
690 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
691 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_DontMatchInsert Params count");
692 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_DontMatchInsert expecte '{0}'");
696 public void ParametersAndViewChangedEvent_MatchUpdate ()
698 Hashtable keys = null;
699 Hashtable old_values = null;
700 Hashtable new_values = null;
701 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
703 view.Update (keys, new_values, old_values);
705 Assert.IsNotNull (eventsCalled, "Events not raized");
706 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
707 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
708 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
709 string [] expectedParams = new string []
711 "String:@oldvalue_ID=k_1001",
714 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
715 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
716 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
720 public void ParametersAndViewChangedEvent_MatchUpdateAllValues ()
722 Hashtable keys = null;
723 Hashtable old_values = null;
724 Hashtable new_values = null;
725 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
727 view.Update (keys, new_values, old_values);
729 Assert.IsNotNull (eventsCalled, "Events not raized");
730 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
731 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
732 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
733 string [] expectedParams = new string []
735 "String:@oldvalue_ID=ov_1001",
738 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
739 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
740 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
744 public void ParametersAndViewChangedEvent_MatchOldUpdate ()
746 Hashtable keys = null;
747 Hashtable old_values = null;
748 Hashtable new_values = null;
749 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
751 view.Update (keys, new_values, old_values);
753 Assert.IsNotNull (eventsCalled, "Events not raized");
754 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
755 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
756 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
757 string [] expectedParams = new string []
759 "String:@oldvalue_ID=k_1001",
762 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
763 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
764 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
768 public void ParametersAndViewChangedEvent_MatchOldUpdateAllValues ()
770 Hashtable keys = null;
771 Hashtable old_values = null;
772 Hashtable new_values = null;
773 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
775 view.Update (keys, new_values, old_values);
777 Assert.IsNotNull (eventsCalled, "Events not raized");
778 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
779 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
780 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
781 string [] expectedParams = new string []
783 "String:@oldvalue_ID=ov_1001",
786 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
787 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchUpdate Params count");
788 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchUpdate expecte '{0}'");
792 public void ParametersAndViewChangedEvent_DontMatchUpdate ()
794 Hashtable keys = null;
795 Hashtable old_values = null;
796 Hashtable new_values = null;
797 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
799 view.Update (keys, new_values, old_values);
801 Assert.IsNotNull (eventsCalled, "Events not raized");
802 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
803 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
804 Assert.AreEqual ("view_Updating", eventsCalled [1], "view_Updating");
805 string [] expectedParams = new string []
807 "String:@oldvalue_ID=k_1001",
809 "String:@OtherValue=p_OtherValueUpdate1"
811 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
812 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_DontMatchUpdate Params count");
813 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_DontMatchUpdate expecte '{0}'");
817 public void ParametersAndViewChangedEvent_MatchDelete ()
819 Hashtable keys = null;
820 Hashtable old_values = null;
821 Hashtable new_values = null;
822 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
824 view.Delete (keys, old_values);
826 Assert.IsNotNull (eventsCalled, "Events not raized");
827 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
828 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
829 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
830 string [] expectedParams = new string []
832 "String:@oldvalue_ID=k_1001",
834 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
835 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchDelete Params count");
836 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchDelete expecte '{0}'");
840 public void ParametersAndViewChangedEvent_MatchDeleteAllValues ()
842 Hashtable keys = null;
843 Hashtable old_values = null;
844 Hashtable new_values = null;
845 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
847 view.Delete (keys, old_values);
849 Assert.IsNotNull (eventsCalled, "Events not raized");
850 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
851 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
852 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
853 string [] expectedParams = new string []
855 "String:@oldvalue_ID=ov_1001",
857 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
858 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchDelete Params count");
859 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchDelete expecte '{0}'");
863 public void ParametersAndViewChangedEvent_MatchOldDelete ()
865 Hashtable keys = null;
866 Hashtable old_values = null;
867 Hashtable new_values = null;
868 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
870 view.Delete (keys, old_values);
872 Assert.IsNotNull (eventsCalled, "Events not raized");
873 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
874 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
875 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
876 string [] expectedParams = new string []
878 "String:@oldvalue_ID=k_1001",
880 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
881 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
882 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
886 public void ParametersAndViewChangedEvent_MatchOldDeleteAllValues ()
888 Hashtable keys = null;
889 Hashtable old_values = null;
890 Hashtable new_values = null;
891 SqlViewPoker view = InitializeView (InitViewType.MatchParamsToOldValues, ConflictOptions.CompareAllValues, out keys, out old_values, out new_values);
893 view.Delete (keys, old_values);
895 Assert.IsNotNull (eventsCalled, "Events not raized");
896 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
897 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
898 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
899 string [] expectedParams = new string []
901 "String:@oldvalue_ID=ov_1001",
903 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
904 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
905 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
909 public void ParametersAndViewChangedEvent_DontMatchDelete ()
911 Hashtable keys = null;
912 Hashtable old_values = null;
913 Hashtable new_values = null;
914 SqlViewPoker view = InitializeView (InitViewType.DontMatchParams, ConflictOptions.OverwriteChanges, out keys, out old_values, out new_values);
916 view.Delete (keys, old_values);
918 Assert.IsNotNull (eventsCalled, "Events not raized");
919 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
920 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
921 Assert.AreEqual ("view_Deleting", eventsCalled [1], "view_Deleting");
922 string [] expectedParams = new string []
924 "String:@oldvalue_ID=k_1001",
925 "String:@OtherValue=p_OtherValueDelete1"
927 string [] actualValues = ((string) eventsCalled [2]).Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);
928 Assert.AreEqual (expectedParams.Length, actualValues.Length, "ParametersAndViewChangedEvent_MatchOldDelete Params count");
929 ValidatePassedParams (expectedParams, actualValues, "ParametersAndViewChangedEvent_MatchOldDelete expecte '{0}'");
932 private static void ValidatePassedParams (string [] expectedParams, string [] actualValues, string errorMessageFormat)
934 foreach (string eps in expectedParams) {
936 foreach (string aps in actualValues) {
942 Assert.IsTrue (found, String.Format (errorMessageFormat, eps));