2 // Tests for System.Web.UI.WebControls.ObjectDataSourceView
5 // Chris Toshok (toshok@novell.com)
6 // Konstantin Triger (kostat@mainsoft.com)
7 // Yoni Klain (yonik@mainsoft.com)
11 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 // WARNING NOTES : ALL NUNITWEB TESTS DOING UNLOAD BETWEEN TESTS FOR RELOAD
33 // OBJECT DATA SOURCE DEFAULT DATA
38 using NUnit.Framework;
41 using System.Configuration;
42 using System.Data.Common;
44 using System.Globalization;
47 using System.Web.UI.WebControls;
49 using System.Collections;
50 using MonoTests.SystemWeb.Framework;
51 using MonoTests.stand_alone.WebHarness;
52 using System.Threading;
54 namespace MonoTests.System.Web.UI.WebControls
56 class ObjectViewPoker : ObjectDataSourceView
58 public ObjectViewPoker (ObjectDataSource ds, string name, HttpContext context)
59 : base (ds, name, context)
64 public bool GetIsTrackingViewState ()
66 return base.IsTrackingViewState;
69 public object SaveToViewState ()
71 return SaveViewState ();
74 public void LoadFromViewState (object savedState)
76 LoadViewState (savedState);
79 public void DoOnDeleting (ObjectDataSourceMethodEventArgs e)
84 public void DoOnInserting (ObjectDataSourceMethodEventArgs e)
89 public void DoOnFiltering (ObjectDataSourceFilteringEventArgs e)
94 public void DoOnObjectCreating (ObjectDataSourceEventArgs e)
96 base.OnObjectCreating (e);
99 public void DoOnObjectCreated (ObjectDataSourceEventArgs e)
101 base.OnObjectCreated (e);
104 public void DoOnObjectDisposing (ObjectDataSourceDisposingEventArgs e)
106 base.OnObjectDisposing (e);
109 public void DoOnSelecting (ObjectDataSourceSelectingEventArgs e)
111 base.OnSelecting (e);
114 public void DoOnUpdating (ObjectDataSourceMethodEventArgs e)
119 public void DoOnUpdated (ObjectDataSourceStatusEventArgs e)
124 public void DoOnDeleted (ObjectDataSourceStatusEventArgs e)
129 public void DoOnInserted (ObjectDataSourceStatusEventArgs e)
134 public void DoOnSelected (ObjectDataSourceStatusEventArgs e)
139 public int DoExecuteDelete (IDictionary keys, IDictionary oldValues)
141 return base.ExecuteDelete (keys, oldValues);
144 public void DoOnDataSourceViewChanged ()
146 base.OnDataSourceViewChanged (new EventArgs ());
152 public class ObjectDataSourceViewTest
155 [TestFixtureTearDown]
156 public void TearDown ()
168 public void Defaults ()
170 ObjectDataSource ds = new ObjectDataSource ();
171 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
173 Assert.IsFalse (sql.CanDelete, "CanDelete");
174 Assert.IsFalse (sql.CanInsert, "CanInsert");
175 Assert.IsFalse (sql.CanPage, "CanPage");
176 Assert.IsTrue (sql.CanSort, "CanSort");
177 Assert.IsFalse (sql.CanUpdate, "CanUpdate");
178 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "ConflictDetection");
179 Assert.IsFalse (sql.ConvertNullToDBNull, "ConvertNullToDBNull");
180 Assert.AreEqual ("", sql.DataObjectTypeName, "DataObjectTypeName");
181 Assert.AreEqual ("", sql.DeleteMethod, "DeleteMethod");
182 Assert.IsNotNull (sql.DeleteParameters, "DeleteParameters");
183 Assert.AreEqual (0, sql.DeleteParameters.Count, "DeleteParameters.Count");
184 Assert.IsFalse (sql.EnablePaging, "EnablePaging");
185 Assert.AreEqual ("", sql.InsertMethod, "InsertMethod");
186 Assert.IsNotNull (sql.InsertParameters, "InsertParameters");
187 Assert.AreEqual (0, sql.InsertParameters.Count, "InsertParameters.Count");
188 Assert.AreEqual ("", sql.FilterExpression, "FilterExpression");
189 Assert.IsNotNull (sql.FilterParameters, "FilterParameters");
190 Assert.AreEqual (0, sql.FilterParameters.Count, "FilterParameters.Count");
191 Assert.AreEqual ("maximumRows", sql.MaximumRowsParameterName, "MaximumRowsParameterName");
192 Assert.AreEqual ("", sql.SelectCountMethod, "SelectCountMethod");
193 Assert.AreEqual ("", sql.SelectMethod, "SelectMethod");
194 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "OldValuesParameterFormatString");
195 Assert.IsNotNull (sql.SelectParameters, "SelectParameters");
196 Assert.AreEqual (0, sql.SelectParameters.Count, "SelectParameters.Count");
197 Assert.AreEqual ("", sql.SortParameterName, "SortParameterName");
198 Assert.IsNotNull (sql.UpdateParameters, "UpdateParameters");
199 Assert.AreEqual (0, sql.UpdateParameters.Count, "UpdateParameters.Count");
200 Assert.AreEqual ("startRowIndex", sql.StartRowIndexParameterName, "StartRowIndexParameterName");
201 Assert.AreEqual ("", sql.TypeName, "TypeName");
202 Assert.AreEqual ("", sql.UpdateMethod, "UpdateMethod");
203 Assert.AreEqual (true, sql.GetIsTrackingViewState (), "IsTrackingViewState");
204 Assert.IsTrue (sql.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount");
208 public void DefaultsAssignProperties ()
211 ObjectDataSource ds = new ObjectDataSource ();
212 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
214 sql.ConflictDetection = ConflictOptions.CompareAllValues;
215 Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "ConflictDetection");
217 sql.ConvertNullToDBNull = true;
218 Assert.IsTrue (sql.ConvertNullToDBNull, "ConvertNullToDBNull");
220 sql.DataObjectTypeName = "test";
221 Assert.AreEqual ("test", sql.DataObjectTypeName, "DataObjectTypeName");
223 sql.DeleteMethod = "test";
224 Assert.AreEqual ("test", sql.DeleteMethod, "DeleteMethod");
226 sql.EnablePaging = true;
227 Assert.IsTrue (sql.EnablePaging, "EnablePaging");
229 sql.InsertMethod = "test";
230 Assert.AreEqual ("test", sql.InsertMethod, "InsertMethod");
232 sql.FilterExpression = "test";
233 Assert.AreEqual ("test", sql.FilterExpression, "FilterExpression");
235 sql.MaximumRowsParameterName = "test";
236 Assert.AreEqual ("test", sql.MaximumRowsParameterName, "MaximumRowsParameterName");
238 sql.SelectCountMethod = "test";
239 Assert.AreEqual ("test", sql.SelectCountMethod, "SelectCountMethod");
241 sql.SelectMethod = "test";
242 Assert.AreEqual ("test", sql.SelectMethod, "SelectMethod");
244 sql.OldValuesParameterFormatString = "test";
245 Assert.AreEqual ("test", sql.OldValuesParameterFormatString, "OldValuesParameterFormatString");
247 sql.StartRowIndexParameterName = "test";
248 Assert.AreEqual ("test", sql.StartRowIndexParameterName, "StartRowIndexParameterName");
250 sql.TypeName = "test";
251 Assert.AreEqual ("test", sql.TypeName, "TypeName");
253 sql.UpdateMethod = "test";
254 Assert.AreEqual ("test", sql.UpdateMethod, "UpdateMethod");
256 Assert.AreEqual ("DefaultView", sql.Name, "Name");
261 public void ViewStateSupport ()
263 ObjectDataSourceView view;
264 MyDataSource ds = new MyDataSource ();
266 ds.ID = "ObjectDataSource2";
267 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
268 ds.SelectMethod = "Select";
269 ds.SelectCountMethod = "SelectCount";
271 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
272 ((IStateManager) view).TrackViewState ();
274 Parameter p1 = new Parameter ("test", TypeCode.String);
276 Assert.IsTrue (((IStateManager) view).IsTrackingViewState, "IsTrackingViewState");
277 Assert.IsTrue (((IStateManager) view.FilterParameters).IsTrackingViewState, "FilterParameters.IsTrackingViewState");
278 Assert.IsTrue (((IStateManager) view.SelectParameters).IsTrackingViewState, "SelecteParameters.IsTrackingViewState");
279 Assert.IsFalse (((IStateManager) view.DeleteParameters).IsTrackingViewState, "DeleteParameters.IsTrackingViewState");
280 Assert.IsFalse (((IStateManager) view.InsertParameters).IsTrackingViewState, "InsertParameters.IsTrackingViewState");
281 Assert.IsFalse (((IStateManager) view.UpdateParameters).IsTrackingViewState, "UpdateParameters.IsTrackingViewState");
283 object state = ((IStateManager) view).SaveViewState ();
284 Assert.IsNull (state, "view ViewState not null");
286 view.DeleteParameters.Add (p1);
287 view.InsertParameters.Add (p1);
288 //view.UpdateParameters.Add (p1);
290 state = ((IStateManager) view).SaveViewState ();
291 Assert.IsNull (state, "view ViewState not null");
293 view.FilterParameters.Add (p1);
294 //view.SelectParameters.Add (p1);
296 state = ((IStateManager) view).SaveViewState ();
297 Assert.IsNotNull (state, "view ViewState not null");
299 state = ((IStateManager) view.FilterParameters).SaveViewState ();
300 Assert.IsNotNull (state, "FilterParamenters ViewState not null");
301 state = ((IStateManager) view.SelectParameters).SaveViewState ();
302 Assert.IsNull (state, "SelectParameters ViewState not null");
304 state = ((IStateManager) view.DeleteParameters).SaveViewState ();
305 Assert.IsNotNull (state, "DeleteParameters ViewState not null");
306 state = ((IStateManager) view.InsertParameters).SaveViewState ();
307 Assert.IsNotNull (state, "InsertParameters ViewState not null");
308 state = ((IStateManager) view.UpdateParameters).SaveViewState ();
309 Assert.IsNull (state, "UpdateParameters ViewState not null");
313 public void ViewState ()
316 // IStateManager implementation allows public access to control state
317 // Nothing added to viewstate
319 ObjectDataSourceView view;
320 MyDataSource ds = new MyDataSource ();
322 ds.ID = "ObjectDataSource2";
323 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
324 ds.SelectMethod = "Select";
325 ds.SelectCountMethod = "SelectCount";
327 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
328 ((IStateManager) view).TrackViewState ();
330 view.ConflictDetection = ConflictOptions.CompareAllValues;
331 view.ConvertNullToDBNull = true;
332 view.DataObjectTypeName = "test";
333 view.DeleteMethod = "test";
334 view.EnablePaging = true;
335 view.InsertMethod = "test";
336 view.FilterExpression = "test";
337 view.MaximumRowsParameterName = "test";
338 view.SelectCountMethod = "test";
339 view.SelectMethod = "test";
340 view.OldValuesParameterFormatString = "test";
341 view.StartRowIndexParameterName = "test";
342 view.TypeName = "test";
343 view.UpdateMethod = "test";
345 object state = ((IStateManager) view).SaveViewState ();
346 Assert.IsNull (state, "ViewState#1");
348 ObjectDataSourceView copy = new ObjectDataSourceView (ds, "DefaultView", null);
349 ((IStateManager) copy).LoadViewState (state);
354 public void CanDelete ()
356 ObjectDataSource ds = new ObjectDataSource ();
357 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
359 sql.DeleteMethod = "DeleteMethod";
360 Assert.IsTrue (sql.CanDelete, "A1");
362 sql.DeleteMethod = "";
363 Assert.IsFalse (sql.CanDelete, "A2");
365 sql.DeleteMethod = null;
366 Assert.IsFalse (sql.CanDelete, "A3");
370 public void CanInsert ()
372 ObjectDataSource ds = new ObjectDataSource ();
373 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
375 sql.InsertMethod = "InsertMethod";
376 Assert.IsTrue (sql.CanInsert, "A1");
378 sql.InsertMethod = "";
379 Assert.IsFalse (sql.CanInsert, "A2");
381 sql.InsertMethod = null;
382 Assert.IsFalse (sql.CanInsert, "A3");
386 public void CanUpdate ()
388 ObjectDataSource ds = new ObjectDataSource ();
389 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
391 sql.UpdateMethod = "UpdateMethod";
392 Assert.IsTrue (sql.CanUpdate, "A1");
394 sql.UpdateMethod = "";
395 Assert.IsFalse (sql.CanUpdate, "A2");
397 sql.UpdateMethod = null;
398 Assert.IsFalse (sql.CanUpdate, "A3");
402 public void CanRetrieveTotalRowCount ()
404 ObjectDataSource ds = new ObjectDataSource ();
405 ObjectDataSourceView view = new ObjectDataSourceView (ds, "DefaultView", null);
407 Assert.IsFalse (view.CanPage, "CanPage#1");
408 Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#1");
410 view.EnablePaging = true;
411 Assert.IsTrue (view.CanPage, "CanPage#2");
412 Assert.IsFalse (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#2");
414 view.SelectCountMethod = "SelectCountMethod";
415 Assert.IsTrue (view.CanPage, "CanPage#3");
416 Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#3");
418 view.EnablePaging = false;
419 Assert.IsFalse (view.CanPage, "CanPage#4");
420 Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount#4");
424 public void OldValuesParameterFormatString ()
426 ObjectDataSource ds = new ObjectDataSource ();
428 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A1");
430 ds.OldValuesParameterFormatString = "hi {0}";
432 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
434 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A2");
436 ds.OldValuesParameterFormatString = "hi {0}";
438 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A3");
440 ds.OldValuesParameterFormatString = "{0}";
441 sql.OldValuesParameterFormatString = "hi {0}";
443 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A4");
447 [Category("NunitWeb")]
448 public void DeleteMethod ()
450 WebTest t = new WebTest (PageInvoker.CreateOnLoad (delete));
451 string html = t.Run ();
452 Assert.AreEqual (-1, html.IndexOf("Yonik"), "ObjectDataSourceViewDelete");
455 public static void delete (Page p)
457 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
458 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
459 ObjectDataSourceView view;
460 GridView grid = new GridView ();
461 MyDataSource ds = new MyDataSource ();
462 ds.ID = "ObjectDataSource2";
464 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
465 ds.SelectMethod = "Select";
466 ds.DeleteMethod = "Delete";
467 ds.InsertMethod = "Insert";
468 ds.UpdateMethod = "Update";
469 Parameter p1 = new Parameter ("ID", TypeCode.String);
470 Parameter p2 = new Parameter ("FName", TypeCode.String);
471 Parameter p3 = new Parameter ("LName", TypeCode.String);
472 ds.DeleteParameters.Add (p1);
473 ds.DeleteParameters.Add (p2);
474 ds.DeleteParameters.Add (p3);
476 grid.DataKeyNames = new string[] { "ID", "FName", "LName" };
477 grid.DataSourceID = "ObjectDataSource2";
478 p.Form.Controls.Add (lcb);
479 p.Form.Controls.Add (ds);
480 p.Form.Controls.Add (grid);
481 p.Form.Controls.Add (lce);
482 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
483 view.Deleting += new ObjectDataSourceMethodEventHandler (Event);
485 DataSourceObject.InitDS ();
487 Hashtable table = new Hashtable ();
488 table.Add ("ID", "1001");
489 table.Add ("FName", "Yonik");
490 table.Add ("LName", "Laim");
491 view.Delete (table, null);
492 Assert.AreEqual (true, view.CanDelete, "CanDelete");
493 Assert.AreEqual ("Delete", view.DeleteMethod, "DeleteMethod");
494 Assert.AreEqual (3, view.DeleteParameters.Count, "DeleteParameters.Count");
495 Assert.AreEqual ("ID", view.DeleteParameters[0].Name, "DeleteParametersName#1");
496 Assert.AreEqual ("FName", view.DeleteParameters[1].Name, "DeleteParametersName#2");
497 Assert.AreEqual ("LName", view.DeleteParameters[2].Name, "DeleteParametersName#3");
498 ObjectDataSourceViewTest.Eventassert ("Delete event has not fired");
503 [Category ("NunitWeb")]
504 public void SelectMethod ()
506 WebTest t = new WebTest (PageInvoker.CreateOnLoad (select));
507 string html = t.Run ();
508 string origin = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"Grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\">FName</th><th scope=\"col\">LName</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1001</td><td>Mahesh</td><td>Chand</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
509 string renderedHtml = HtmlDiff.GetControlFromPageHtml (html);
510 HtmlDiff.AssertAreEqual (origin, renderedHtml, "ObjectDataSourceViewSelect");
513 public static void select (Page p)
515 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
516 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
517 ObjectDataSourceView view;
518 GridView grid = new GridView ();
519 MyDataSource ds = new MyDataSource ();
520 ds.ID = "ObjectDataSource2";
521 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
522 ds.SelectMethod = "Select";
525 grid.DataKeyNames = new string[] { "ID" };
526 grid.DataSourceID = "ObjectDataSource2";
527 p.Form.Controls.Add (lcb);
528 p.Form.Controls.Add (ds);
529 p.Form.Controls.Add (grid);
530 p.Form.Controls.Add (lce);
531 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
532 view.Selecting += new ObjectDataSourceSelectingEventHandler (view_Selecting);
534 DataSourceObject.InitDS ();
536 DataView view1 = (DataView) view.Select (new DataSourceSelectArguments ());
537 Assert.AreEqual (1, view1.Count, "SelectedRowsCount");
538 Assert.AreEqual (1001, view1[0].Row["ID"], "SelectedRowsValue#1");
539 Assert.AreEqual ("Mahesh", view1[0].Row["FName"], "SelectedRowsValue#2");
540 Assert.AreEqual ("Chand", view1[0].Row["LName"], "SelectedRowsValue#3");
541 ObjectDataSourceViewTest.Eventassert ("Select event has not fired");
545 [Category ("NunitWeb")]
546 public void SelectCountMethod ()
548 // This method will render grid view with paging
549 // Note : ObjectDataSource will return page counter 5 hard coded
550 WebTest t = new WebTest (PageInvoker.CreateOnLoad (selectcount));
551 string html = t.Run ();
552 string origin = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"Grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\">FName</th><th scope=\"col\">LName</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1001</td><td>Mahesh</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td colspan=\"3\"><table border=\"0\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td><span>1</span></td><td><a href=\"javascript:__doPostBack('Grid','Page$2')\">2</a></td><td><a href=\"javascript:__doPostBack('Grid','Page$3')\">3</a></td><td><a href=\"javascript:__doPostBack('Grid','Page$4')\">4</a></td><td><a href=\"javascript:__doPostBack('Grid','Page$5')\">5</a></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table></td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
553 string renderedHtml = HtmlDiff.GetControlFromPageHtml (html);
554 HtmlDiff.AssertAreEqual (origin, renderedHtml, "ObjectDataSourceViewSelectCount");
557 public static void selectcount (Page p)
559 // This method will render grid view with paging
560 // Note : ObjectDataSource will return page counter 5 hard coded
562 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
563 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
564 ObjectDataSourceView view;
565 GridView grid = new GridView ();
566 MyDataSource ds = new MyDataSource ();
567 ds.ID = "ObjectDataSource2";
568 ds.EnablePaging = true;
569 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
570 ds.SelectMethod = "Select";
571 ds.SelectCountMethod = "SelectCount";
575 grid.DataKeyNames = new string[] { "ID" };
576 grid.DataSourceID = "ObjectDataSource2";
577 grid.AllowPaging = true;
580 p.Form.Controls.Add (lcb);
581 p.Form.Controls.Add (ds);
582 p.Form.Controls.Add (grid);
583 p.Form.Controls.Add (lce);
584 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
585 Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount");
590 [Category ("NunitWeb")]
591 public void InsertMethod ()
593 WebTest t = new WebTest (PageInvoker.CreateOnLoad (insert));
594 string html = t.Run ();
595 string origin = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"Grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\">FName</th><th scope=\"col\">LName</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1001</td><td>Mahesh</td><td>Chand</td>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1000</td><td>Yonik</td><td>Laim</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
596 string renderedHtml = HtmlDiff.GetControlFromPageHtml (html);
597 HtmlDiff.AssertAreEqual (origin, renderedHtml, "ObjectDataSourceViewInsert");
600 public static void insert (Page p)
602 DataSourceObject.InitDS ();
604 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
605 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
606 ObjectDataSourceView view;
607 GridView grid = new GridView ();
608 MyDataSource ds = new MyDataSource ();
609 ds.ID = "ObjectDataSource1";
610 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
611 ds.SelectMethod = "Select";
612 ds.InsertMethod = "Insert";
615 Parameter p1 = new Parameter ("ID", TypeCode.String);
616 Parameter p2 = new Parameter ("FName", TypeCode.String);
617 Parameter p3 = new Parameter ("LName", TypeCode.String);
619 ds.InsertParameters.Add (p1);
620 ds.InsertParameters.Add (p2);
621 ds.InsertParameters.Add (p3);
624 grid.DataSourceID = "ObjectDataSource1";
625 p.Form.Controls.Add (lcb);
626 p.Form.Controls.Add (ds);
627 p.Form.Controls.Add (grid);
628 p.Form.Controls.Add (lce);
629 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
630 view.Inserting += new ObjectDataSourceMethodEventHandler (Event);
632 Hashtable table = new Hashtable ();
633 table.Add ("ID", "1000");
634 table.Add ("FName", "Yonik");
635 table.Add ("LName", "Laim");
637 Assert.AreEqual (true, view.CanInsert, "CanInsert");
638 Assert.AreEqual ("Insert", view.InsertMethod, "InsertMethod");
639 Assert.AreEqual (3, view.InsertParameters.Count, "InsertParameters.Count");
640 Assert.AreEqual ("ID", view.InsertParameters[0].Name, "InsertParametersName#1");
641 Assert.AreEqual ("FName", view.InsertParameters[1].Name, "InsertParametersName#2");
642 Assert.AreEqual ("LName", view.InsertParameters[2].Name, "InsertParametersName#3");
643 ObjectDataSourceViewTest.Eventassert ("Insert event has not fired");
647 [Category ("NunitWeb")]
648 public void UpdateMethod ()
650 WebTest t = new WebTest (PageInvoker.CreateOnLoad (update));
651 string html = t.Run ();
652 string origin = "<div>\r\n\t<table cellspacing=\"0\" rules=\"all\" border=\"1\" id=\"Grid\" style=\"border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<th scope=\"col\">ID</th><th scope=\"col\">FName</th><th scope=\"col\">LName</th>\r\n\t\t</tr><tr>\r\n\t\t\t<td>1001</td><td>Yonik</td><td>Laim</td>\r\n\t\t</tr>\r\n\t</table>\r\n</div>";
653 string renderedHtml = HtmlDiff.GetControlFromPageHtml (html);
654 HtmlDiff.AssertAreEqual (origin, renderedHtml, "ObjectDataSourceViewUpdate");
657 public static void update (Page p)
659 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
660 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
661 ObjectDataSourceView view;
662 GridView grid = new GridView ();
663 MyDataSource ds = new MyDataSource ();
664 ds.ID = "ObjectDataSource1";
665 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
667 ds.SelectMethod = "Select";
668 ds.DeleteMethod = "Delete";
669 ds.InsertMethod = "Insert";
670 ds.UpdateMethod = "Update";
672 Parameter p1 = new Parameter ("ID", TypeCode.String);
673 Parameter p2 = new Parameter ("FName", TypeCode.String);
674 Parameter p3 = new Parameter ("LName", TypeCode.String);
676 ds.UpdateParameters.Add (p1);
677 ds.UpdateParameters.Add (p2);
678 ds.UpdateParameters.Add (p3);
681 grid.DataSourceID = "ObjectDataSource1";
682 p.Form.Controls.Add (lcb);
683 p.Form.Controls.Add (ds);
684 p.Form.Controls.Add (grid);
685 p.Form.Controls.Add (lce);
686 view = (ObjectDataSourceView) ds.DoGetView ("defaultView");
687 view.Updating += new ObjectDataSourceMethodEventHandler (Event);
689 DataSourceObject.InitDS ();
691 Hashtable table = new Hashtable ();
692 table.Add ("ID", "1001");
693 table.Add ("FName", "Yonik");
694 table.Add ("LName", "Laim");
695 view.Update (null, table, null);
696 Assert.AreEqual (true, view.CanUpdate, "CanUpdate");
697 Assert.AreEqual ("Update", view.UpdateMethod, "UpdateMethod");
698 Assert.AreEqual (3, view.UpdateParameters.Count, "UpdateParameters.Count");
699 Assert.AreEqual ("ID", view.UpdateParameters[0].Name, "UpdateParametersName#1");
700 Assert.AreEqual ("FName", view.UpdateParameters[1].Name, "UpdateParametersName#2");
701 Assert.AreEqual ("LName", view.UpdateParameters[2].Name, "UpdateParametersName#3");
702 ObjectDataSourceViewTest.Eventassert ("Update event has not fired");
708 public void UpdateEvent ()
710 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
711 view.Updating += new ObjectDataSourceMethodEventHandler (Event);
712 view.DoOnUpdating (new ObjectDataSourceMethodEventArgs (null));
713 Eventassert ("UpdateEvent");
714 view.Updated += new ObjectDataSourceStatusEventHandler (view_Status);
715 view.DoOnUpdated (new ObjectDataSourceStatusEventArgs (null, null));
716 Eventassert ("UpdateEvent");
720 public void SelectEvent ()
722 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
723 view.Selecting += new ObjectDataSourceSelectingEventHandler (view_Selecting);
724 view.DoOnSelecting (new ObjectDataSourceSelectingEventArgs (null, new DataSourceSelectArguments (), false));
725 Eventassert ("SelectingEvent");
726 view.Selected += new ObjectDataSourceStatusEventHandler (view_Status);
727 view.DoOnSelected (new ObjectDataSourceStatusEventArgs (null, null));
728 Eventassert ("SelectedEvent");
732 public void InsertEvent ()
734 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
735 view.Inserting += new ObjectDataSourceMethodEventHandler (Event);
736 view.DoOnInserting (new ObjectDataSourceMethodEventArgs (null));
737 Eventassert ("InsertingEvent");
738 view.Inserted += new ObjectDataSourceStatusEventHandler (view_Status);
739 view.DoOnInserted (new ObjectDataSourceStatusEventArgs (null, null));
740 Eventassert ("InsertedEvent");
744 public void DeleteEvent ()
746 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
747 view.Deleting += new ObjectDataSourceMethodEventHandler (Event);
748 view.DoOnDeleting (new ObjectDataSourceMethodEventArgs (null));
749 Eventassert ("DeletingEvent");
750 view.Deleted += new ObjectDataSourceStatusEventHandler (view_Status);
751 view.DoOnDeleted (new ObjectDataSourceStatusEventArgs (null, null));
752 Eventassert ("DeletedEvent");
756 public void FilterEvent ()
758 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
759 view.Filtering += new ObjectDataSourceFilteringEventHandler (view_Filtering);
760 view.DoOnFiltering (new ObjectDataSourceFilteringEventArgs (null));
761 Eventassert ("FilterEvent");
765 public void ObjectCreatingEvent ()
767 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
768 view.ObjectCreating += new ObjectDataSourceObjectEventHandler (view_ObjectCreate);
769 view.DoOnObjectCreating (new ObjectDataSourceEventArgs (null));
770 Eventassert ("ObjectCreatingEvent");
771 view.ObjectCreated += new ObjectDataSourceObjectEventHandler (view_ObjectCreate);
772 view.DoOnObjectCreated (new ObjectDataSourceEventArgs (null));
773 Eventassert ("ObjectCreatedEvent");
774 view.ObjectDisposing += new ObjectDataSourceDisposingEventHandler (view_ObjectDisposing);
778 public void ObjectDisposing ()
780 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
781 view.ObjectDisposing += new ObjectDataSourceDisposingEventHandler (view_ObjectDisposing);
782 view.DoOnObjectDisposing (new ObjectDataSourceDisposingEventArgs (null));
783 Eventassert ("ObjectDisposing");
786 IEnumerable returnedData;
787 void SelectCallback (IEnumerable data)
792 [Test] // bug #471767
793 public void SelectReturnsObjectArray ()
795 ObjectDataSource ds = new ObjectDataSource ();
796 ds.TypeName=typeof(DataSourceObject).AssemblyQualifiedName;
797 ds.SelectMethod="SelectObject";
799 DataSourceView dsv = ((IDataSource)ds).GetView (String.Empty);
800 dsv.Select (DataSourceSelectArguments.Empty, new DataSourceViewSelectCallback (SelectCallback));
801 Assert.IsTrue (returnedData != null, "#A1");
802 Assert.AreEqual (typeof (object[]), returnedData.GetType (), "#A2");
804 object[] data = returnedData as object[];
805 Assert.AreEqual (1, data.Length, "#A3");
806 Assert.AreEqual (typeof (MyCustomDataObject), data [0].GetType (), "#A4");
812 MatchParamsToOldValues,
816 public class DummyDataSourceObject
818 public static IEnumerable Select (string filter)
820 if (eventsCalled == null) {
821 eventsCalled = new ArrayList ();
823 eventsCalled.Add (String.Format ("Select(filter = {0})", filter));
824 return new string [] { "one", "two", "three" };
827 public static int Update (string ID)
829 if (eventsCalled == null) {
830 eventsCalled = new ArrayList ();
832 eventsCalled.Add (String.Format ("Update(ID = {0})", ID));
836 public static int Update (string ID, string oldvalue_ID)
838 if (eventsCalled == null) {
839 eventsCalled = new ArrayList ();
841 eventsCalled.Add (String.Format ("Update(ID = {0}, oldvalue_ID = {1})", ID, oldvalue_ID));
845 public static int UpdateOther (string ID, string OtherValue, string oldvalue_ID)
847 if (eventsCalled == null) {
848 eventsCalled = new ArrayList ();
850 eventsCalled.Add (String.Format ("UpdateOther(ID = {0}, OtherValue = {1}, oldvalue_ID = {2})", ID, OtherValue, oldvalue_ID));
854 public static int Insert (string ID)
856 if (eventsCalled == null) {
857 eventsCalled = new ArrayList ();
859 eventsCalled.Add (String.Format ("Insert(ID = {0})", ID));
863 public static int Insert (string ID, string oldvalue_ID)
865 if (eventsCalled == null) {
866 eventsCalled = new ArrayList ();
868 eventsCalled.Add (String.Format ("Insert(ID = {0}, oldvalue_ID = {1})", ID, oldvalue_ID));
872 public static int InsertOther (string ID, string OtherValue)
874 if (eventsCalled == null) {
875 eventsCalled = new ArrayList ();
877 eventsCalled.Add (String.Format ("InsertOther(ID = {0}, OtherValue = {1})", ID, OtherValue));
881 public static int Delete (string ID, string oldvalue_ID)
883 if (eventsCalled == null) {
884 eventsCalled = new ArrayList ();
886 eventsCalled.Add (String.Format ("Delete(ID = {0}, oldvalue_ID = {1})", ID, oldvalue_ID));
890 public static int Delete (string oldvalue_ID)
892 if (eventsCalled == null) {
893 eventsCalled = new ArrayList ();
895 eventsCalled.Add (String.Format ("Delete(oldvalue_ID = {0})", oldvalue_ID));
899 public static int DeleteOther (string oldvalue_ID, string OtherValue)
901 if (eventsCalled == null) {
902 eventsCalled = new ArrayList ();
904 eventsCalled.Add (String.Format ("DeleteOther(oldvalue_ID = {0}, OtherValue = {1})", oldvalue_ID, OtherValue));
909 public class AlwaysChangingParameter : Parameter
913 public AlwaysChangingParameter (string name, TypeCode type, string defaultValue)
914 : base (name, type, defaultValue)
919 protected override object Evaluate (HttpContext context, Control control)
922 return String.Format ("{0}{1}", DefaultValue, evaluateCount);
929 private static int _testcounter;
930 private static bool _eventChecker;
931 private eventAssert ()
936 public static bool eventChecker
940 throw new NotImplementedException ();
944 _eventChecker = value;
948 static private void testAdded ()
951 _eventChecker = false;
954 public static void IsTrue (string msg)
956 Assert.IsTrue (_eventChecker, msg + "#" + _testcounter);
961 public static void IsFalse (string msg)
963 Assert.IsFalse (_eventChecker, msg + "#" + _testcounter);
970 public void ObjectDataSourceView_DataSourceViewChanged ()
972 ObjectDataSource ds = new ObjectDataSource ();
973 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
974 sql.DataSourceViewChanged += new EventHandler (sql_DataSourceViewChanged);
976 sql.DoOnDataSourceViewChanged ();
977 eventAssert.IsTrue ("DataSourceViewChanged");
979 sql.ConflictDetection = ConflictOptions.CompareAllValues;
980 eventAssert.IsTrue ("DataSourceViewChanged");
982 sql.ConvertNullToDBNull = true;
983 eventAssert.IsFalse ("DataSourceViewChanged");
985 sql.DataObjectTypeName = "test";
986 eventAssert.IsTrue ("DataSourceViewChanged");
988 sql.DeleteMethod = "test";
989 eventAssert.IsFalse ("DataSourceViewChanged");
991 sql.EnablePaging = true;
992 eventAssert.IsTrue ("DataSourceViewChanged");
994 sql.InsertMethod = "test";
995 eventAssert.IsFalse ("DataSourceViewChanged");
997 sql.FilterExpression = "test";
998 eventAssert.IsTrue ("DataSourceViewChanged");
1000 sql.MaximumRowsParameterName = "test";
1001 eventAssert.IsTrue ("DataSourceViewChanged");
1003 sql.SelectCountMethod = "test";
1004 eventAssert.IsTrue ("DataSourceViewChanged");
1006 sql.SelectMethod = "test";
1007 eventAssert.IsTrue ("DataSourceViewChanged");
1009 sql.OldValuesParameterFormatString = "test";
1010 eventAssert.IsTrue ("DataSourceViewChanged");
1012 sql.StartRowIndexParameterName = "test";
1013 eventAssert.IsTrue ("DataSourceViewChanged");
1015 sql.TypeName = "test";
1016 eventAssert.IsTrue ("DataSourceViewChanged");
1018 sql.UpdateMethod = "test";
1019 eventAssert.IsFalse ("DataSourceViewChanged");
1022 void sql_DataSourceViewChanged (object sender, EventArgs e)
1024 eventAssert.eventChecker = true;
1028 public void SelectCountMethod_DataSourceViewChanged ()
1030 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1031 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1033 Assert.AreEqual ("", view.SelectCountMethod);
1034 view.SelectCountMethod = null;
1035 Assert.AreEqual (1, eventsCalled.Count);
1036 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1037 Assert.AreEqual ("", view.SelectCountMethod);
1039 view.SelectCountMethod = null;
1040 Assert.AreEqual (2, eventsCalled.Count);
1041 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1042 Assert.AreEqual ("", view.SelectCountMethod);
1044 view.SelectCountMethod = "";
1045 Assert.AreEqual (2, eventsCalled.Count);
1049 public void SelectMethod_DataSourceViewChanged2 ()
1051 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1052 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1054 Assert.AreEqual ("", view.SelectMethod);
1055 view.SelectMethod = null;
1056 Assert.AreEqual (1, eventsCalled.Count);
1057 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1058 Assert.AreEqual ("", view.SelectMethod);
1060 view.SelectMethod = null;
1061 Assert.AreEqual (2, eventsCalled.Count);
1062 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1063 Assert.AreEqual ("", view.SelectMethod);
1065 view.SelectMethod = "";
1066 Assert.AreEqual (2, eventsCalled.Count);
1070 public void SelectMethod_DataSourceViewChanged1 ()
1072 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1073 view.DataSourceViewChanged+=new EventHandler(view_DataSourceViewChanged);
1075 view.SelectMethod = "select_1";
1076 Assert.AreEqual (1, eventsCalled.Count);
1077 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1079 view.SelectMethod = "select_2";
1080 Assert.AreEqual (2, eventsCalled.Count);
1081 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1083 view.SelectMethod = "select_2";
1084 Assert.AreEqual (2, eventsCalled.Count);
1086 view.SelectCountMethod = "selectCount_1";
1087 Assert.AreEqual (3, eventsCalled.Count);
1088 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2]);
1090 view.SelectCountMethod = "selectCount_2";
1091 Assert.AreEqual (4, eventsCalled.Count);
1092 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [3]);
1094 view.SelectCountMethod = "selectCount_2";
1095 Assert.AreEqual (4, eventsCalled.Count);
1098 private static void InitializeView (ObjectViewPoker view, InitViewType initType, out Hashtable keys, out Hashtable old_value, out Hashtable new_value)
1100 view.TypeName = typeof (DummyDataSourceObject).AssemblyQualifiedName;
1101 view.OldValuesParameterFormatString = "oldvalue_{0}";
1102 view.SelectMethod = "Select";
1103 if (initType == InitViewType.DontMatchParams) {
1104 view.UpdateMethod = "UpdateOther";
1105 view.InsertMethod = "InsertOther";
1106 view.DeleteMethod = "DeleteOther";
1109 view.UpdateMethod = "Update";
1110 view.InsertMethod = "Insert";
1111 view.DeleteMethod = "Delete";
1114 Parameter selectParameter = null;
1115 Parameter insertParameter = null;
1116 Parameter updateParameter = null;
1117 Parameter deleteParameter = null;
1119 selectParameter = new AlwaysChangingParameter ("filter", TypeCode.String, "p_ValueSelect");
1120 view.SelectParameters.Add (selectParameter);
1123 case InitViewType.MatchParamsToOldValues:
1124 insertParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueInsert");
1125 view.InsertParameters.Add (insertParameter);
1126 updateParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueUpdate");
1127 view.UpdateParameters.Add (updateParameter);
1128 deleteParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueDelete");
1129 view.DeleteParameters.Add (deleteParameter);
1132 case InitViewType.MatchParamsToValues:
1133 insertParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueInsert");
1134 view.InsertParameters.Add (insertParameter);
1135 updateParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueUpdate");
1136 view.UpdateParameters.Add (updateParameter);
1137 deleteParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueDelete");
1138 view.DeleteParameters.Add (deleteParameter);
1141 case InitViewType.DontMatchParams:
1142 insertParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueInsert");
1143 view.InsertParameters.Add (insertParameter);
1144 updateParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueUpdate");
1145 view.UpdateParameters.Add (updateParameter);
1146 deleteParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueDelete");
1147 view.DeleteParameters.Add (deleteParameter);
1151 view.SelectParameters.ParametersChanged += new EventHandler (SelectParameters_ParametersChanged);
1152 view.InsertParameters.ParametersChanged += new EventHandler (InsertParameters_ParametersChanged);
1153 view.UpdateParameters.ParametersChanged += new EventHandler (UpdateParameters_ParametersChanged);
1154 view.DeleteParameters.ParametersChanged += new EventHandler (DeleteParameters_ParametersChanged);
1156 keys = new Hashtable ();
1157 keys.Add ("ID", "k_1001");
1159 old_value = new Hashtable ();
1160 old_value.Add ("ID", "ov_1001");
1162 new_value = new Hashtable ();
1163 new_value.Add ("ID", "n_1001");
1165 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1168 private static IList eventsCalled;
1170 static void view_DataSourceViewChanged (object sender, EventArgs e)
1172 if (eventsCalled == null) {
1173 eventsCalled = new ArrayList ();
1175 eventsCalled.Add ("view_DataSourceViewChanged");
1178 static void SelectParameters_ParametersChanged (object sender, EventArgs e)
1180 if (eventsCalled == null) {
1181 eventsCalled = new ArrayList ();
1183 eventsCalled.Add ("SelectParameters_ParametersChanged");
1186 static void InsertParameters_ParametersChanged (object sender, EventArgs e)
1188 if (eventsCalled == null) {
1189 eventsCalled = new ArrayList ();
1191 eventsCalled.Add ("InsertParameters_ParametersChanged");
1194 static void UpdateParameters_ParametersChanged (object sender, EventArgs e)
1196 if (eventsCalled == null) {
1197 eventsCalled = new ArrayList ();
1199 eventsCalled.Add ("UpdateParameters_ParametersChanged");
1202 static void DeleteParameters_ParametersChanged (object sender, EventArgs e)
1204 if (eventsCalled == null) {
1205 eventsCalled = new ArrayList ();
1207 eventsCalled.Add ("DeleteParameters_ParametersChanged");
1211 public void ParametersAndViewChangedEvent_Select ()
1213 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1214 Hashtable keys = null;
1215 Hashtable old_values = null;
1216 Hashtable new_values = null;
1217 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1219 view.Select (DataSourceSelectArguments.Empty);
1221 Assert.IsNotNull (eventsCalled, "Events not raized");
1222 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1223 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0], "view_DataSourceViewChanged");
1224 Assert.AreEqual ("SelectParameters_ParametersChanged", eventsCalled [1], "SelectParameters_ParametersChanged");
1225 Assert.AreEqual ("Select(filter = p_ValueSelect1)", eventsCalled [2], "DataSource Method params");
1229 public void ParametersAndViewChangedEvent_MatchInsert ()
1231 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1232 Hashtable keys = null;
1233 Hashtable old_values = null;
1234 Hashtable new_values = null;
1235 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1237 view.Insert (new_values);
1239 Assert.IsNotNull (eventsCalled, "Events not raized");
1240 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1241 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1242 Assert.AreEqual ("Insert(ID = n_1001)", eventsCalled [1], "DataSource Method params");
1243 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1247 public void ParametersAndViewChangedEvent_MatchOldInsert ()
1249 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1250 Hashtable keys = null;
1251 Hashtable old_values = null;
1252 Hashtable new_values = null;
1253 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1255 view.Insert (new_values);
1257 Assert.IsNotNull (eventsCalled, "Events not raized");
1258 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1259 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1260 Assert.AreEqual ("Insert(ID = n_1001, oldvalue_ID = p_OldValueInsert1)", eventsCalled [1], "DataSource Method params");
1261 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1265 public void ParametersAndViewChangedEvent_DontMatchInsert ()
1267 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1268 Hashtable keys = null;
1269 Hashtable old_values = null;
1270 Hashtable new_values = null;
1271 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1273 view.Insert (new_values);
1275 Assert.IsNotNull (eventsCalled, "Events not raized");
1276 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1277 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1278 Assert.AreEqual ("InsertOther(ID = n_1001, OtherValue = p_OtherValueInsert1)", eventsCalled [1], "DataSource Method params");
1279 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1283 public void ParametersAndViewChangedEvent_MatchUpdate ()
1285 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1286 Hashtable keys = null;
1287 Hashtable old_values = null;
1288 Hashtable new_values = null;
1289 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1291 view.Update (keys, new_values, old_values);
1293 Assert.IsNotNull (eventsCalled, "Events not raized");
1294 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1295 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1296 Assert.AreEqual ("Update(ID = n_1001, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1297 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1301 public void ParametersAndViewChangedEvent_MatchOldUpdate ()
1303 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1304 Hashtable keys = null;
1305 Hashtable old_values = null;
1306 Hashtable new_values = null;
1307 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1309 view.Update (keys, new_values, old_values);
1311 Assert.IsNotNull (eventsCalled, "Events not raized");
1312 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1313 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1314 Assert.AreEqual ("Update(ID = n_1001, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1315 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1319 public void ParametersAndViewChangedEvent_DontMatchUpdate ()
1321 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1322 Hashtable keys = null;
1323 Hashtable old_values = null;
1324 Hashtable new_values = null;
1325 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1327 view.Update (keys, new_values, old_values);
1329 Assert.IsNotNull (eventsCalled, "Events not raized");
1330 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1331 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1332 Assert.AreEqual ("UpdateOther(ID = n_1001, OtherValue = p_OtherValueUpdate1, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1333 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1337 public void ParametersAndViewChangedEvent_MatchDelete ()
1339 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1340 Hashtable keys = null;
1341 Hashtable old_values = null;
1342 Hashtable new_values = null;
1343 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1345 view.Delete (keys, old_values);
1347 Assert.IsNotNull (eventsCalled, "Events not raized");
1348 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1349 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1350 Assert.AreEqual ("Delete(ID = p_ValueDelete1, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1351 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1355 public void ParametersAndViewChangedEvent_MatchOldDelete ()
1357 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1358 Hashtable keys = null;
1359 Hashtable old_values = null;
1360 Hashtable new_values = null;
1361 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1363 view.Delete (keys, old_values);
1365 Assert.IsNotNull (eventsCalled, "Events not raized");
1366 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1367 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1368 Assert.AreEqual ("Delete(oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1369 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1373 public void ParametersAndViewChangedEvent_DontMatchDelete ()
1375 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1376 Hashtable keys = null;
1377 Hashtable old_values = null;
1378 Hashtable new_values = null;
1379 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1381 view.Delete (keys, old_values);
1383 Assert.IsNotNull (eventsCalled, "Events not raized");
1384 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1385 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1386 Assert.AreEqual ("DeleteOther(oldvalue_ID = k_1001, OtherValue = p_OtherValueDelete1)", eventsCalled [1], "DataSource Method params");
1387 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1394 private static bool event_checker;
1396 private static void Eventassert (string message)
1398 Assert.IsTrue (ObjectDataSourceViewTest.event_checker, message);
1399 ObjectDataSourceViewTest.event_checker = false;
1402 static void Event (object sender, ObjectDataSourceMethodEventArgs e)
1404 ObjectDataSourceViewTest.event_checker = true;
1407 static void view_Selecting (object sender, ObjectDataSourceSelectingEventArgs e)
1409 event_checker = true;
1412 void view_Filtering (object sender, ObjectDataSourceFilteringEventArgs e)
1414 event_checker = true;
1417 void view_ObjectCreate (object sender, ObjectDataSourceEventArgs e)
1419 event_checker = true;
1422 void view_Status (object sender, ObjectDataSourceStatusEventArgs e)
1424 event_checker = true;
1427 void view_ObjectDisposing (object sender, ObjectDataSourceDisposingEventArgs e)
1429 event_checker = true;
1432 private class MyDataSource : ObjectDataSource
1434 public DataSourceView DoGetView (string viewName)
1436 return base.GetView (viewName);
1439 public void DoTrackViewState ()
1441 base.TrackViewState ();
1446 public class MyCustomDataObject
1450 public class DataSourceObject
1452 private static int maximumRows;
1453 public static DataTable ds = CreateDataTable ();
1454 public static void InitDS ()
1456 ds = CreateDataTable ();
1458 public static DataTable Select ()
1463 public static MyCustomDataObject SelectObject ()
1465 return new MyCustomDataObject ();
1468 [Sys.ComponentModel.DataObjectMethod(Sys.ComponentModel.DataObjectMethodType.Select, false)]
1469 public static DataTable Select (int maximumRows, short startRowIndex) {
1470 Assert.Fail ("Should not be called since not default Select DataObjectMethod");
1474 [Sys.ComponentModel.DataObjectMethod(Sys.ComponentModel.DataObjectMethodType.Select, true)]
1475 public static DataTable Select (int maximumRows, int startRowIndex)
1477 DataSourceObject.maximumRows = maximumRows;
1478 if (ds.Rows.Count > maximumRows) {
1479 DataTable temp = ds.Clone ();
1481 while (i < maximumRows && startRowIndex <= ds.Rows.Count) {
1482 object[] o = ds.Rows[startRowIndex].ItemArray;
1492 public static DataTable Delete (string ID, string FName, string LName)
1494 DataRow dr = ds.Rows.Find (ID);
1496 ds.Rows.Remove (dr);
1501 public static DataTable Insert (string ID, string FName, string LName)
1503 DataRow dr = ds.NewRow ();
1505 dr["FName"] = FName;
1506 dr["LName"] = LName;
1511 public static DataTable Update (string ID, string FName, string LName)
1513 foreach (DataRow row in ds.Rows) {
1514 if (row["ID"].ToString () == ID) {
1515 row["FName"] = FName;
1516 row["LName"] = LName;
1523 public static int SelectCount ()
1526 //Note: This is return 5 only for test goal
1530 public static DataTable CreateDataTable ()
1532 DataTable aTable = new DataTable ("A");
1536 // Create ID column and add to the DataTable.
1537 dtCol = new DataColumn ();
1538 dtCol.DataType = Type.GetType ("System.Int32");
1539 dtCol.ColumnName = "ID";
1540 dtCol.AutoIncrement = true;
1541 dtCol.Caption = "ID";
1542 dtCol.ReadOnly = true;
1543 dtCol.Unique = true;
1544 aTable.Columns.Add (dtCol);
1546 // Create Name column and add to the table
1547 dtCol = new DataColumn ();
1548 dtCol.DataType = Type.GetType ("System.String");
1549 dtCol.ColumnName = "FName";
1550 dtCol.AutoIncrement = false;
1551 dtCol.Caption = "First Name";
1552 dtCol.ReadOnly = false;
1553 dtCol.Unique = false;
1554 aTable.Columns.Add (dtCol);
1556 // Create Last Name column and add to the table.
1557 dtCol = new DataColumn ();
1558 dtCol.DataType = Type.GetType ("System.String");
1559 dtCol.ColumnName = "LName";
1560 dtCol.AutoIncrement = false;
1561 dtCol.Caption = "Last Name";
1562 dtCol.ReadOnly = false;
1563 dtCol.Unique = false;
1564 aTable.Columns.Add (dtCol);
1566 // Create three rows to the table
1567 dtRow = aTable.NewRow ();
1569 dtRow["FName"] = "Mahesh";
1570 dtRow["LName"] = "Chand";
1571 aTable.Rows.Add (dtRow);
1573 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };