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>
509 <table cellspacing=""0"" rules=""all"" border=""1"" id=""Grid"" style=""border-collapse:collapse;"">
511 <th scope=""col"">ID</th><th scope=""col"">FName</th><th scope=""col"">LName</th>
513 <td>1001</td><td>Mahesh</td><td>Chand</td>
517 HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewSelect");
520 public static void select (Page p)
522 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
523 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
524 ObjectDataSourceView view;
525 GridView grid = new GridView ();
526 MyDataSource ds = new MyDataSource ();
527 ds.ID = "ObjectDataSource2";
528 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
529 ds.SelectMethod = "Select";
532 grid.DataKeyNames = new string[] { "ID" };
533 grid.DataSourceID = "ObjectDataSource2";
534 p.Form.Controls.Add (lcb);
535 p.Form.Controls.Add (ds);
536 p.Form.Controls.Add (grid);
537 p.Form.Controls.Add (lce);
538 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
539 view.Selecting += new ObjectDataSourceSelectingEventHandler (view_Selecting);
541 DataSourceObject.InitDS ();
543 DataView view1 = (DataView) view.Select (new DataSourceSelectArguments ());
544 Assert.AreEqual (1, view1.Count, "SelectedRowsCount");
545 Assert.AreEqual (1001, view1[0].Row["ID"], "SelectedRowsValue#1");
546 Assert.AreEqual ("Mahesh", view1[0].Row["FName"], "SelectedRowsValue#2");
547 Assert.AreEqual ("Chand", view1[0].Row["LName"], "SelectedRowsValue#3");
548 ObjectDataSourceViewTest.Eventassert ("Select event has not fired");
552 [Category ("NunitWeb")]
553 public void SelectCountMethod ()
555 // This method will render grid view with paging
556 // Note : ObjectDataSource will return page counter 5 hard coded
557 WebTest t = new WebTest (PageInvoker.CreateOnLoad (selectcount));
558 string html = t.Run ();
559 string origin = @"<div>
560 <table cellspacing=""0"" rules=""all"" border=""1"" id=""Grid"" style=""border-collapse:collapse;"">
562 <th scope=""col"">ID</th><th scope=""col"">FName</th><th scope=""col"">LName</th>
564 <td>1001</td><td>Mahesh</td><td>Chand</td>
566 <td colspan=""3""><table border=""0"">
568 <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>
574 HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewSelectCount");
577 public static void selectcount (Page p)
579 // This method will render grid view with paging
580 // Note : ObjectDataSource will return page counter 5 hard coded
582 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
583 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
584 ObjectDataSourceView view;
585 GridView grid = new GridView ();
586 MyDataSource ds = new MyDataSource ();
587 ds.ID = "ObjectDataSource2";
588 ds.EnablePaging = true;
589 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
590 ds.SelectMethod = "Select";
591 ds.SelectCountMethod = "SelectCount";
595 grid.DataKeyNames = new string[] { "ID" };
596 grid.DataSourceID = "ObjectDataSource2";
597 grid.AllowPaging = true;
600 p.Form.Controls.Add (lcb);
601 p.Form.Controls.Add (ds);
602 p.Form.Controls.Add (grid);
603 p.Form.Controls.Add (lce);
604 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
605 Assert.IsTrue (view.CanRetrieveTotalRowCount, "CanRetrieveTotalRowCount");
610 [Category ("NunitWeb")]
611 public void InsertMethod ()
613 WebTest t = new WebTest (PageInvoker.CreateOnLoad (insert));
614 string html = t.Run ();
615 string origin = @"<div>
616 <table cellspacing=""0"" rules=""all"" border=""1"" id=""Grid"" style=""border-collapse:collapse;"">
618 <th scope=""col"">ID</th><th scope=""col"">FName</th><th scope=""col"">LName</th>
620 <td>1001</td><td>Mahesh</td><td>Chand</td>
622 <td>1000</td><td>Yonik</td><td>Laim</td>
626 HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewInsert");
629 public static void insert (Page p)
631 DataSourceObject.InitDS ();
633 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
634 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
635 ObjectDataSourceView view;
636 GridView grid = new GridView ();
637 MyDataSource ds = new MyDataSource ();
638 ds.ID = "ObjectDataSource1";
639 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
640 ds.SelectMethod = "Select";
641 ds.InsertMethod = "Insert";
644 Parameter p1 = new Parameter ("ID", TypeCode.String);
645 Parameter p2 = new Parameter ("FName", TypeCode.String);
646 Parameter p3 = new Parameter ("LName", TypeCode.String);
648 ds.InsertParameters.Add (p1);
649 ds.InsertParameters.Add (p2);
650 ds.InsertParameters.Add (p3);
653 grid.DataSourceID = "ObjectDataSource1";
654 p.Form.Controls.Add (lcb);
655 p.Form.Controls.Add (ds);
656 p.Form.Controls.Add (grid);
657 p.Form.Controls.Add (lce);
658 view = (ObjectDataSourceView) ds.DoGetView ("DefaultView");
659 view.Inserting += new ObjectDataSourceMethodEventHandler (Event);
661 Hashtable table = new Hashtable ();
662 table.Add ("ID", "1000");
663 table.Add ("FName", "Yonik");
664 table.Add ("LName", "Laim");
666 Assert.AreEqual (true, view.CanInsert, "CanInsert");
667 Assert.AreEqual ("Insert", view.InsertMethod, "InsertMethod");
668 Assert.AreEqual (3, view.InsertParameters.Count, "InsertParameters.Count");
669 Assert.AreEqual ("ID", view.InsertParameters[0].Name, "InsertParametersName#1");
670 Assert.AreEqual ("FName", view.InsertParameters[1].Name, "InsertParametersName#2");
671 Assert.AreEqual ("LName", view.InsertParameters[2].Name, "InsertParametersName#3");
672 ObjectDataSourceViewTest.Eventassert ("Insert event has not fired");
676 [Category ("NunitWeb")]
677 public void UpdateMethod ()
679 WebTest t = new WebTest (PageInvoker.CreateOnLoad (update));
680 string html = t.Run ();
681 string origin = @"<div>
682 <table cellspacing=""0"" rules=""all"" border=""1"" id=""Grid"" style=""border-collapse:collapse;"">
684 <th scope=""col"">ID</th><th scope=""col"">FName</th><th scope=""col"">LName</th>
686 <td>1001</td><td>Yonik</td><td>Laim</td>
690 HtmlDiff.AssertAreEqual (origin, HtmlDiff.GetControlFromPageHtml (html), "ObjectDataSourceViewUpdate");
693 public static void update (Page p)
695 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
696 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
697 ObjectDataSourceView view;
698 GridView grid = new GridView ();
699 MyDataSource ds = new MyDataSource ();
700 ds.ID = "ObjectDataSource1";
701 ds.TypeName = "MonoTests.System.Web.UI.WebControls.DataSourceObject";
703 ds.SelectMethod = "Select";
704 ds.DeleteMethod = "Delete";
705 ds.InsertMethod = "Insert";
706 ds.UpdateMethod = "Update";
708 Parameter p1 = new Parameter ("ID", TypeCode.String);
709 Parameter p2 = new Parameter ("FName", TypeCode.String);
710 Parameter p3 = new Parameter ("LName", TypeCode.String);
712 ds.UpdateParameters.Add (p1);
713 ds.UpdateParameters.Add (p2);
714 ds.UpdateParameters.Add (p3);
717 grid.DataSourceID = "ObjectDataSource1";
718 p.Form.Controls.Add (lcb);
719 p.Form.Controls.Add (ds);
720 p.Form.Controls.Add (grid);
721 p.Form.Controls.Add (lce);
722 view = (ObjectDataSourceView) ds.DoGetView ("defaultView");
723 view.Updating += new ObjectDataSourceMethodEventHandler (Event);
725 DataSourceObject.InitDS ();
727 Hashtable table = new Hashtable ();
728 table.Add ("ID", "1001");
729 table.Add ("FName", "Yonik");
730 table.Add ("LName", "Laim");
731 view.Update (null, table, null);
732 Assert.AreEqual (true, view.CanUpdate, "CanUpdate");
733 Assert.AreEqual ("Update", view.UpdateMethod, "UpdateMethod");
734 Assert.AreEqual (3, view.UpdateParameters.Count, "UpdateParameters.Count");
735 Assert.AreEqual ("ID", view.UpdateParameters[0].Name, "UpdateParametersName#1");
736 Assert.AreEqual ("FName", view.UpdateParameters[1].Name, "UpdateParametersName#2");
737 Assert.AreEqual ("LName", view.UpdateParameters[2].Name, "UpdateParametersName#3");
738 ObjectDataSourceViewTest.Eventassert ("Update event has not fired");
744 public void UpdateEvent ()
746 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
747 view.Updating += new ObjectDataSourceMethodEventHandler (Event);
748 view.DoOnUpdating (new ObjectDataSourceMethodEventArgs (null));
749 Eventassert ("UpdateEvent");
750 view.Updated += new ObjectDataSourceStatusEventHandler (view_Status);
751 view.DoOnUpdated (new ObjectDataSourceStatusEventArgs (null, null));
752 Eventassert ("UpdateEvent");
756 public void SelectEvent ()
758 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
759 view.Selecting += new ObjectDataSourceSelectingEventHandler (view_Selecting);
760 view.DoOnSelecting (new ObjectDataSourceSelectingEventArgs (null, new DataSourceSelectArguments (), false));
761 Eventassert ("SelectingEvent");
762 view.Selected += new ObjectDataSourceStatusEventHandler (view_Status);
763 view.DoOnSelected (new ObjectDataSourceStatusEventArgs (null, null));
764 Eventassert ("SelectedEvent");
768 public void InsertEvent ()
770 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
771 view.Inserting += new ObjectDataSourceMethodEventHandler (Event);
772 view.DoOnInserting (new ObjectDataSourceMethodEventArgs (null));
773 Eventassert ("InsertingEvent");
774 view.Inserted += new ObjectDataSourceStatusEventHandler (view_Status);
775 view.DoOnInserted (new ObjectDataSourceStatusEventArgs (null, null));
776 Eventassert ("InsertedEvent");
780 public void DeleteEvent ()
782 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
783 view.Deleting += new ObjectDataSourceMethodEventHandler (Event);
784 view.DoOnDeleting (new ObjectDataSourceMethodEventArgs (null));
785 Eventassert ("DeletingEvent");
786 view.Deleted += new ObjectDataSourceStatusEventHandler (view_Status);
787 view.DoOnDeleted (new ObjectDataSourceStatusEventArgs (null, null));
788 Eventassert ("DeletedEvent");
792 public void FilterEvent ()
794 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
795 view.Filtering += new ObjectDataSourceFilteringEventHandler (view_Filtering);
796 view.DoOnFiltering (new ObjectDataSourceFilteringEventArgs (null));
797 Eventassert ("FilterEvent");
801 public void ObjectCreatingEvent ()
803 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
804 view.ObjectCreating += new ObjectDataSourceObjectEventHandler (view_ObjectCreate);
805 view.DoOnObjectCreating (new ObjectDataSourceEventArgs (null));
806 Eventassert ("ObjectCreatingEvent");
807 view.ObjectCreated += new ObjectDataSourceObjectEventHandler (view_ObjectCreate);
808 view.DoOnObjectCreated (new ObjectDataSourceEventArgs (null));
809 Eventassert ("ObjectCreatedEvent");
810 view.ObjectDisposing += new ObjectDataSourceDisposingEventHandler (view_ObjectDisposing);
814 public void ObjectDisposing ()
816 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
817 view.ObjectDisposing += new ObjectDataSourceDisposingEventHandler (view_ObjectDisposing);
818 view.DoOnObjectDisposing (new ObjectDataSourceDisposingEventArgs (null));
819 Eventassert ("ObjectDisposing");
825 MatchParamsToOldValues,
829 public class DummyDataSourceObject
831 public static IEnumerable Select (string filter)
833 if (eventsCalled == null) {
834 eventsCalled = new ArrayList ();
836 eventsCalled.Add (String.Format ("Select(filter = {0})", filter));
837 return new string [] { "one", "two", "three" };
840 public static int Update (string ID)
842 if (eventsCalled == null) {
843 eventsCalled = new ArrayList ();
845 eventsCalled.Add (String.Format ("Update(ID = {0})", ID));
849 public static int Update (string ID, string oldvalue_ID)
851 if (eventsCalled == null) {
852 eventsCalled = new ArrayList ();
854 eventsCalled.Add (String.Format ("Update(ID = {0}, oldvalue_ID = {1})", ID, oldvalue_ID));
858 public static int UpdateOther (string ID, string OtherValue, string oldvalue_ID)
860 if (eventsCalled == null) {
861 eventsCalled = new ArrayList ();
863 eventsCalled.Add (String.Format ("UpdateOther(ID = {0}, OtherValue = {1}, oldvalue_ID = {2})", ID, OtherValue, oldvalue_ID));
867 public static int Insert (string ID)
869 if (eventsCalled == null) {
870 eventsCalled = new ArrayList ();
872 eventsCalled.Add (String.Format ("Insert(ID = {0})", ID));
876 public static int Insert (string ID, string oldvalue_ID)
878 if (eventsCalled == null) {
879 eventsCalled = new ArrayList ();
881 eventsCalled.Add (String.Format ("Insert(ID = {0}, oldvalue_ID = {1})", ID, oldvalue_ID));
885 public static int InsertOther (string ID, string OtherValue)
887 if (eventsCalled == null) {
888 eventsCalled = new ArrayList ();
890 eventsCalled.Add (String.Format ("InsertOther(ID = {0}, OtherValue = {1})", ID, OtherValue));
894 public static int Delete (string ID, string oldvalue_ID)
896 if (eventsCalled == null) {
897 eventsCalled = new ArrayList ();
899 eventsCalled.Add (String.Format ("Delete(ID = {0}, oldvalue_ID = {1})", ID, oldvalue_ID));
903 public static int Delete (string oldvalue_ID)
905 if (eventsCalled == null) {
906 eventsCalled = new ArrayList ();
908 eventsCalled.Add (String.Format ("Delete(oldvalue_ID = {0})", oldvalue_ID));
912 public static int DeleteOther (string oldvalue_ID, string OtherValue)
914 if (eventsCalled == null) {
915 eventsCalled = new ArrayList ();
917 eventsCalled.Add (String.Format ("DeleteOther(oldvalue_ID = {0}, OtherValue = {1})", oldvalue_ID, OtherValue));
922 public class AlwaysChangingParameter : Parameter
926 public AlwaysChangingParameter (string name, TypeCode type, string defaultValue)
927 : base (name, type, defaultValue)
932 protected override object Evaluate (HttpContext context, Control control)
935 return String.Format ("{0}{1}", DefaultValue, evaluateCount);
942 private static int _testcounter;
943 private static bool _eventChecker;
944 private eventAssert ()
949 public static bool eventChecker
953 throw new NotImplementedException ();
957 _eventChecker = value;
961 static private void testAdded ()
964 _eventChecker = false;
967 public static void IsTrue (string msg)
969 Assert.IsTrue (_eventChecker, msg + "#" + _testcounter);
974 public static void IsFalse (string msg)
976 Assert.IsFalse (_eventChecker, msg + "#" + _testcounter);
983 public void ObjectDataSourceView_DataSourceViewChanged ()
985 ObjectDataSource ds = new ObjectDataSource ();
986 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
987 sql.DataSourceViewChanged += new EventHandler (sql_DataSourceViewChanged);
989 sql.DoOnDataSourceViewChanged ();
990 eventAssert.IsTrue ("DataSourceViewChanged");
992 sql.ConflictDetection = ConflictOptions.CompareAllValues;
993 eventAssert.IsTrue ("DataSourceViewChanged");
995 sql.ConvertNullToDBNull = true;
996 eventAssert.IsFalse ("DataSourceViewChanged");
998 sql.DataObjectTypeName = "test";
999 eventAssert.IsTrue ("DataSourceViewChanged");
1001 sql.DeleteMethod = "test";
1002 eventAssert.IsFalse ("DataSourceViewChanged");
1004 sql.EnablePaging = true;
1005 eventAssert.IsTrue ("DataSourceViewChanged");
1007 sql.InsertMethod = "test";
1008 eventAssert.IsFalse ("DataSourceViewChanged");
1010 sql.FilterExpression = "test";
1011 eventAssert.IsTrue ("DataSourceViewChanged");
1013 sql.MaximumRowsParameterName = "test";
1014 eventAssert.IsTrue ("DataSourceViewChanged");
1016 sql.SelectCountMethod = "test";
1017 eventAssert.IsTrue ("DataSourceViewChanged");
1019 sql.SelectMethod = "test";
1020 eventAssert.IsTrue ("DataSourceViewChanged");
1022 sql.OldValuesParameterFormatString = "test";
1023 eventAssert.IsTrue ("DataSourceViewChanged");
1025 sql.StartRowIndexParameterName = "test";
1026 eventAssert.IsTrue ("DataSourceViewChanged");
1028 sql.TypeName = "test";
1029 eventAssert.IsTrue ("DataSourceViewChanged");
1031 sql.UpdateMethod = "test";
1032 eventAssert.IsFalse ("DataSourceViewChanged");
1035 void sql_DataSourceViewChanged (object sender, EventArgs e)
1037 eventAssert.eventChecker = true;
1041 public void SelectCountMethod_DataSourceViewChanged ()
1043 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1044 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1046 Assert.AreEqual ("", view.SelectCountMethod);
1047 view.SelectCountMethod = null;
1048 Assert.AreEqual (1, eventsCalled.Count);
1049 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1050 Assert.AreEqual ("", view.SelectCountMethod);
1052 view.SelectCountMethod = null;
1053 Assert.AreEqual (2, eventsCalled.Count);
1054 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1055 Assert.AreEqual ("", view.SelectCountMethod);
1057 view.SelectCountMethod = "";
1058 Assert.AreEqual (2, eventsCalled.Count);
1062 public void SelectMethod_DataSourceViewChanged2 ()
1064 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1065 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1067 Assert.AreEqual ("", view.SelectMethod);
1068 view.SelectMethod = null;
1069 Assert.AreEqual (1, eventsCalled.Count);
1070 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1071 Assert.AreEqual ("", view.SelectMethod);
1073 view.SelectMethod = null;
1074 Assert.AreEqual (2, eventsCalled.Count);
1075 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1076 Assert.AreEqual ("", view.SelectMethod);
1078 view.SelectMethod = "";
1079 Assert.AreEqual (2, eventsCalled.Count);
1083 public void SelectMethod_DataSourceViewChanged1 ()
1085 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1086 view.DataSourceViewChanged+=new EventHandler(view_DataSourceViewChanged);
1088 view.SelectMethod = "select_1";
1089 Assert.AreEqual (1, eventsCalled.Count);
1090 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1092 view.SelectMethod = "select_2";
1093 Assert.AreEqual (2, eventsCalled.Count);
1094 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1096 view.SelectMethod = "select_2";
1097 Assert.AreEqual (2, eventsCalled.Count);
1099 view.SelectCountMethod = "selectCount_1";
1100 Assert.AreEqual (3, eventsCalled.Count);
1101 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2]);
1103 view.SelectCountMethod = "selectCount_2";
1104 Assert.AreEqual (4, eventsCalled.Count);
1105 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [3]);
1107 view.SelectCountMethod = "selectCount_2";
1108 Assert.AreEqual (4, eventsCalled.Count);
1111 private static void InitializeView (ObjectViewPoker view, InitViewType initType, out Hashtable keys, out Hashtable old_value, out Hashtable new_value)
1113 view.TypeName = typeof (DummyDataSourceObject).AssemblyQualifiedName;
1114 view.OldValuesParameterFormatString = "oldvalue_{0}";
1115 view.SelectMethod = "Select";
1116 if (initType == InitViewType.DontMatchParams) {
1117 view.UpdateMethod = "UpdateOther";
1118 view.InsertMethod = "InsertOther";
1119 view.DeleteMethod = "DeleteOther";
1122 view.UpdateMethod = "Update";
1123 view.InsertMethod = "Insert";
1124 view.DeleteMethod = "Delete";
1127 Parameter selectParameter = null;
1128 Parameter insertParameter = null;
1129 Parameter updateParameter = null;
1130 Parameter deleteParameter = null;
1132 selectParameter = new AlwaysChangingParameter ("filter", TypeCode.String, "p_ValueSelect");
1133 view.SelectParameters.Add (selectParameter);
1136 case InitViewType.MatchParamsToOldValues:
1137 insertParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueInsert");
1138 view.InsertParameters.Add (insertParameter);
1139 updateParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueUpdate");
1140 view.UpdateParameters.Add (updateParameter);
1141 deleteParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueDelete");
1142 view.DeleteParameters.Add (deleteParameter);
1145 case InitViewType.MatchParamsToValues:
1146 insertParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueInsert");
1147 view.InsertParameters.Add (insertParameter);
1148 updateParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueUpdate");
1149 view.UpdateParameters.Add (updateParameter);
1150 deleteParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueDelete");
1151 view.DeleteParameters.Add (deleteParameter);
1154 case InitViewType.DontMatchParams:
1155 insertParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueInsert");
1156 view.InsertParameters.Add (insertParameter);
1157 updateParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueUpdate");
1158 view.UpdateParameters.Add (updateParameter);
1159 deleteParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueDelete");
1160 view.DeleteParameters.Add (deleteParameter);
1164 view.SelectParameters.ParametersChanged += new EventHandler (SelectParameters_ParametersChanged);
1165 view.InsertParameters.ParametersChanged += new EventHandler (InsertParameters_ParametersChanged);
1166 view.UpdateParameters.ParametersChanged += new EventHandler (UpdateParameters_ParametersChanged);
1167 view.DeleteParameters.ParametersChanged += new EventHandler (DeleteParameters_ParametersChanged);
1169 keys = new Hashtable ();
1170 keys.Add ("ID", "k_1001");
1172 old_value = new Hashtable ();
1173 old_value.Add ("ID", "ov_1001");
1175 new_value = new Hashtable ();
1176 new_value.Add ("ID", "n_1001");
1178 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1181 private static IList eventsCalled;
1183 static void view_DataSourceViewChanged (object sender, EventArgs e)
1185 if (eventsCalled == null) {
1186 eventsCalled = new ArrayList ();
1188 eventsCalled.Add ("view_DataSourceViewChanged");
1191 static void SelectParameters_ParametersChanged (object sender, EventArgs e)
1193 if (eventsCalled == null) {
1194 eventsCalled = new ArrayList ();
1196 eventsCalled.Add ("SelectParameters_ParametersChanged");
1199 static void InsertParameters_ParametersChanged (object sender, EventArgs e)
1201 if (eventsCalled == null) {
1202 eventsCalled = new ArrayList ();
1204 eventsCalled.Add ("InsertParameters_ParametersChanged");
1207 static void UpdateParameters_ParametersChanged (object sender, EventArgs e)
1209 if (eventsCalled == null) {
1210 eventsCalled = new ArrayList ();
1212 eventsCalled.Add ("UpdateParameters_ParametersChanged");
1215 static void DeleteParameters_ParametersChanged (object sender, EventArgs e)
1217 if (eventsCalled == null) {
1218 eventsCalled = new ArrayList ();
1220 eventsCalled.Add ("DeleteParameters_ParametersChanged");
1224 public void ParametersAndViewChangedEvent_Select ()
1226 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1227 Hashtable keys = null;
1228 Hashtable old_values = null;
1229 Hashtable new_values = null;
1230 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1232 view.Select (DataSourceSelectArguments.Empty);
1234 Assert.IsNotNull (eventsCalled, "Events not raized");
1235 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1236 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0], "view_DataSourceViewChanged");
1237 Assert.AreEqual ("SelectParameters_ParametersChanged", eventsCalled [1], "SelectParameters_ParametersChanged");
1238 Assert.AreEqual ("Select(filter = p_ValueSelect1)", eventsCalled [2], "DataSource Method params");
1242 public void ParametersAndViewChangedEvent_MatchInsert ()
1244 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1245 Hashtable keys = null;
1246 Hashtable old_values = null;
1247 Hashtable new_values = null;
1248 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1250 view.Insert (new_values);
1252 Assert.IsNotNull (eventsCalled, "Events not raized");
1253 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1254 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1255 Assert.AreEqual ("Insert(ID = n_1001)", eventsCalled [1], "DataSource Method params");
1256 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1260 public void ParametersAndViewChangedEvent_MatchOldInsert ()
1262 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1263 Hashtable keys = null;
1264 Hashtable old_values = null;
1265 Hashtable new_values = null;
1266 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1268 view.Insert (new_values);
1270 Assert.IsNotNull (eventsCalled, "Events not raized");
1271 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1272 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1273 Assert.AreEqual ("Insert(ID = n_1001, oldvalue_ID = p_OldValueInsert1)", eventsCalled [1], "DataSource Method params");
1274 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1278 public void ParametersAndViewChangedEvent_DontMatchInsert ()
1280 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1281 Hashtable keys = null;
1282 Hashtable old_values = null;
1283 Hashtable new_values = null;
1284 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1286 view.Insert (new_values);
1288 Assert.IsNotNull (eventsCalled, "Events not raized");
1289 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1290 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1291 Assert.AreEqual ("InsertOther(ID = n_1001, OtherValue = p_OtherValueInsert1)", eventsCalled [1], "DataSource Method params");
1292 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1296 public void ParametersAndViewChangedEvent_MatchUpdate ()
1298 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1299 Hashtable keys = null;
1300 Hashtable old_values = null;
1301 Hashtable new_values = null;
1302 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1304 view.Update (keys, new_values, old_values);
1306 Assert.IsNotNull (eventsCalled, "Events not raized");
1307 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1308 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1309 Assert.AreEqual ("Update(ID = n_1001, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1310 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1314 public void ParametersAndViewChangedEvent_MatchOldUpdate ()
1316 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1317 Hashtable keys = null;
1318 Hashtable old_values = null;
1319 Hashtable new_values = null;
1320 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1322 view.Update (keys, new_values, old_values);
1324 Assert.IsNotNull (eventsCalled, "Events not raized");
1325 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1326 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1327 Assert.AreEqual ("Update(ID = n_1001, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1328 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1332 public void ParametersAndViewChangedEvent_DontMatchUpdate ()
1334 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1335 Hashtable keys = null;
1336 Hashtable old_values = null;
1337 Hashtable new_values = null;
1338 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1340 view.Update (keys, new_values, old_values);
1342 Assert.IsNotNull (eventsCalled, "Events not raized");
1343 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1344 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1345 Assert.AreEqual ("UpdateOther(ID = n_1001, OtherValue = p_OtherValueUpdate1, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1346 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1350 public void ParametersAndViewChangedEvent_MatchDelete ()
1352 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1353 Hashtable keys = null;
1354 Hashtable old_values = null;
1355 Hashtable new_values = null;
1356 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1358 view.Delete (keys, old_values);
1360 Assert.IsNotNull (eventsCalled, "Events not raized");
1361 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1362 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1363 Assert.AreEqual ("Delete(ID = p_ValueDelete1, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1364 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1368 public void ParametersAndViewChangedEvent_MatchOldDelete ()
1370 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1371 Hashtable keys = null;
1372 Hashtable old_values = null;
1373 Hashtable new_values = null;
1374 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1376 view.Delete (keys, old_values);
1378 Assert.IsNotNull (eventsCalled, "Events not raized");
1379 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1380 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1381 Assert.AreEqual ("Delete(oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1382 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1386 public void ParametersAndViewChangedEvent_DontMatchDelete ()
1388 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1389 Hashtable keys = null;
1390 Hashtable old_values = null;
1391 Hashtable new_values = null;
1392 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1394 view.Delete (keys, old_values);
1396 Assert.IsNotNull (eventsCalled, "Events not raized");
1397 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1398 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1399 Assert.AreEqual ("DeleteOther(oldvalue_ID = k_1001, OtherValue = p_OtherValueDelete1)", eventsCalled [1], "DataSource Method params");
1400 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1407 private static bool event_checker;
1409 private static void Eventassert (string message)
1411 Assert.IsTrue (ObjectDataSourceViewTest.event_checker, message);
1412 ObjectDataSourceViewTest.event_checker = false;
1415 static void Event (object sender, ObjectDataSourceMethodEventArgs e)
1417 ObjectDataSourceViewTest.event_checker = true;
1420 static void view_Selecting (object sender, ObjectDataSourceSelectingEventArgs e)
1422 event_checker = true;
1425 void view_Filtering (object sender, ObjectDataSourceFilteringEventArgs e)
1427 event_checker = true;
1430 void view_ObjectCreate (object sender, ObjectDataSourceEventArgs e)
1432 event_checker = true;
1435 void view_Status (object sender, ObjectDataSourceStatusEventArgs e)
1437 event_checker = true;
1440 void view_ObjectDisposing (object sender, ObjectDataSourceDisposingEventArgs e)
1442 event_checker = true;
1445 private class MyDataSource : ObjectDataSource
1447 public DataSourceView DoGetView (string viewName)
1449 return base.GetView (viewName);
1452 public void DoTrackViewState ()
1454 base.TrackViewState ();
1459 public class DataSourceObject
1461 private static int maximumRows;
1462 public static DataTable ds = CreateDataTable ();
1463 public static void InitDS ()
1465 ds = CreateDataTable ();
1467 public static DataTable Select ()
1472 [Sys.ComponentModel.DataObjectMethod(Sys.ComponentModel.DataObjectMethodType.Select, false)]
1473 public static DataTable Select (int maximumRows, short startRowIndex) {
1474 Assert.Fail ("Should not be called since not default Select DataObjectMethod");
1478 [Sys.ComponentModel.DataObjectMethod(Sys.ComponentModel.DataObjectMethodType.Select, true)]
1479 public static DataTable Select (int maximumRows, int startRowIndex)
1481 DataSourceObject.maximumRows = maximumRows;
1482 if (ds.Rows.Count > maximumRows) {
1483 DataTable temp = ds.Clone ();
1485 while (i < maximumRows && startRowIndex <= ds.Rows.Count) {
1486 object[] o = ds.Rows[startRowIndex].ItemArray;
1496 public static DataTable Delete (string ID, string FName, string LName)
1498 DataRow dr = ds.Rows.Find (ID);
1500 ds.Rows.Remove (dr);
1505 public static DataTable Insert (string ID, string FName, string LName)
1507 DataRow dr = ds.NewRow ();
1509 dr["FName"] = FName;
1510 dr["LName"] = LName;
1515 public static DataTable Update (string ID, string FName, string LName)
1517 foreach (DataRow row in ds.Rows) {
1518 if (row["ID"].ToString () == ID) {
1519 row["FName"] = FName;
1520 row["LName"] = LName;
1527 public static int SelectCount ()
1530 //Note: This is return 5 only for test goal
1534 public static DataTable CreateDataTable ()
1536 DataTable aTable = new DataTable ("A");
1540 // Create ID column and add to the DataTable.
1541 dtCol = new DataColumn ();
1542 dtCol.DataType = Type.GetType ("System.Int32");
1543 dtCol.ColumnName = "ID";
1544 dtCol.AutoIncrement = true;
1545 dtCol.Caption = "ID";
1546 dtCol.ReadOnly = true;
1547 dtCol.Unique = true;
1548 aTable.Columns.Add (dtCol);
1550 // Create Name column and add to the table
1551 dtCol = new DataColumn ();
1552 dtCol.DataType = Type.GetType ("System.String");
1553 dtCol.ColumnName = "FName";
1554 dtCol.AutoIncrement = false;
1555 dtCol.Caption = "First Name";
1556 dtCol.ReadOnly = false;
1557 dtCol.Unique = false;
1558 aTable.Columns.Add (dtCol);
1560 // Create Last Name column and add to the table.
1561 dtCol = new DataColumn ();
1562 dtCol.DataType = Type.GetType ("System.String");
1563 dtCol.ColumnName = "LName";
1564 dtCol.AutoIncrement = false;
1565 dtCol.Caption = "Last Name";
1566 dtCol.ReadOnly = false;
1567 dtCol.Unique = false;
1568 aTable.Columns.Add (dtCol);
1570 // Create three rows to the table
1571 dtRow = aTable.NewRow ();
1573 dtRow["FName"] = "Mahesh";
1574 dtRow["LName"] = "Chand";
1575 aTable.Rows.Add (dtRow);
1577 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };