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 [Category ("NotWorking")]
984 public void ObjectDataSourceView_DataSourceViewChanged ()
986 ObjectDataSource ds = new ObjectDataSource ();
987 ObjectViewPoker sql = new ObjectViewPoker (ds, "DefaultView", null);
988 sql.DataSourceViewChanged += new EventHandler (sql_DataSourceViewChanged);
990 sql.DoOnDataSourceViewChanged ();
991 eventAssert.IsTrue ("DataSourceViewChanged");
993 sql.ConflictDetection = ConflictOptions.CompareAllValues;
994 eventAssert.IsTrue ("DataSourceViewChanged");
996 sql.ConvertNullToDBNull = true;
997 eventAssert.IsFalse ("DataSourceViewChanged");
999 sql.DataObjectTypeName = "test";
1000 eventAssert.IsTrue ("DataSourceViewChanged");
1002 sql.DeleteMethod = "test";
1003 eventAssert.IsFalse ("DataSourceViewChanged");
1005 sql.EnablePaging = true;
1006 eventAssert.IsTrue ("DataSourceViewChanged");
1008 sql.InsertMethod = "test";
1009 eventAssert.IsFalse ("DataSourceViewChanged");
1011 sql.FilterExpression = "test";
1012 eventAssert.IsTrue ("DataSourceViewChanged");
1014 sql.MaximumRowsParameterName = "test";
1015 eventAssert.IsTrue ("DataSourceViewChanged");
1017 sql.SelectCountMethod = "test";
1018 eventAssert.IsTrue ("DataSourceViewChanged");
1020 sql.SelectMethod = "test";
1021 eventAssert.IsTrue ("DataSourceViewChanged");
1023 sql.OldValuesParameterFormatString = "test";
1024 eventAssert.IsTrue ("DataSourceViewChanged");
1026 sql.StartRowIndexParameterName = "test";
1027 eventAssert.IsTrue ("DataSourceViewChanged");
1029 sql.TypeName = "test";
1030 eventAssert.IsTrue ("DataSourceViewChanged");
1032 sql.UpdateMethod = "test";
1033 eventAssert.IsFalse ("DataSourceViewChanged");
1036 void sql_DataSourceViewChanged (object sender, EventArgs e)
1038 eventAssert.eventChecker = true;
1042 public void SelectCountMethod_DataSourceViewChanged ()
1044 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1045 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1047 Assert.AreEqual ("", view.SelectCountMethod);
1048 view.SelectCountMethod = null;
1049 Assert.AreEqual (1, eventsCalled.Count);
1050 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1051 Assert.AreEqual ("", view.SelectCountMethod);
1053 view.SelectCountMethod = null;
1054 Assert.AreEqual (2, eventsCalled.Count);
1055 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1056 Assert.AreEqual ("", view.SelectCountMethod);
1058 view.SelectCountMethod = "";
1059 Assert.AreEqual (2, eventsCalled.Count);
1063 public void SelectMethod_DataSourceViewChanged2 ()
1065 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1066 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1068 Assert.AreEqual ("", view.SelectMethod);
1069 view.SelectMethod = null;
1070 Assert.AreEqual (1, eventsCalled.Count);
1071 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1072 Assert.AreEqual ("", view.SelectMethod);
1074 view.SelectMethod = null;
1075 Assert.AreEqual (2, eventsCalled.Count);
1076 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1077 Assert.AreEqual ("", view.SelectMethod);
1079 view.SelectMethod = "";
1080 Assert.AreEqual (2, eventsCalled.Count);
1084 public void SelectMethod_DataSourceViewChanged1 ()
1086 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1087 view.DataSourceViewChanged+=new EventHandler(view_DataSourceViewChanged);
1089 view.SelectMethod = "select_1";
1090 Assert.AreEqual (1, eventsCalled.Count);
1091 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0]);
1093 view.SelectMethod = "select_2";
1094 Assert.AreEqual (2, eventsCalled.Count);
1095 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [1]);
1097 view.SelectMethod = "select_2";
1098 Assert.AreEqual (2, eventsCalled.Count);
1100 view.SelectCountMethod = "selectCount_1";
1101 Assert.AreEqual (3, eventsCalled.Count);
1102 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2]);
1104 view.SelectCountMethod = "selectCount_2";
1105 Assert.AreEqual (4, eventsCalled.Count);
1106 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [3]);
1108 view.SelectCountMethod = "selectCount_2";
1109 Assert.AreEqual (4, eventsCalled.Count);
1112 private static void InitializeView (ObjectViewPoker view, InitViewType initType, out Hashtable keys, out Hashtable old_value, out Hashtable new_value)
1114 view.TypeName = typeof (DummyDataSourceObject).AssemblyQualifiedName;
1115 view.OldValuesParameterFormatString = "oldvalue_{0}";
1116 view.SelectMethod = "Select";
1117 if (initType == InitViewType.DontMatchParams) {
1118 view.UpdateMethod = "UpdateOther";
1119 view.InsertMethod = "InsertOther";
1120 view.DeleteMethod = "DeleteOther";
1123 view.UpdateMethod = "Update";
1124 view.InsertMethod = "Insert";
1125 view.DeleteMethod = "Delete";
1128 Parameter selectParameter = null;
1129 Parameter insertParameter = null;
1130 Parameter updateParameter = null;
1131 Parameter deleteParameter = null;
1133 selectParameter = new AlwaysChangingParameter ("filter", TypeCode.String, "p_ValueSelect");
1134 view.SelectParameters.Add (selectParameter);
1137 case InitViewType.MatchParamsToOldValues:
1138 insertParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueInsert");
1139 view.InsertParameters.Add (insertParameter);
1140 updateParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueUpdate");
1141 view.UpdateParameters.Add (updateParameter);
1142 deleteParameter = new AlwaysChangingParameter ("oldvalue_ID", TypeCode.String, "p_OldValueDelete");
1143 view.DeleteParameters.Add (deleteParameter);
1146 case InitViewType.MatchParamsToValues:
1147 insertParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueInsert");
1148 view.InsertParameters.Add (insertParameter);
1149 updateParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueUpdate");
1150 view.UpdateParameters.Add (updateParameter);
1151 deleteParameter = new AlwaysChangingParameter ("ID", TypeCode.String, "p_ValueDelete");
1152 view.DeleteParameters.Add (deleteParameter);
1155 case InitViewType.DontMatchParams:
1156 insertParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueInsert");
1157 view.InsertParameters.Add (insertParameter);
1158 updateParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueUpdate");
1159 view.UpdateParameters.Add (updateParameter);
1160 deleteParameter = new AlwaysChangingParameter ("OtherValue", TypeCode.String, "p_OtherValueDelete");
1161 view.DeleteParameters.Add (deleteParameter);
1165 view.SelectParameters.ParametersChanged += new EventHandler (SelectParameters_ParametersChanged);
1166 view.InsertParameters.ParametersChanged += new EventHandler (InsertParameters_ParametersChanged);
1167 view.UpdateParameters.ParametersChanged += new EventHandler (UpdateParameters_ParametersChanged);
1168 view.DeleteParameters.ParametersChanged += new EventHandler (DeleteParameters_ParametersChanged);
1170 keys = new Hashtable ();
1171 keys.Add ("ID", "k_1001");
1173 old_value = new Hashtable ();
1174 old_value.Add ("ID", "ov_1001");
1176 new_value = new Hashtable ();
1177 new_value.Add ("ID", "n_1001");
1179 view.DataSourceViewChanged += new EventHandler (view_DataSourceViewChanged);
1182 private static IList eventsCalled;
1184 static void view_DataSourceViewChanged (object sender, EventArgs e)
1186 if (eventsCalled == null) {
1187 eventsCalled = new ArrayList ();
1189 eventsCalled.Add ("view_DataSourceViewChanged");
1192 static void SelectParameters_ParametersChanged (object sender, EventArgs e)
1194 if (eventsCalled == null) {
1195 eventsCalled = new ArrayList ();
1197 eventsCalled.Add ("SelectParameters_ParametersChanged");
1200 static void InsertParameters_ParametersChanged (object sender, EventArgs e)
1202 if (eventsCalled == null) {
1203 eventsCalled = new ArrayList ();
1205 eventsCalled.Add ("InsertParameters_ParametersChanged");
1208 static void UpdateParameters_ParametersChanged (object sender, EventArgs e)
1210 if (eventsCalled == null) {
1211 eventsCalled = new ArrayList ();
1213 eventsCalled.Add ("UpdateParameters_ParametersChanged");
1216 static void DeleteParameters_ParametersChanged (object sender, EventArgs e)
1218 if (eventsCalled == null) {
1219 eventsCalled = new ArrayList ();
1221 eventsCalled.Add ("DeleteParameters_ParametersChanged");
1225 public void ParametersAndViewChangedEvent_Select ()
1227 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1228 Hashtable keys = null;
1229 Hashtable old_values = null;
1230 Hashtable new_values = null;
1231 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1233 view.Select (DataSourceSelectArguments.Empty);
1235 Assert.IsNotNull (eventsCalled, "Events not raized");
1236 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1237 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [0], "view_DataSourceViewChanged");
1238 Assert.AreEqual ("SelectParameters_ParametersChanged", eventsCalled [1], "SelectParameters_ParametersChanged");
1239 Assert.AreEqual ("Select(filter = p_ValueSelect1)", eventsCalled [2], "DataSource Method params");
1243 public void ParametersAndViewChangedEvent_MatchInsert ()
1245 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1246 Hashtable keys = null;
1247 Hashtable old_values = null;
1248 Hashtable new_values = null;
1249 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1251 view.Insert (new_values);
1253 Assert.IsNotNull (eventsCalled, "Events not raized");
1254 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1255 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1256 Assert.AreEqual ("Insert(ID = n_1001)", eventsCalled [1], "DataSource Method params");
1257 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1261 public void ParametersAndViewChangedEvent_MatchOldInsert ()
1263 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1264 Hashtable keys = null;
1265 Hashtable old_values = null;
1266 Hashtable new_values = null;
1267 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1269 view.Insert (new_values);
1271 Assert.IsNotNull (eventsCalled, "Events not raized");
1272 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1273 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1274 Assert.AreEqual ("Insert(ID = n_1001, oldvalue_ID = p_OldValueInsert1)", eventsCalled [1], "DataSource Method params");
1275 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1279 public void ParametersAndViewChangedEvent_DontMatchInsert ()
1281 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1282 Hashtable keys = null;
1283 Hashtable old_values = null;
1284 Hashtable new_values = null;
1285 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1287 view.Insert (new_values);
1289 Assert.IsNotNull (eventsCalled, "Events not raized");
1290 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1291 Assert.AreEqual ("InsertParameters_ParametersChanged", eventsCalled [0], "InsertParameters_ParametersChanged");
1292 Assert.AreEqual ("InsertOther(ID = n_1001, OtherValue = p_OtherValueInsert1)", eventsCalled [1], "DataSource Method params");
1293 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1297 public void ParametersAndViewChangedEvent_MatchUpdate ()
1299 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1300 Hashtable keys = null;
1301 Hashtable old_values = null;
1302 Hashtable new_values = null;
1303 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1305 view.Update (keys, new_values, old_values);
1307 Assert.IsNotNull (eventsCalled, "Events not raized");
1308 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1309 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1310 Assert.AreEqual ("Update(ID = n_1001, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1311 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1315 public void ParametersAndViewChangedEvent_MatchOldUpdate ()
1317 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1318 Hashtable keys = null;
1319 Hashtable old_values = null;
1320 Hashtable new_values = null;
1321 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1323 view.Update (keys, new_values, old_values);
1325 Assert.IsNotNull (eventsCalled, "Events not raized");
1326 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1327 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1328 Assert.AreEqual ("Update(ID = n_1001, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1329 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1333 public void ParametersAndViewChangedEvent_DontMatchUpdate ()
1335 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1336 Hashtable keys = null;
1337 Hashtable old_values = null;
1338 Hashtable new_values = null;
1339 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1341 view.Update (keys, new_values, old_values);
1343 Assert.IsNotNull (eventsCalled, "Events not raized");
1344 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1345 Assert.AreEqual ("UpdateParameters_ParametersChanged", eventsCalled [0], "UpdateParameters_ParametersChanged");
1346 Assert.AreEqual ("UpdateOther(ID = n_1001, OtherValue = p_OtherValueUpdate1, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1347 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1351 public void ParametersAndViewChangedEvent_MatchDelete ()
1353 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1354 Hashtable keys = null;
1355 Hashtable old_values = null;
1356 Hashtable new_values = null;
1357 InitializeView (view, InitViewType.MatchParamsToValues, out keys, out old_values, out new_values);
1359 view.Delete (keys, old_values);
1361 Assert.IsNotNull (eventsCalled, "Events not raized");
1362 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1363 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1364 Assert.AreEqual ("Delete(ID = p_ValueDelete1, oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1365 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1369 public void ParametersAndViewChangedEvent_MatchOldDelete ()
1371 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1372 Hashtable keys = null;
1373 Hashtable old_values = null;
1374 Hashtable new_values = null;
1375 InitializeView (view, InitViewType.MatchParamsToOldValues, out keys, out old_values, out new_values);
1377 view.Delete (keys, old_values);
1379 Assert.IsNotNull (eventsCalled, "Events not raized");
1380 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1381 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1382 Assert.AreEqual ("Delete(oldvalue_ID = k_1001)", eventsCalled [1], "DataSource Method params");
1383 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1387 public void ParametersAndViewChangedEvent_DontMatchDelete ()
1389 ObjectViewPoker view = new ObjectViewPoker (new ObjectDataSource (), "", null);
1390 Hashtable keys = null;
1391 Hashtable old_values = null;
1392 Hashtable new_values = null;
1393 InitializeView (view, InitViewType.DontMatchParams, out keys, out old_values, out new_values);
1395 view.Delete (keys, old_values);
1397 Assert.IsNotNull (eventsCalled, "Events not raized");
1398 Assert.AreEqual (3, eventsCalled.Count, "Events Count");
1399 Assert.AreEqual ("DeleteParameters_ParametersChanged", eventsCalled [0], "DeleteParameters_ParametersChanged");
1400 Assert.AreEqual ("DeleteOther(oldvalue_ID = k_1001, OtherValue = p_OtherValueDelete1)", eventsCalled [1], "DataSource Method params");
1401 Assert.AreEqual ("view_DataSourceViewChanged", eventsCalled [2], "view_DataSourceViewChanged");
1408 private static bool event_checker;
1410 private static void Eventassert (string message)
1412 Assert.IsTrue (ObjectDataSourceViewTest.event_checker, message);
1413 ObjectDataSourceViewTest.event_checker = false;
1416 static void Event (object sender, ObjectDataSourceMethodEventArgs e)
1418 ObjectDataSourceViewTest.event_checker = true;
1421 static void view_Selecting (object sender, ObjectDataSourceSelectingEventArgs e)
1423 event_checker = true;
1426 void view_Filtering (object sender, ObjectDataSourceFilteringEventArgs e)
1428 event_checker = true;
1431 void view_ObjectCreate (object sender, ObjectDataSourceEventArgs e)
1433 event_checker = true;
1436 void view_Status (object sender, ObjectDataSourceStatusEventArgs e)
1438 event_checker = true;
1441 void view_ObjectDisposing (object sender, ObjectDataSourceDisposingEventArgs e)
1443 event_checker = true;
1446 private class MyDataSource : ObjectDataSource
1448 public DataSourceView DoGetView (string viewName)
1450 return base.GetView (viewName);
1453 public void DoTrackViewState ()
1455 base.TrackViewState ();
1460 public class DataSourceObject
1462 private static int maximumRows;
1463 public static DataTable ds = CreateDataTable ();
1464 public static void InitDS ()
1466 ds = CreateDataTable ();
1468 public static DataTable Select ()
1473 [Sys.ComponentModel.DataObjectMethod(Sys.ComponentModel.DataObjectMethodType.Select, false)]
1474 public static DataTable Select (int maximumRows, short startRowIndex) {
1475 Assert.Fail ("Should not be called since not default Select DataObjectMethod");
1479 [Sys.ComponentModel.DataObjectMethod(Sys.ComponentModel.DataObjectMethodType.Select, true)]
1480 public static DataTable Select (int maximumRows, int startRowIndex)
1482 DataSourceObject.maximumRows = maximumRows;
1483 if (ds.Rows.Count > maximumRows) {
1484 DataTable temp = ds.Clone ();
1486 while (i < maximumRows && startRowIndex <= ds.Rows.Count) {
1487 object[] o = ds.Rows[startRowIndex].ItemArray;
1497 public static DataTable Delete (string ID, string FName, string LName)
1499 DataRow dr = ds.Rows.Find (ID);
1501 ds.Rows.Remove (dr);
1506 public static DataTable Insert (string ID, string FName, string LName)
1508 DataRow dr = ds.NewRow ();
1510 dr["FName"] = FName;
1511 dr["LName"] = LName;
1516 public static DataTable Update (string ID, string FName, string LName)
1518 foreach (DataRow row in ds.Rows) {
1519 if (row["ID"].ToString () == ID) {
1520 row["FName"] = FName;
1521 row["LName"] = LName;
1528 public static int SelectCount ()
1531 //Note: This is return 5 only for test goal
1535 public static DataTable CreateDataTable ()
1537 DataTable aTable = new DataTable ("A");
1541 // Create ID column and add to the DataTable.
1542 dtCol = new DataColumn ();
1543 dtCol.DataType = Type.GetType ("System.Int32");
1544 dtCol.ColumnName = "ID";
1545 dtCol.AutoIncrement = true;
1546 dtCol.Caption = "ID";
1547 dtCol.ReadOnly = true;
1548 dtCol.Unique = true;
1549 aTable.Columns.Add (dtCol);
1551 // Create Name column and add to the table
1552 dtCol = new DataColumn ();
1553 dtCol.DataType = Type.GetType ("System.String");
1554 dtCol.ColumnName = "FName";
1555 dtCol.AutoIncrement = false;
1556 dtCol.Caption = "First Name";
1557 dtCol.ReadOnly = false;
1558 dtCol.Unique = false;
1559 aTable.Columns.Add (dtCol);
1561 // Create Last Name column and add to the table.
1562 dtCol = new DataColumn ();
1563 dtCol.DataType = Type.GetType ("System.String");
1564 dtCol.ColumnName = "LName";
1565 dtCol.AutoIncrement = false;
1566 dtCol.Caption = "Last Name";
1567 dtCol.ReadOnly = false;
1568 dtCol.Unique = false;
1569 aTable.Columns.Add (dtCol);
1571 // Create three rows to the table
1572 dtRow = aTable.NewRow ();
1574 dtRow["FName"] = "Mahesh";
1575 dtRow["LName"] = "Chand";
1576 aTable.Rows.Add (dtRow);
1578 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };