<29/05/07 by:yoni yonik@mainsoft.com>
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / SqlDataSourceTest.cs
index 8e6a3fb1c2db9eab6a3b0056eae4f9db88fd3d61..9c2e62598fd40b8a2cb1e736322c7d751c60d8b3 100644 (file)
@@ -42,6 +42,7 @@ using System.Web.UI;
 using System.Web.UI.WebControls;\r
 using System.Collections;\r
 using System.Text;\r
+using System.Data;\r
 \r
 namespace MonoTests.System.Web.UI.WebControls\r
 {\r
@@ -61,6 +62,11 @@ namespace MonoTests.System.Web.UI.WebControls
                {\r
                        LoadViewState (savedState);\r
                }\r
+\r
+               public void DoRaiseDataSourceChangedEvent ()\r
+               {\r
+                       base.RaiseDataSourceChangedEvent(new EventArgs());\r
+               }\r
        }\r
 \r
        class CustomSqlDataSourceView : SqlDataSourceView\r
@@ -139,10 +145,7 @@ namespace MonoTests.System.Web.UI.WebControls
                        Assert.AreEqual ("", sql.FilterExpression, "A26");\r
                }\r
 \r
-               // WARNING!!!!!! This information will be saved into viewstate only in mono implementation .\r
-\r
                [Test]\r
-               [Category ("NotDotNet")] // LAME SPEC: MS SqlDataSource does not appear to SaveViewState, even though MSDN says it should!\r
                public void ViewState ()\r
                {\r
                        SqlPoker sql = new SqlPoker ();\r
@@ -188,44 +191,69 @@ namespace MonoTests.System.Web.UI.WebControls
                        Assert.AreEqual ("hi", sql.FilterExpression, "A26");\r
 \r
                        object state = sql.SaveToViewState ();\r
+                       Assert.IsNull (state, "ViewState is null");\r
 \r
                        sql = new SqlPoker ();\r
                        sql.LoadFromViewState (state);\r
 \r
-                       Assert.AreEqual ("", sql.CacheKeyDependency, "B1"); // Not in ViewState\r
-                       Assert.IsFalse (sql.CancelSelectOnNullParameter, "B2");\r
-                       Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "B3");\r
-                       Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.DeleteCommandType, "B4");\r
-                       Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.InsertCommandType, "B5");\r
-                       Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.SelectCommandType, "B6");\r
-                       Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.UpdateCommandType, "B7");\r
-                       Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "B8");\r
-                       Assert.AreEqual ("", sql.SqlCacheDependency, "B9"); // Not in ViewState\r
-                       Assert.AreEqual ("hi", sql.SortParameterName, "B10");\r
-                       Assert.AreEqual (0, sql.CacheDuration, "B11"); // Not in ViewState\r
-                       Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "B12"); // Not in ViewState\r
-                       Assert.IsFalse (sql.EnableCaching, "B13"); // Not in ViewState\r
-                       Assert.AreEqual (SqlDataSourceMode.DataReader, sql.DataSourceMode, "B16");\r
-                       Assert.AreEqual ("DELETE foo", sql.DeleteCommand, "B17");\r
+                       Assert.AreEqual ("", sql.CacheKeyDependency, "B1");\r
+                       Assert.IsTrue (sql.CancelSelectOnNullParameter, "B2");\r
+                       Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "B3");\r
+                       Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B4");\r
+                       Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "B5");\r
+                       Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "B6");\r
+                       Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B7");\r
+                       Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "B8");\r
+                       Assert.AreEqual ("", sql.SqlCacheDependency, "B9");\r
+                       Assert.AreEqual ("", sql.SortParameterName, "B10");\r
+                       Assert.AreEqual (0, sql.CacheDuration, "B11");\r
+                       Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "B12");\r
+                       Assert.IsFalse (sql.EnableCaching, "B13");\r
+                       Assert.AreEqual (SqlDataSourceMode.DataSet, sql.DataSourceMode, "B16");\r
+                       Assert.AreEqual ("", sql.DeleteCommand, "B17");\r
                        Assert.IsNotNull (sql.DeleteParameters, "B18");\r
                        Assert.AreEqual (0, sql.DeleteParameters.Count, "B18.1");\r
                        Assert.IsNotNull (sql.FilterParameters, "B19");\r
                        Assert.AreEqual (0, sql.FilterParameters.Count, "B19.1");\r
-                       Assert.AreEqual ("INSERT foo", sql.InsertCommand, "B20");\r
+                       Assert.AreEqual ("", sql.InsertCommand, "B20");\r
                        Assert.IsNotNull (sql.InsertParameters, "B21");\r
                        Assert.AreEqual (0, sql.InsertParameters.Count, "B21.1");\r
-                       Assert.AreEqual ("SELECT foo", sql.SelectCommand, "B22");\r
+                       Assert.AreEqual ("", sql.SelectCommand, "B22");\r
                        Assert.IsNotNull (sql.SelectParameters, "B23");\r
                        Assert.AreEqual (0, sql.SelectParameters.Count, "B23.1");\r
-                       Assert.AreEqual ("UPDATE foo", sql.UpdateCommand, "B24");\r
+                       Assert.AreEqual ("", sql.UpdateCommand, "B24");\r
                        Assert.IsNotNull (sql.UpdateParameters, "B25");\r
                        Assert.AreEqual (0, sql.UpdateParameters.Count, "B25.1");\r
-                       Assert.AreEqual ("hi", sql.FilterExpression, "B26");\r
+                       Assert.AreEqual ("", sql.FilterExpression, "B26");\r
                }\r
 \r
                // Help parameter for Asserts\r
                private static SqlParameterCollection CustomEventParameterCollection;\r
                private static string PassedParameters;\r
+\r
+               [Test]\r
+               public void ReturnValueParameter ()\r
+               {\r
+                       SqlPoker sql = new SqlPoker ();\r
+                       sql.ConnectionString = "Data Source=fake\\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa";\r
+                       sql.ProviderName = "System.Data.SqlClient";\r
+                       CustomSqlDataSourceView view = new CustomSqlDataSourceView (sql, "TestView", null);\r
+                       view.SelectCommandType = SqlDataSourceCommandType.Text;\r
+                       view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";\r
+                       view.OldValuesParameterFormatString = "origin_{0}";\r
+\r
+                       view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "10"));\r
+                       Parameter myReturn = new Parameter ("myReturn", TypeCode.Int32);\r
+                       myReturn.Direction = ParameterDirection.ReturnValue;\r
+                       view.SelectParameters.Add (myReturn);\r
+                       \r
+                       view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);\r
+                       view.Select (new DataSourceSelectArguments ());\r
+                       \r
+                       Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");\r
+                       Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");\r
+                       Assert.IsNotNull (CustomEventParameterCollection ["@myReturn"], "Parameter name");\r
+               }\r
                \r
                [Test]\r
                public void ExecuteSelect ()\r
@@ -751,6 +779,103 @@ namespace MonoTests.System.Web.UI.WebControls
                        return sb.ToString ();\r
                }\r
 \r
+               #region help_results\r
+               class eventAssert\r
+               {\r
+                       private static int _testcounter;\r
+                       private static bool _eventChecker;\r
+                       private eventAssert ()\r
+                       {\r
+                               _testcounter = 0;\r
+                       }\r
+\r
+                       public static bool eventChecker\r
+                       {\r
+                               get\r
+                               {\r
+                                       throw new NotImplementedException ();\r
+                               }\r
+                               set\r
+                               {\r
+                                       _eventChecker = value;\r
+                               }\r
+                       }\r
+\r
+                       static private void testAdded ()\r
+                       {\r
+                               _testcounter++;\r
+                               _eventChecker = false;\r
+                       }\r
+\r
+                       public static void IsTrue (string msg)\r
+                       {\r
+                               Assert.IsTrue (_eventChecker, msg + "#" + _testcounter);\r
+                               testAdded ();\r
+\r
+                       }\r
+\r
+                       public static void IsFalse (string msg)\r
+                       {\r
+                               Assert.IsFalse (_eventChecker, msg + "#" + _testcounter);\r
+                               testAdded ();\r
+                       }\r
+               }\r
+               #endregion\r
+\r
+               [Test]\r
+               [Category ("NotWorking")]\r
+               public void SqlDataSource_DataSourceViewChanged ()\r
+               {\r
+                       SqlPoker sql = new SqlPoker ();\r
+                       ((IDataSource) sql).DataSourceChanged += new EventHandler (SqlDataSourceTest_DataSourceChanged);\r
+\r
+                       sql.DoRaiseDataSourceChangedEvent ();\r
+                       eventAssert.IsTrue ("SqlDataSourceView"); // Assert include counter the first is zero\r
+                       sql.CacheKeyDependency = "hi";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.CancelSelectOnNullParameter = false;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.ConflictDetection = ConflictOptions.CompareAllValues;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.DeleteCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.OldValuesParameterFormatString = "{1}";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.SqlCacheDependency = "hi";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.SortParameterName = "hi";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.CacheDuration = 1;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.CacheExpirationPolicy = DataSourceCacheExpiry.Sliding;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.EnableCaching = true;\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.DataSourceMode = SqlDataSourceMode.DataReader;\r
+                       eventAssert.IsTrue ("SqlDataSourceView");\r
+                       sql.DeleteCommand = "DELETE foo";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.InsertCommand = "INSERT foo";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.SelectCommand = "SELECT foo";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.UpdateCommand = "UPDATE foo";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+                       sql.FilterExpression = "hi";\r
+                       eventAssert.IsFalse ("SqlDataSourceView");\r
+               }\r
+\r
+               void SqlDataSourceTest_DataSourceChanged (object sender, EventArgs e)\r
+               {\r
+                       eventAssert.eventChecker = true;\r
+               }\r
+\r
                //exceptions \r
                [Test]\r
                [ExpectedException (typeof (NotSupportedException))]\r