2 // Tests for System.Web.UI.WebControls.FormView.cs
5 // Merav Sudri (meravs@mainsoft.com)
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 using NUnit.Framework;
34 using System.Threading;
36 using System.Data.Common;
39 using System.Collections;
40 using System.Globalization;
43 using System.Web.UI.WebControls;
44 using MonoTests.SystemWeb.Framework;
45 using MonoTests.stand_alone.WebHarness;
48 namespace MonoTests.System.Web.UI.WebControls
50 public class ObjectDataSourcePoker : ObjectDataSource
52 public ObjectDataSourcePoker () // constructor
58 public object SaveState ()
60 return SaveViewState ();
63 public void LoadState (object o)
69 public StateBag StateBag
71 get { return base.ViewState; }
74 public string Render ()
76 StringWriter sw = new StringWriter ();
77 HtmlTextWriter tw = new HtmlTextWriter (sw);
79 return sw.ToString ();
82 public void DoOnBubbleEvent (Object source, EventArgs e)
84 base.OnBubbleEvent (source, e);
87 public object DoSaveControlState ()
89 return base.SaveControlState ();
92 public void DoLoadControlState (object savedState)
94 base.LoadControlState (savedState);
97 public new DataSourceView GetView (string viewName)
\r
99 return base.GetView (viewName);
\r
103 #region Hellp_class_view
\r
104 public class CustomObjectDataSourceView : ObjectDataSourceView
\r
106 public CustomObjectDataSourceView (ObjectDataSource owner, string name, HttpContext context)
\r
107 : base (owner, name, context)
\r
111 public new int ExecuteUpdate (IDictionary keys, IDictionary values, IDictionary oldValues)
\r
113 return base.ExecuteUpdate (keys, values, oldValues);
\r
116 public new int ExecuteDelete (IDictionary keys, IDictionary oldValues)
\r
118 return base.ExecuteDelete (keys, oldValues);
\r
121 public new IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)
\r
123 return base.ExecuteSelect (arguments);
\r
126 public new int ExecuteInsert (IDictionary values)
\r
128 return base.ExecuteInsert (values);
\r
135 public class ObjectDataSourceTest
\r
140 [TestFixtureTearDown]
141 public void TearDown ()
146 public static void InitObjectDataSource (ObjectDataSourcePoker ds, string action)
148 Parameter p1, p2, p3;
151 case "insert": p1 = new Parameter ("ID", TypeCode.String, "1004");
152 p2 = new Parameter ("fname", TypeCode.String, "David");
153 p3 = new Parameter ("LName", TypeCode.String, "Eli");
156 case "update": p1 = new Parameter ("ID", TypeCode.String, "1001");
157 p2 = new Parameter ("FName", TypeCode.String, "David");
158 p3 = new Parameter ("LName", TypeCode.String, "Eli");
160 case "DBNull": p1 = new Parameter ("ID");
161 p2 = new Parameter ("FName");
162 p3 = new Parameter ("LName");
165 default: p1 = new Parameter ("ID", TypeCode.String, "1001");
166 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
167 p3 = new Parameter ("LName", TypeCode.String, "chand");
171 ds.SelectMethod = "GetMyData";
172 ds.DeleteMethod = "Delete";
173 ds.InsertMethod = "Insert";
174 ds.UpdateMethod = "Update";
175 ds.SelectCountMethod = "SelectCount";
176 ds.DeleteParameters.Add (p1);
177 ds.DeleteParameters.Add (p2);
178 ds.DeleteParameters.Add (p3);
179 ds.InsertParameters.Add (p1);
180 ds.InsertParameters.Add (p2);
181 ds.InsertParameters.Add (p3);
182 ds.UpdateParameters.Add (p1);
183 ds.UpdateParameters.Add (p2);
184 ds.UpdateParameters.Add (p3);
185 ds.ID = "MyObject";
\r
186 ds.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject"; //,MonoTests.System.Web
191 //Default properties
\r
195 public void ObjectDataSource_DefaultProperties ()
197 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
199 Assert.AreEqual (ConflictOptions.OverwriteChanges, ods.ConflictDetection, "ConflictDetection");
200 Assert.AreEqual ("",ods.DataObjectTypeName ,"DataObjectTypeName ");
201 Assert.AreEqual ("", ods.DeleteMethod, "DeleteMethod");
202 Assert.AreEqual (typeof(ParameterCollection),ods.DeleteParameters.GetType (),"DeleteParameters");
203 Assert.AreEqual (false, ods.EnablePaging, "EnablePaging ");
204 Assert.AreEqual ("", ods.FilterExpression, "FilterExpression ");
205 Assert.AreEqual (typeof (ParameterCollection), ods.FilterParameters.GetType (), "FilterParameters");
206 Assert.AreEqual ("", ods.InsertMethod, "InsertMethod ");
207 Assert.AreEqual (typeof (ParameterCollection), ods.InsertParameters.GetType (), "InsertParameters ");
208 Assert.AreEqual ("maximumRows", ods.MaximumRowsParameterName, "MaximumRowsParameterName");
209 Assert.AreEqual ("{0}", ods.OldValuesParameterFormatString, "OldValuesParameterFormatString");
210 Assert.AreEqual ("", ods.SelectCountMethod, "SelectCountMethod");
211 Assert.AreEqual ("", ods.SelectMethod, "SelectMethod ");
212 Assert.AreEqual (typeof (ParameterCollection), ods.SelectParameters.GetType (), "SelectParameters");
213 Assert.AreEqual ("", ods.SortParameterName, "SortParameterName");
214 Assert.AreEqual ("startRowIndex", ods.StartRowIndexParameterName, "StartRowIndexParameterName");
215 Assert.AreEqual ("", ods.TypeName, "TypeName");
216 Assert.AreEqual ("", ods.UpdateMethod, "UpdateMethod ");
217 Assert.AreEqual (typeof (ParameterCollection), ods.UpdateParameters.GetType (), "UpdateParameters");
222 public void ObjectDataSource_NotWorkingDefaultProperties ()
224 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
225 Assert.AreEqual (0, ods.CacheDuration, "CacheDuration");
226 Assert.AreEqual (DataSourceCacheExpiry.Absolute, ods.CacheExpirationPolicy, "CacheExpirationPolicy");
227 Assert.AreEqual ("", ods.CacheKeyDependency, "CacheKeyDependency");
228 Assert.AreEqual (false, ods.ConvertNullToDBNull, "ConvertNullToDBNull ");
229 Assert.AreEqual (false, ods.EnableCaching, "EnableCaching ");
230 Assert.AreEqual ("", ods.SqlCacheDependency, "SqlCacheDependency");
233 //Non default properties values
236 public void ObjectDataSource_AssignToDefaultProperties ()
238 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
239 InitObjectDataSource (ods,"");
240 ods.ConflictDetection = ConflictOptions.CompareAllValues;
241 Assert.AreEqual (ConflictOptions.CompareAllValues, ods.ConflictDetection, "ConflictDetection");
242 ods.DataObjectTypeName = "MyData";
243 Assert.AreEqual ("MyData", ods.DataObjectTypeName, "DataObjectTypeName ");
244 Assert.AreEqual ("Delete", ods.DeleteMethod, "DeleteMethod");
245 Assert.AreEqual (3, ods.DeleteParameters.Count, "DeleteParameters");
246 ods.EnablePaging = true;
247 Assert.AreEqual (true, ods.EnablePaging, "EnablePaging ");
248 ods.FilterExpression = "ID='{0}'";
249 Assert.AreEqual ("ID='{0}'", ods.FilterExpression, "FilterExpression ");
250 TextBox TextBox1=new TextBox ();
251 TextBox1.Text ="1001";
252 FormParameter p=new FormParameter ("ID","TextBox1");
253 p.DefaultValue = "1002";
254 ods.FilterParameters.Add (p);
255 Assert.AreEqual ("ID", ods.FilterParameters[0].Name, "FilterParameters1");
256 Assert.AreEqual ("1002", ods.FilterParameters[0].DefaultValue , "FilterParameters2");
257 Assert.AreEqual ("TextBox1", ((FormParameter )ods.FilterParameters[0]).FormField, "FilterParameters3");
258 Assert.AreEqual ("Insert", ods.InsertMethod, "InsertMethod ");
259 Assert.AreEqual ("ID", ods.InsertParameters[0].Name , "InsertParameters ");
260 ods.MaximumRowsParameterName = "SelectCount";
261 Assert.AreEqual ("SelectCount", ods.MaximumRowsParameterName, "MaximumRowsParameterName");
262 ods.OldValuesParameterFormatString = "ID";
263 Assert.AreEqual ("ID", ods.OldValuesParameterFormatString, "OldValuesParameterFormatString");
264 Assert.AreEqual ("SelectCount", ods.SelectCountMethod, "SelectCountMethod");
265 Assert.AreEqual ("GetMyData", ods.SelectMethod, "SelectMethod ");
266 Parameter dummy = new Parameter ();
268 ods.SelectParameters.Add (dummy);
269 Assert.AreEqual ("Test", ods.SelectParameters[0].Name , "SelectParameters");
270 ods.SortParameterName = "sortExpression";
271 Assert.AreEqual ("sortExpression", ods.SortParameterName, "SortParameterName");
272 ods.StartRowIndexParameterName = "ID";
273 Assert.AreEqual ("ID", ods.StartRowIndexParameterName, "StartRowIndexParameterName");
274 Assert.AreEqual ("MonoTests.System.Web.UI.WebControls.MyTableObject", ods.TypeName, "TypeName");
275 Assert.AreEqual ("Update", ods.UpdateMethod, "UpdateMethod ");
276 Assert.AreEqual ("FName", ods.UpdateParameters[1].Name, "UpdateParameters");
281 public void ObjectDataSource_NotWorkingAssignToDefaultProperties ()
283 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
284 ods.CacheDuration = 1000;
285 Assert.AreEqual (1000, ods.CacheDuration, "CacheDuration");
286 ods.CacheExpirationPolicy = DataSourceCacheExpiry.Sliding;
287 Assert.AreEqual (DataSourceCacheExpiry.Sliding, ods.CacheExpirationPolicy, "CacheExpirationPolicy");
288 ods.CacheKeyDependency = "ID";
289 Assert.AreEqual ("ID", ods.CacheKeyDependency, "CacheKeyDependency");
290 ods.ConvertNullToDBNull = true;
291 Assert.AreEqual (true, ods.ConvertNullToDBNull, "ConvertNullToDBNull ");
292 ods.EnableCaching = true;
293 Assert.AreEqual (true, ods.EnableCaching, "EnableCaching ");
294 ods.SqlCacheDependency = "Northwind:Employees";
295 Assert.AreEqual ("Northwind:Employees", ods.SqlCacheDependency, "SqlCacheDependency");
301 public void ObjectDataSource_ViewState ()
303 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
304 //InitObjectDataSource (ods,"");
305 ObjectDataSourcePoker copy = new ObjectDataSourcePoker ();
306 FormParameter p = new FormParameter ("ID", "TextBox1");
307 p.DefaultValue = "1002";
308 ods.FilterParameters.Add (p);
309 Parameter p1 = new Parameter ("ID", TypeCode.String, "1001");
310 Parameter p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
311 ods.SelectParameters.Add (p1);
312 ods.SelectParameters.Add (p2);
313 object state = ods.SaveState ();
314 copy.LoadState (state);
315 Assert.AreEqual ("ID", copy.FilterParameters [0].Name, "ViewStateFilterParameters1");
316 Assert.AreEqual ("1002", copy.FilterParameters [0].DefaultValue, "ViewStateFilterParameters2");
317 Assert.AreEqual ("1001", copy.SelectParameters[0].DefaultValue, "ViewStateSelectParameters1");
318 Assert.AreEqual (2, copy.SelectParameters.Count , "ViewStateSelectParameters2");
321 //Properties functionality
323 public void ObjectDataSource_ConflictDetection ()
329 [Category("NotWorking")]
330 [Category ("NunitWeb")]
331 public void ObjectDataSource_ConvertNullToDBNull ()
333 string html = new WebTest (PageInvoker.CreateOnLoad (new PageDelegate (ConvertNullToDBNull))).Run ();
337 public static void ConvertNullToDBNull (Page p)
339 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
340 InitObjectDataSource (ods,"DBNull");
342 ods.ConvertNullToDBNull = true;
346 catch (Exception ex) {
347 Assert.AreEqual (true,
348 ex.Message.Contains ("type 'System.DBNull' cannot be converted to type 'System.String'") || // dotnet
349 ex.Message.Contains ("Value cannot be null."), "ConvertNullToDBNull"); // mono
352 Assert.AreEqual (true, dbnull, "ConvertNullToDBNull2");
356 [Category ("NunitWeb")]
357 public void ObjectDataSource_FilterExpression ()
359 string html = new WebTest (PageInvoker.CreateOnLoad (
360 new PageDelegate (FilterExpression))).Run ();
361 string newHtml= HtmlDiff.GetControlFromPageHtml (html);
362 string origHtml = @"<table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
364 <td>ID</td><td>FName</td><td>LName</td>
366 <td>1002</td><td>Melanie</td><td>Talmadge</td>
369 HtmlDiff.AssertAreEqual (origHtml, newHtml, "FilterExpression");
373 public static void FilterExpression (Page p)
375 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
376 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
377 DataGrid dg = new DataGrid ();
378 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
379 InitObjectDataSource (ods, "");
380 ods.FilterExpression = "ID='1002'";
381 p.Controls.Add (lcb);
383 p.Controls.Add (ods);
384 p.Controls.Add (lce);
391 [Category ("NunitWeb")]
392 public void ObjectDataSource_FilterParameter ()
394 string html = new WebTest (PageInvoker.CreateOnLoad (
395 new PageDelegate (FilterParameter))).Run ();
396 string newHtml = HtmlDiff.GetControlFromPageHtml (html);
397 string origHtml = @"<table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
399 <td>ID</td><td>FName</td><td>LName</td>
401 <td>1003</td><td>Vinay</td><td>Bansal</td>
404 HtmlDiff.AssertAreEqual (origHtml, newHtml, "FilterExpression");
408 public static void FilterParameter (Page p)
410 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
411 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
412 DataGrid dg = new DataGrid ();
413 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
414 InitObjectDataSource (ods, "");
415 ods.FilterExpression = "{0}";
416 Parameter p1 = new Parameter ("ID", TypeCode.String, "ID=1003");
417 ods.FilterParameters.Add (p1);
418 p.Controls.Add (lcb);
420 p.Controls.Add (ods);
421 p.Controls.Add (lce);
429 [Category ("NunitWeb")]
430 [Category ("NotWorking")]
431 public void ObjectDataSource_EnablePaging ()
433 string html = new WebTest (PageInvoker.CreateOnLoad (
434 new PageDelegate (EnablePaging))).Run ();
435 string newHtml = HtmlDiff.GetControlFromPageHtml (html);
436 string origHtml = @"<div>
437 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
439 <th scope=""col"">Name</th><th scope=""col"">Number</th>
441 <td>Number0</td><td>0</td>
443 <td>Number1</td><td>1</td>
445 <td>Number2</td><td>2</td>
447 <td>Number3</td><td>3</td>
449 <td>Number4</td><td>4</td>
451 <td colspan=""2""><table border=""0"">
453 <td><span>1</span></td><td><a href=""javascript:__doPostBack('ctl01','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('ctl01','Page$3')"">3</a></td><td><a href=""javascript:__doPostBack('ctl01','Page$4')"">4</a></td>
459 HtmlDiff.AssertAreEqual (origHtml, newHtml, "EnablePaging");
463 public static void EnablePaging (Page p)
465 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
466 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
467 GridView gv = new GridView ();
468 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
469 ods.ID = "ObjectDataSource1";
470 ods.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject";
471 ods.SelectMethod = "SelectForPaging";
472 ods.EnablePaging = true;
473 ods.SelectCountMethod = "SelectCount";
474 ods.MaximumRowsParameterName = "maxRows";
475 ods.StartRowIndexParameterName = "startIndex";
476 gv.AllowPaging = true;
478 p.Controls.Add (lcb);
480 p.Controls.Add (ods);
481 p.Controls.Add (lce);
482 gv.DataSourceID = "ObjectDataSource1";
490 [Category ("NunitWeb")]
491 public void ObjectDataSource_Delete ()
493 string html = new WebTest (PageInvoker.CreateOnLoad (
494 new PageDelegate (DeleteMethod))).Run ();
495 string newHtml = HtmlDiff.GetControlFromPageHtml (html);
496 string origHtml = @"<div>
497 <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
499 <td>ID</td><td>1002</td>
501 <td>FName</td><td>Melanie</td>
503 <td>LName</td><td>Talmadge</td>
507 HtmlDiff.AssertAreEqual (origHtml, newHtml, "DeleteRender");
511 public static void DeleteMethod (Page p)
513 LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
514 LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
515 MyTableObject.ds = MyTableObject.CreateDataTable ();
516 DetailsView dv = new DetailsView ();
517 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
518 ods.Deleted += new ObjectDataSourceStatusEventHandler (odc_Deleted);
519 ods.Deleting += new ObjectDataSourceMethodEventHandler (odc_Deleting);
520 InitObjectDataSource (ods,"");
523 dv.DataKeyNames = new string[] { "ID" };
525 p.Controls.Add (lcb);
526 p.Controls.Add (ods);
528 p.Controls.Add (lce);
530 Assert.AreEqual (3, dv.DataItemCount, "BeforeDelete1");
531 Assert.AreEqual (1001, dv.SelectedValue, "BeforeDelete2");
532 Assert.AreEqual (false, deleting, "BeforeDeletingEvent");
533 Assert.AreEqual (false, deleted, "BeforeDeletedEvent");
536 Assert.AreEqual (true, deleting, "AfterDeletingEvent");
537 Assert.AreEqual (true, deleted, "AfterDeletedEvent");
538 Assert.AreEqual (2, dv.DataItemCount, "BeforeDelete1");
539 Assert.AreEqual (1002, dv.SelectedValue, "BeforeDelete2");
543 [Category ("NunitWeb")]
544 public void ObjectDataSource_Select ()
546 string html = new WebTest (PageInvoker.CreateOnLoad (
547 new PageDelegate (SelectMethod))).Run ();
551 public static void SelectMethod (Page p)
553 MyTableObject.ds = MyTableObject.CreateDataTable ();
554 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
555 InitObjectDataSource (ods,"");
556 ods.Selected += new ObjectDataSourceStatusEventHandler (odc_Selected);
557 ods.Selecting += new ObjectDataSourceSelectingEventHandler (odc_Selecting);
558 p.Controls.Add (ods);
559 Assert.AreEqual (false, selecting, "BeforeSelectingEvent");
560 Assert.AreEqual (false, selected, "BeforeSelectedEvent");
561 IEnumerable table = (IEnumerable) ods.Select ();
562 Assert.AreEqual (3,((DataView) table).Count, "ItemsCount");
563 Assert.AreEqual ("Mahesh", ((DataView) table)[0].Row.ItemArray[1], "FirstItemData");
564 Assert.AreEqual (1002, ((DataView) table)[1].Row.ItemArray[0], "SecondItemData");
565 Assert.AreEqual ("Bansal", ((DataView) table)[2].Row.ItemArray[2], "ThirdItemData");
566 Assert.AreEqual (true, selecting, "AfterSelectingEvent");
567 Assert.AreEqual (true, selected, "AfterSelectedEvent");
571 [Category ("NunitWeb")]
572 public void ObjectDataSource_Select_Cached ()
574 string html = new WebTest (PageInvoker.CreateOnLoad (
575 new PageDelegate (SelectMethodCached))).Run ();
579 public static void SelectMethodCached (Page p)
581 MyTableObject.ds = MyTableObject.CreateDataTable ();
582 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
583 ods.EnableCaching = true;
584 InitObjectDataSource (ods, "");
585 p.Controls.Add (ods);
586 ods.Selecting += new ObjectDataSourceSelectingEventHandler (odc_Selecting);
589 IEnumerable table = (IEnumerable) ods.Select ();
590 Assert.AreEqual (true, selecting, "AfterSelectingEvent");
593 IEnumerable table2 = (IEnumerable) ods.Select ();
594 Assert.AreEqual (false, selecting, "AfterSelectingEvent");
597 [Category ("NunitWeb")]
598 public void ObjectDataSource_Insert ()
600 string html = new WebTest (PageInvoker.CreateOnLoad (
601 new PageDelegate (InsertMethod))).Run ();
604 public static void InsertMethod (Page p)
606 MyTableObject.ds = MyTableObject.CreateDataTable ();
607 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
608 InitObjectDataSource (ods,"insert");
609 ods.Inserted += new ObjectDataSourceStatusEventHandler (odc_Inserted);
610 ods.Inserting += new ObjectDataSourceMethodEventHandler (odc_Inserting);
611 p.Controls.Add (ods);
612 Assert.AreEqual (3, ((DataView) ods.Select ()).Count, "BeforeInsert");
613 Assert.AreEqual (false, inserted , "BeforeInsertedEvent");
614 Assert.AreEqual (false, inserting , "BeforeInsertingEvent");
616 Assert.AreEqual (4, ((DataView) ods.Select ()).Count , "AfterInsert1");
617 Assert.AreEqual (1004,((DataView) ods.Select ())[3].Row.ItemArray[0], "AfterInsert2");
618 Assert.AreEqual ("David", ((DataView) ods.Select ())[3].Row.ItemArray[1], "AfterInsert3");
619 Assert.AreEqual (true, inserted, "AfterInsertedEvent");
620 Assert.AreEqual (true, inserting, "AfterInsertingEvent");
625 [Category ("NunitWeb")]
626 public void ObjectDataSource_Update ()
628 string html = new WebTest (PageInvoker.CreateOnLoad (
629 new PageDelegate (UpdateMethod))).Run ();
632 public static void UpdateMethod (Page p)
634 MyTableObject.ds = MyTableObject.CreateDataTable ();
635 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
636 InitObjectDataSource (ods, "update");
637 ods.Updated += new ObjectDataSourceStatusEventHandler (odc_Updated);
638 ods.Updating += new ObjectDataSourceMethodEventHandler (odc_Updating);
639 p.Controls.Add (ods);
640 Assert.AreEqual (3, ((DataView) ods.Select ()).Count, "BeforeUpdate1");
641 Assert.AreEqual (1001, ((DataView) ods.Select ())[0].Row.ItemArray[0], "BeforeUpdate2");
642 Assert.AreEqual ("Mahesh", ((DataView) ods.Select ())[0].Row.ItemArray[1], "BeforeUpdate3");
643 Assert.AreEqual ("Chand", ((DataView) ods.Select ())[0].Row.ItemArray[2], "BeforeUpdate4");
644 Assert.AreEqual (false, updated, "BeforeUpdateEvent");
645 Assert.AreEqual (false, updating, "BeforeUpdatingEvent");
647 Assert.AreEqual (3, ((DataView) ods.Select ()).Count, "AfterUpdate1");
648 Assert.AreEqual (1001, ((DataView) ods.Select ())[0].Row.ItemArray[0], "AfterUpdate2");
649 Assert.AreEqual ("David", ((DataView) ods.Select ())[0].Row.ItemArray[1], "AfterUpdate3");
650 Assert.AreEqual ("Eli", ((DataView) ods.Select ())[0].Row.ItemArray[2], "AfterUpdate4");
651 Assert.AreEqual (true, updated, "AfterUpdateEvent");
652 Assert.AreEqual (true, updating, "AfterUpdatingEvent");
659 private static bool deleted = false;
660 private static bool deleting = false;
661 private static bool filtering = false;
662 private static bool inserted = false;
663 private static bool inserting = false;
664 private static bool objectCreated = false;
665 private static bool objectCreating = false;
666 private static bool objectDisposing = false;
667 private static bool selected = false;
668 private static bool selecting = false;
669 private static bool updated = false;
670 private static bool updating = false;
672 // Tests for events Select,Update,Delete and Insert include in Select,Update,Delete and Insert methods tests.
675 [Category ("NunitWeb")]
676 public void ObjectDataSource_Events ()
678 string html = new WebTest (PageInvoker.CreateOnLoad (
679 new PageDelegate (EventsTest))).Run ();
683 public static void EventsTest (Page p)
686 MyTableObject.ds = MyTableObject.CreateDataTable ();
687 DetailsView dv = new DetailsView ();
688 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
689 ods.ObjectCreated += new ObjectDataSourceObjectEventHandler (odc_ObjectCreated);
690 ods.ObjectCreating += new ObjectDataSourceObjectEventHandler (odc_ObjectCreating);
691 InitObjectDataSource (ods,"");
692 ods.FilterExpression = "ID='1001'";
695 dv.DataKeyNames = new string[] { "ID" };
697 p.Controls.Add (ods);
700 ods.Filtering += new ObjectDataSourceFilteringEventHandler (odc_Filtering);
701 Assert.AreEqual (false, filtering, "BeforeFilteringEvent");
703 Assert.AreEqual (true, filtering, "AfterFilteringEvent");
704 ods.ObjectDisposing += new ObjectDataSourceDisposingEventHandler (odc_ObjectDisposing);
705 //ToDo: Dispose, ObjectCreated and ObjectCreating should be tested.
709 static void odc_Updating (object sender, ObjectDataSourceMethodEventArgs e)
714 static void odc_Updated (object sender, ObjectDataSourceStatusEventArgs e)
719 static void odc_Selecting (object sender, ObjectDataSourceSelectingEventArgs e)
724 static void odc_Selected (object sender, ObjectDataSourceStatusEventArgs e)
729 static void odc_ObjectDisposing (object sender, ObjectDataSourceDisposingEventArgs e)
731 objectDisposing = true;
734 static void odc_ObjectCreating (object sender, ObjectDataSourceEventArgs e)
736 objectCreating = true;
739 static void odc_ObjectCreated (object sender, ObjectDataSourceEventArgs e)
741 objectCreated = true;
744 static void odc_Inserting (object sender, ObjectDataSourceMethodEventArgs e)
749 static void odc_Inserted (object sender, ObjectDataSourceStatusEventArgs e)
754 static void odc_Filtering (object sender, ObjectDataSourceFilteringEventArgs e)
759 static void odc_Deleting (object sender, ObjectDataSourceMethodEventArgs e)
764 static void odc_Deleted (object sender, ObjectDataSourceStatusEventArgs e)
770 public void ObjectDataSource_SelectExecute ()
\r
772 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
773 InitObjectDataSource (ods, "");
\r
774 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
775 view.SelectMethod = "GetMyData";
\r
776 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
777 view.SelectParameters.Add (new Parameter ("Fname", TypeCode.String, "TestSelect"));
\r
778 ArrayList ls =(ArrayList) view.ExecuteSelect (new DataSourceSelectArguments (""));
\r
779 Assert.AreEqual ("TestSelect", ls[0], "SelectExecute");
\r
783 public void ObjectDataSource_SelectExecuteCaseSensitive ()
\r
785 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
786 InitObjectDataSource (ods, "");
\r
787 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
788 view.SelectMethod = "GetMyData";
\r
789 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
790 view.SelectParameters.Add (new Parameter ("fname", TypeCode.String, "TestSelect"));
\r
791 ArrayList ls = (ArrayList) view.ExecuteSelect (new DataSourceSelectArguments (""));
\r
792 Assert.AreEqual ("TestSelect", ls[0], "SelectExecuteCaseSensitive");
\r
796 public void ObjectDataSource_DeleteExecute ()
\r
798 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
799 InitObjectDataSource (ods, "");
\r
800 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
801 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
802 view.SelectMethod = "GetMyData";
\r
803 view.DeleteMethod = "Delete";
\r
804 Parameter p1, p2, p3;
\r
805 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
806 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
807 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
808 view.DeleteParameters.Add (p1);
\r
809 view.DeleteParameters.Add (p2);
\r
810 view.DeleteParameters.Add (p3);
\r
811 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
813 Hashtable value = new Hashtable();
\r
814 value.Add("ID","test_id");
\r
815 view.ExecuteDelete (value, null);
\r
816 Assert.AreEqual (true, MyTableObject.DeleteWithOldValueCollection, "DeleteExecute");
\r
820 public void ObjectDataSource_DeleteExecuteParameterCaseSensitive_1 ()
\r
822 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
823 InitObjectDataSource (ods, "");
\r
824 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
825 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
826 view.SelectMethod = "GetMyData";
\r
827 view.DeleteMethod = "Delete";
\r
828 Parameter p1, p2, p3;
\r
829 p1 = new Parameter ("id", TypeCode.String, "1001");
\r
830 p2 = new Parameter ("fname", TypeCode.String, "Mahesh");
\r
831 p3 = new Parameter ("lname", TypeCode.String, "chand");
\r
832 view.DeleteParameters.Add (p1);
\r
833 view.DeleteParameters.Add (p2);
\r
834 view.DeleteParameters.Add (p3);
\r
835 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
837 Hashtable value = new Hashtable ();
\r
838 value.Add ("ID", "test_id");
\r
839 view.ExecuteDelete (value, null);
\r
840 Assert.AreEqual (true, MyTableObject.DeleteWithOldValueCollection, "DeleteExecuteParameterCaseSensitive");
\r
844 [Category("NotWorking")]
\r
845 public void ObjectDataSource_DeleteExecuteMethodCaseSensitive ()
\r
847 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
848 InitObjectDataSource (ods, "");
\r
849 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
850 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
851 view.SelectMethod = "GetMyData";
\r
852 view.DeleteMethod = "delete";
\r
853 Parameter p1, p2, p3;
\r
854 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
855 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
856 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
857 view.DeleteParameters.Add (p1);
\r
858 view.DeleteParameters.Add (p2);
\r
859 view.DeleteParameters.Add (p3);
\r
860 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
862 Hashtable value = new Hashtable ();
\r
863 value.Add ("ID", "test_id");
\r
864 view.ExecuteDelete (value, null);
\r
865 Assert.AreEqual (true, MyTableObject.DeleteWithOldValueCollection, "DeleteExecuteMethodCaseSensitive");
\r
869 public void ObjectDataSource_InsertExecute_1 ()
\r
871 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
872 InitObjectDataSource (ods, "");
\r
873 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
874 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
875 view.SelectMethod = "GetMyData";
\r
876 view.InsertMethod = "Insert";
\r
878 //This hashtable ovveride
\r
879 Hashtable value = new Hashtable ();
\r
880 value.Add ("ID", "test_id");
\r
881 view.ExecuteInsert (value);
\r
882 Assert.AreEqual (true, MyTableObject.InsertWithParameters, "InsertExecute#1");
\r
886 public void ObjectDataSource_InsertExecute_2 ()
\r
888 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
889 InitObjectDataSource (ods, "");
\r
890 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
891 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
892 view.SelectMethod = "GetMyData";
\r
893 view.InsertMethod = "Insert";
\r
895 Parameter p1, p2, p3;
\r
896 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
897 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
898 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
899 view.InsertParameters.Add (p1);
\r
900 view.InsertParameters.Add (p2);
\r
901 view.InsertParameters.Add (p3);
\r
903 //This hashtable ovveride
\r
904 Hashtable value = new Hashtable ();
\r
905 value.Add ("T", "test_id");
\r
908 view.ExecuteInsert (value);
\r
909 Assert.AreEqual (true, MyTableObject.InsertWithMergedParameters, "InsertExecute#2");
\r
913 public void ObjectDataSource_InsertParametersCaseSensitive ()
\r
915 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
916 InitObjectDataSource (ods, "");
\r
917 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
918 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
919 view.SelectMethod = "GetMyData";
\r
920 view.InsertMethod = "Insert";
\r
922 Parameter p1, p2, p3;
\r
923 p1 = new Parameter ("id", TypeCode.String, "1001");
\r
924 p2 = new Parameter ("fname", TypeCode.String, "Mahesh");
\r
925 p3 = new Parameter ("lname", TypeCode.String, "chand");
\r
926 view.InsertParameters.Add (p1);
\r
927 view.InsertParameters.Add (p2);
\r
928 view.InsertParameters.Add (p3);
\r
930 //This hashtable ovveride
\r
931 Hashtable value = new Hashtable ();
\r
932 value.Add ("t", "test_id");
\r
935 view.ExecuteInsert (value);
\r
936 Assert.AreEqual (true, MyTableObject.InsertWithMergedParameters, "InsertParametersCaseSensitive");
\r
940 public void ObjectDataSource_UpdateExecute_1()
\r
942 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
943 InitObjectDataSource (ods, "");
\r
944 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
945 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
946 view.SelectMethod = "GetMyData";
\r
947 view.UpdateMethod = "Update";
\r
948 Parameter p1, p2, p3;
\r
949 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
950 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
951 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
952 view.UpdateParameters.Add (p1);
\r
953 view.UpdateParameters.Add (p2);
\r
954 view.UpdateParameters.Add (p3);
\r
956 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
957 Hashtable value = new Hashtable ();
\r
958 value.Add ("P", "1000");
\r
959 view.ExecuteUpdate (value, null, null);
\r
960 Assert.AreEqual (true, MyTableObject.UpdateWithOldValueCollection, "UpdateExecute#1");
\r
964 public void ObjectDataSource_UpdateExecute_2 ()
\r
966 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
967 InitObjectDataSource (ods, "");
\r
968 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
969 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
970 view.SelectMethod = "GetMyData";
\r
971 view.UpdateMethod = "TryUpdate";
\r
972 Parameter p1, p2, p3;
\r
973 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
974 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
975 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
976 view.UpdateParameters.Add (p1);
\r
977 view.UpdateParameters.Add (p2);
\r
978 view.UpdateParameters.Add (p3);
\r
980 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
981 Hashtable value = new Hashtable ();
\r
982 value.Add ("P", "1001");
\r
984 view.ExecuteUpdate (null, value, null);
\r
985 Assert.AreEqual (true, MyTableObject.UpdateWithMergedCollection, "UpdateExecute#2");
\r
989 [Category ("NotWorking")]
\r
990 public void ObjectDataSource_UpdateExecute_CompareAllValues ()
\r
992 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
993 InitObjectDataSource (ods, "");
\r
994 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
995 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
996 view.SelectMethod = "GetMyData";
\r
997 view.UpdateMethod = "TryUpdate_1";
\r
998 Parameter p1, p2, p3;
\r
999 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
1000 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
1001 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
1002 view.UpdateParameters.Add (p1);
\r
1003 view.UpdateParameters.Add (p2);
\r
1004 view.UpdateParameters.Add (p3);
\r
1006 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
1007 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
1010 Hashtable value = new Hashtable ();
\r
1011 value.Add ("ID", "1001");
\r
1013 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
1014 view.ExecuteUpdate (null,null, value);
\r
1015 Assert.AreEqual (true, MyTableObject.UpdateWithCompareAllValues, "CompareAllValues");
\r
1019 [Category ("NotWorking")]
\r
1020 public void ObjectDataSource_UpdateExecute_DataObjectTypeName ()
\r
1022 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1023 InitObjectDataSource (ods, "");
\r
1024 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1025 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1026 view.DataObjectTypeName = "MonoTests.System.Web.UI.WebControls.NewData,MonoTests.System.Web";
\r
1028 view.SelectMethod = "GetMyData";
\r
1029 view.UpdateMethod = "Update";
\r
1030 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
1031 view.ExecuteUpdate (null, null, null);
\r
1032 Assert.AreEqual (true, MyTableObject.UpdateWithDataObjectTypeName, "UpdateExecute_DataObjectTypeName");
\r
1037 [Test] // Note: on ConflictOptions.CompareAllValues old values cannot be null;
\r
1038 [Category ("NotWorking")]
\r
1039 [ExpectedException (typeof (InvalidOperationException))]
\r
1040 public void ObjectDataSource_UpdateExecute_CompareAllValues_Exception ()
\r
1042 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1043 InitObjectDataSource (ods, "");
\r
1044 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1045 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1046 view.SelectMethod = "GetMyData";
\r
1047 view.UpdateMethod = "TryUpdate_1";
\r
1048 Parameter p1, p2, p3;
\r
1049 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
1050 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
1051 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
1052 view.UpdateParameters.Add (p1);
\r
1053 view.UpdateParameters.Add (p2);
\r
1054 view.UpdateParameters.Add (p3);
\r
1056 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
1057 view.ConflictDetection = ConflictOptions.CompareAllValues;
\r
1058 view.ExecuteUpdate (null, null, null);
\r
1062 [ExpectedException (typeof (InvalidOperationException))]
\r
1063 public void ObjectDataSource_UpdateExecute_3 ()
\r
1065 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1066 InitObjectDataSource (ods, "");
\r
1067 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1068 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1069 view.SelectMethod = "GetMyData";
\r
1070 view.UpdateMethod = "Update";
\r
1071 Parameter p1, p2, p3;
\r
1072 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
1073 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
1074 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
1075 view.UpdateParameters.Add (p1);
\r
1076 view.UpdateParameters.Add (p2);
\r
1077 view.UpdateParameters.Add (p3);
\r
1079 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
1080 Hashtable value = new Hashtable ();
\r
1081 value.Add ("ID", "1000");
\r
1082 view.ExecuteUpdate (value, null, null);
\r
1086 [ExpectedException (typeof (InvalidOperationException))]
\r
1087 public void ObjectDataSource_InsertParameterException ()
\r
1089 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1090 InitObjectDataSource (ods, "");
\r
1091 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1092 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1093 view.SelectMethod = "GetMyData";
\r
1094 view.InsertMethod = "Insert";
\r
1096 Parameter p1, p2, p3;
\r
1097 p1 = new Parameter ("id", TypeCode.String, "1001");
\r
1098 p2 = new Parameter ("fname", TypeCode.String, "Mahesh");
\r
1099 p3 = new Parameter ("lname", TypeCode.String, "chand");
\r
1100 view.InsertParameters.Add (p1);
\r
1101 view.InsertParameters.Add (p2);
\r
1102 view.InsertParameters.Add (p3);
\r
1104 //This hashtable ovveride
\r
1105 Hashtable value = new Hashtable ();
\r
1106 value.Add ("z", "test_id");
\r
1108 //Merge parameters
\r
1109 view.ExecuteInsert (value);
\r
1110 Assert.AreEqual (true, MyTableObject.InsertWithMergedParameters, "InsertExecute");
\r
1114 [ExpectedException (typeof (InvalidOperationException))]
\r
1115 public void ObjectDataSource_DeleteExecuteMethodParameterException()
\r
1117 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1118 InitObjectDataSource (ods, "");
\r
1119 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1120 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1121 view.SelectMethod = "GetMyData";
\r
1122 view.DeleteMethod = "delete";
\r
1123 Parameter p1, p2, p3;
\r
1124 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
1125 view.DeleteParameters.Add (p1);
\r
1126 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
1127 Hashtable value = new Hashtable ();
\r
1128 value.Add ("ID", "test_id");
\r
1129 view.ExecuteDelete (value, null);
\r
1133 [ExpectedException (typeof (InvalidOperationException))]
\r
1134 public void ObjectDataSource_DeleteExecuteOldValueException ()
\r
1136 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1137 InitObjectDataSource (ods, "");
\r
1138 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1139 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1140 view.SelectMethod = "GetMyData";
\r
1141 view.DeleteMethod = "Delete";
\r
1142 Parameter p1, p2, p3;
\r
1143 p1 = new Parameter ("ID", TypeCode.String, "1001");
\r
1144 p2 = new Parameter ("FName", TypeCode.String, "Mahesh");
\r
1145 p3 = new Parameter ("LName", TypeCode.String, "chand");
\r
1146 view.DeleteParameters.Add (p1);
\r
1147 view.DeleteParameters.Add (p2);
\r
1148 view.DeleteParameters.Add (p3);
\r
1149 view.OldValuesParameterFormatString = "oldvalue_{0}";
\r
1151 Hashtable value = new Hashtable ();
\r
1152 value.Add ("ID", "test_id");
\r
1153 value.Add ("FName", "test_FName");
\r
1154 view.ExecuteDelete (value, null);
\r
1155 Assert.AreEqual (true, MyTableObject.DeleteWithOldValueCollection, "DeleteExecute");
\r
1159 [ExpectedException (typeof (InvalidOperationException))]
\r
1160 public void ObjectDataSource_SelectExecuteException_1 ()
\r
1162 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1163 InitObjectDataSource (ods, "");
\r
1164 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1165 view.SelectMethod = "GetMyData";
\r
1166 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1167 view.SelectParameters.Add (new Parameter ("Name", TypeCode.String, "TestSelect"));
\r
1168 IEnumerable res = view.ExecuteSelect (new DataSourceSelectArguments (""));
\r
1171 [ExpectedException (typeof (InvalidOperationException))]
\r
1172 public void ObjectDataSource_SelectExecuteException_2 ()
\r
1174 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
\r
1175 InitObjectDataSource (ods, "");
\r
1176 CustomObjectDataSourceView view = new CustomObjectDataSourceView (ods, "CustomView", null);
\r
1177 view.SelectMethod = "Fake";
\r
1178 view.TypeName = "MonoTests.System.Web.UI.WebControls.MyTableObject,MonoTests.System.Web";
\r
1179 view.SelectParameters.Add (new Parameter ("Fname", TypeCode.String, "TestSelect"));
\r
1180 IEnumerable res = view.ExecuteSelect (new DataSourceSelectArguments (""));
\r
1184 [ExpectedException (typeof (NotSupportedException))]
1185 [Category ("NunitWeb")]
1186 public void ObjectDataSource_EnableCachingException ()
1188 string html = new WebTest (PageInvoker.CreateOnLoad (
1189 new PageDelegate (EnableCachingException))).Run ();
1193 public static void EnableCachingException (Page p)
1195 MyTableObject.ds = MyTableObject.CreateDataTable ();
1196 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
1197 InitObjectDataSource (ods, "");
1198 ods.SelectMethod = "SelectException";
1199 ods.EnableCaching = true;
1200 p.Controls.Add (ods);
1201 IEnumerable table = (IEnumerable) ods.Select ();
1206 [ExpectedException (typeof (NotSupportedException))]
1207 [Category ("NunitWeb")]
1208 public void ObjectDataSource_FilterExpressionException ()
1210 string html = new WebTest (PageInvoker.CreateOnLoad (
1211 new PageDelegate (FilterExpressionException))).Run ();
1215 public static void FilterExpressionException (Page p)
1217 MyTableObject.ds = MyTableObject.CreateDataTable ();
1218 ObjectDataSourcePoker ods = new ObjectDataSourcePoker ();
1219 InitObjectDataSource (ods, "");
1220 ods.SelectMethod = "SelectException";
1221 ods.FilterExpression = "ID='1001'";
1222 p.Controls.Add (ods);
1223 IEnumerable table = (IEnumerable) ods.Select ();
1227 # region Object_Data_Source_DAL
\r
1228 public class MyTableObject
1230 public static DataTable ds = CreateDataTable ();
\r
1231 public MyTableObject ()
\r
1233 ResetEventCheckers ();
\r
1236 public static DataTable GetMyData ()
1241 public static ArrayList GetMyData (string Fname)
\r
1243 ArrayList ar = new ArrayList ();
\r
1248 public static DbDataReader SelectException ()
1250 return new DataTableReader (new DataTable ());
1253 public static int SelectCount ()
1259 public static DataTable Delete (string ID, string FName, string LName)
1261 DataRow dr = ds.Rows.Find (ID);
1262 ds.Rows.Remove (dr);
1267 public static DataTable Delete (string ID, string FName, string LName, string oldvalue_ID)
\r
1269 DeleteWithOldValueCollection = true;
\r
1270 DataRow dr = ds.Rows.Find (ID);
\r
1272 ds.Rows.Remove (dr); }
\r
1277 public static bool DeleteWithOldValueCollection;
\r
1278 public static bool UpdateWithOldValueCollection;
\r
1279 public static bool UpdateWithMergedCollection;
\r
1280 public static bool InsertWithParameters;
\r
1281 public static bool InsertWithMergedParameters;
\r
1282 public static bool UpdateWithCompareAllValues;
\r
1283 public static bool UpdateWithDataObjectTypeName;
1285 private void ResetEventCheckers()
1287 DeleteWithOldValueCollection = false;
\r
1288 InsertWithParameters = false;
\r
1289 InsertWithMergedParameters = false;
\r
1290 UpdateWithOldValueCollection = false;
\r
1291 UpdateWithMergedCollection = false;
\r
1292 UpdateWithCompareAllValues = false;
\r
1293 UpdateWithDataObjectTypeName = false;
1296 public static DataTable Update (string ID, string FName, string LName)
1298 DataRow dr = ds.Rows.Find (ID);
1300 Label lbl = new Label ();
1301 lbl.Text = "ID doesn't exist. update only FName and LName";
1304 dr["FName"] = FName;
1305 dr["LName"] = LName;
1310 public static DataTable TryUpdate_1 (string ID, string FName, string LName, string oldvalue_ID)
\r
1312 UpdateWithCompareAllValues = true;
\r
1317 public static DataTable TryUpdate (string ID, string FName, string LName, string P)
\r
1319 UpdateWithMergedCollection = true;
\r
1323 public static DataTable Update (string ID, string FName, string LName, string oldvalue_P )
\r
1325 UpdateWithOldValueCollection = true;
\r
1329 public static DataTable Update (NewData data)
\r
1331 UpdateWithDataObjectTypeName = true;
\r
1335 public static DataTable Insert (string ID)
\r
1337 InsertWithParameters = true;
\r
1341 public static DataTable Insert (string ID, string FName, string LName,string T)
\r
1343 InsertWithMergedParameters = true;
\r
1347 public static DataTable Insert (string ID, string FName, string LName)
1349 DataRow dr = ds.NewRow ();
1351 dr["FName"] = FName;
1352 dr["LName"] = LName;
1358 public static DataTable CreateDataTable ()
1361 DataTable aTable = new DataTable ("A");
1365 // Create ID column and add to the DataTable.
1367 dtCol = new DataColumn ();
1368 dtCol.DataType = Type.GetType ("System.Int32");
1369 dtCol.ColumnName = "ID";
1370 dtCol.AutoIncrement = true;
1371 dtCol.Caption = "ID";
1372 dtCol.ReadOnly = true;
1373 dtCol.Unique = true;
1375 // Add the column to the DataColumnCollection.
1377 aTable.Columns.Add (dtCol);
1379 // Create Name column and add to the table
1381 dtCol = new DataColumn ();
1382 dtCol.DataType = Type.GetType ("System.String");
1383 dtCol.ColumnName = "FName";
1384 dtCol.AutoIncrement = false;
1385 dtCol.Caption = "First Name";
1386 dtCol.ReadOnly = false;
1387 dtCol.Unique = false;
1388 aTable.Columns.Add (dtCol);
1391 // Create Last Name column and add to the table.
1393 dtCol = new DataColumn ();
1394 dtCol.DataType = Type.GetType ("System.String");
1395 dtCol.ColumnName = "LName";
1396 dtCol.AutoIncrement = false;
1397 dtCol.Caption = "Last Name";
1398 dtCol.ReadOnly = false;
1399 dtCol.Unique = false;
1400 aTable.Columns.Add (dtCol);
1403 // Create three rows to the table
1404 dtRow = aTable.NewRow ();
1406 dtRow["FName"] = "Mahesh";
1407 dtRow["LName"] = "Chand";
1408 aTable.Rows.Add (dtRow);
1411 dtRow = aTable.NewRow ();
1413 dtRow["FName"] = "Melanie";
1414 dtRow["LName"] = "Talmadge";
1415 aTable.Rows.Add (dtRow);
1417 dtRow = aTable.NewRow ();
1419 dtRow["FName"] = "Vinay";
1420 dtRow["LName"] = "Bansal";
1421 aTable.Rows.Add (dtRow);
1423 aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };
1428 public static DataTable SelectForPaging (int startIndex, int maxRows)
1430 DataTable table = new DataTable ();
1431 table.Columns.Add ("Name", typeof (string));
1432 table.Columns.Add ("Number", typeof (int));
1434 for (int i = 0; i < maxRows; i++) {
1435 current = i + startIndex;
1436 table.Rows.Add (new object[] { "Number" + current.ToString (), current });
1446 #region DataObjectTypeName
\r
1447 public class NewData
\r
1449 private int IDValue;
\r
1450 private string ENameValue;
\r
1451 private string LNameValue;
\r
1453 public string LName
\r
1455 get { return LNameValue; }
\r
1456 set { LNameValue = value; }
\r
1459 public string EName
\r
1461 get { return ENameValue; }
\r
1462 set { ENameValue = value; }
\r
1467 get { return IDValue; }
\r
1468 set { IDValue = value; }
\r