-//
-// Tests for System.Web.UI.WebControls.SqlDataSource
-//
-// Author:
-// Chris Toshok (toshok@novell.com)
-//
-
-//
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using NUnit.Framework;
-using System;
-using System.Configuration;
-using System.Data.Common;
-using System.IO;
-using System.Globalization;
-using System.Web;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-
-namespace MonoTests.System.Web.UI.WebControls
-{
- class SqlPoker : SqlDataSource {
- public SqlPoker ()
- {
- TrackViewState ();
- }
-
- public object SaveToViewState ()
- {
- return SaveViewState ();
- }
-
- public void LoadFromViewState (object savedState)
- {
- LoadViewState (savedState);
- }
- }
-
- [TestFixture]
- public class SqlDataSourceTest {
- [Test]
- public void Defaults ()
- {
- SqlPoker sql = new SqlPoker ();
-
- Assert.AreEqual ("", sql.CacheKeyDependency, "A1");
- Assert.IsTrue (sql.CancelSelectOnNullParameter, "A2");
- Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A3");
- Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.DeleteCommandType, "A4");
- Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.InsertCommandType, "A5");
- Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.SelectCommandType, "A6");
- Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.UpdateCommandType, "A7");
- Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A8");
- Assert.AreEqual ("", sql.SqlCacheDependency, "A9");
- Assert.AreEqual ("", sql.SortParameterName, "A10");
- Assert.AreEqual (0, sql.CacheDuration, "A11");
- Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "A12");
- Assert.IsFalse (sql.EnableCaching, "A13");
- Assert.AreEqual ("", sql.ProviderName, "A14");
- Assert.AreEqual ("", sql.ConnectionString, "A15");
- Assert.AreEqual (SqlDataSourceMode.DataSet, sql.DataSourceMode, "A16");
- Assert.AreEqual ("", sql.DeleteCommand, "A17");
- Assert.IsNotNull (sql.DeleteParameters, "A18");
- Assert.AreEqual (0, sql.DeleteParameters.Count, "A18.1");
- Assert.IsNotNull (sql.FilterParameters, "A19");
- Assert.AreEqual (0, sql.FilterParameters.Count, "A19.1");
- Assert.AreEqual ("", sql.InsertCommand, "A20");
- Assert.IsNotNull (sql.InsertParameters, "A21");
- Assert.AreEqual (0, sql.InsertParameters.Count, "A21.1");
- Assert.AreEqual ("", sql.SelectCommand, "A22");
- Assert.IsNotNull (sql.SelectParameters, "A23");
- Assert.AreEqual (0, sql.SelectParameters.Count, "A23.1");
- Assert.AreEqual ("", sql.UpdateCommand, "A24");
- Assert.IsNotNull (sql.UpdateParameters, "A25");
- Assert.AreEqual (0, sql.UpdateParameters.Count, "A25.1");
- Assert.AreEqual ("", sql.FilterExpression, "A26");
- }
-
- [Test]
- public void ViewState ()
- {
- SqlPoker sql = new SqlPoker ();
-
- sql.CacheKeyDependency = "hi";
- sql.CancelSelectOnNullParameter = false;
- sql.ConflictDetection = ConflictOptions.CompareAllValues;
- sql.DeleteCommandType = SqlDataSourceCommandType.Text;
- sql.InsertCommandType = SqlDataSourceCommandType.Text;
- sql.SelectCommandType = SqlDataSourceCommandType.Text;
- sql.UpdateCommandType = SqlDataSourceCommandType.Text;
- sql.OldValuesParameterFormatString = "{1}";
- sql.SqlCacheDependency = "hi";
- sql.SortParameterName = "hi";
- sql.CacheDuration = 1;
- sql.CacheExpirationPolicy = DataSourceCacheExpiry.Sliding;
- sql.EnableCaching = true;
- sql.DataSourceMode = SqlDataSourceMode.DataReader;
- sql.DeleteCommand = "DELETE foo";
- sql.InsertCommand = "INSERT foo";
- sql.SelectCommand = "SELECT foo";
- sql.UpdateCommand = "UPDATE foo";
- sql.FilterExpression = "hi";
-
- Assert.AreEqual ("hi", sql.CacheKeyDependency, "A1");
- Assert.IsFalse (sql.CancelSelectOnNullParameter, "A2");
- Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A3");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A5");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A6");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A7");
- Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");
- Assert.AreEqual ("hi", sql.SqlCacheDependency, "A9");
- Assert.AreEqual ("hi", sql.SortParameterName, "A10");
- Assert.AreEqual (1, sql.CacheDuration, "A11");
- Assert.AreEqual (DataSourceCacheExpiry.Sliding, sql.CacheExpirationPolicy, "A12");
- Assert.IsTrue (sql.EnableCaching, "A13");
- Assert.AreEqual (SqlDataSourceMode.DataReader, sql.DataSourceMode, "A16");
- Assert.AreEqual ("DELETE foo", sql.DeleteCommand, "A17");
- Assert.AreEqual ("INSERT foo", sql.InsertCommand, "A20");
- Assert.AreEqual ("SELECT foo", sql.SelectCommand, "A22");
- Assert.AreEqual ("UPDATE foo", sql.UpdateCommand, "A24");
- Assert.AreEqual ("hi", sql.FilterExpression, "A26");
-
- object state = sql.SaveToViewState();
-
- sql = new SqlPoker ();
- sql.LoadFromViewState (state);
-
- Assert.AreEqual ("hi", sql.CacheKeyDependency, "B1");
- Assert.IsFalse (sql.CancelSelectOnNullParameter, "B2");
- Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "B3");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B4");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "B5");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "B6");
- Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B7");
- Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "B8");
- Assert.AreEqual ("hi", sql.SqlCacheDependency, "B9");
- Assert.AreEqual ("hi", sql.SortParameterName, "B10");
- Assert.AreEqual (1, sql.CacheDuration, "B11");
- Assert.AreEqual (DataSourceCacheExpiry.Sliding, sql.CacheExpirationPolicy, "B12");
- Assert.IsTrue (sql.EnableCaching, "B13");
- Assert.AreEqual (SqlDataSourceMode.DataReader, sql.DataSourceMode, "B16");
- Assert.AreEqual ("DELETE foo", sql.DeleteCommand, "B17");
- Assert.AreEqual ("INSERT foo", sql.InsertCommand, "B20");
- Assert.AreEqual ("SELECT foo", sql.SelectCommand, "B22");
- Assert.AreEqual ("UPDATE foo", sql.UpdateCommand, "B24");
- Assert.AreEqual ("hi", sql.FilterExpression, "B26");
- }
- }
-
-}
+//\r
+// Tests for System.Web.UI.WebControls.SqlDataSource\r
+//\r
+// Author:\r
+// Chris Toshok (toshok@novell.com)\r
+//\r
+\r
+//\r
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)\r
+//\r
+// Permission is hereby granted, free of charge, to any person obtaining\r
+// a copy of this software and associated documentation files (the\r
+// "Software"), to deal in the Software without restriction, including\r
+// without limitation the rights to use, copy, modify, merge, publish,\r
+// distribute, sublicense, and/or sell copies of the Software, and to\r
+// permit persons to whom the Software is furnished to do so, subject to\r
+// the following conditions:\r
+// \r
+// The above copyright notice and this permission notice shall be\r
+// included in all copies or substantial portions of the Software.\r
+// \r
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+//\r
+\r
+#if NET_2_0\r
+\r
+using NUnit.Framework;\r
+using System;\r
+using System.Configuration;\r
+using System.Data.Common;\r
+using System.Data.SqlClient;\r
+using System.IO;\r
+using System.Globalization;\r
+using System.Web;\r
+using System.Web.UI;\r
+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
+ class SqlPoker : SqlDataSource\r
+ {\r
+ public SqlPoker ()\r
+ {\r
+ TrackViewState ();\r
+ }\r
+\r
+ public object SaveToViewState ()\r
+ {\r
+ return SaveViewState ();\r
+ }\r
+\r
+ public void LoadFromViewState (object savedState)\r
+ {\r
+ LoadViewState (savedState);\r
+ }\r
+\r
+ public void DoRaiseDataSourceChangedEvent ()\r
+ {\r
+ base.RaiseDataSourceChangedEvent(new EventArgs());\r
+ }\r
+ }\r
+\r
+ class CustomSqlDataSourceView : SqlDataSourceView\r
+ {\r
+ public CustomSqlDataSourceView (SqlDataSource owner,string name,HttpContext context):base(owner,name,context)\r
+ {\r
+ }\r
+ \r
+ public new int ExecuteDelete (global::System.Collections.IDictionary keys, global::System.Collections.IDictionary oldValues)\r
+ {\r
+ return base.ExecuteDelete (keys, oldValues);\r
+ }\r
+\r
+ public new int ExecuteInsert (global::System.Collections.IDictionary values)\r
+ {\r
+ return base.ExecuteInsert (values);\r
+ }\r
+\r
+ public new global::System.Collections.IEnumerable ExecuteSelect (DataSourceSelectArguments arguments)\r
+ {\r
+ return base.ExecuteSelect (arguments);\r
+ }\r
+\r
+ public new int ExecuteUpdate (global::System.Collections.IDictionary keys, global::System.Collections.IDictionary values, global::System.Collections.IDictionary oldValues)\r
+ {\r
+ return base.ExecuteUpdate (keys, values, oldValues);\r
+ }\r
+\r
+ \r
+ }\r
+\r
+ [TestFixture]\r
+ public class SqlDataSourceTest\r
+ {\r
+ [SetUp]\r
+ public void SetUp ()\r
+ {\r
+ SqlDataSourceTest.CustomEventParameterCollection = null;\r
+ SqlDataSourceTest.PassedParameters = "";\r
+ }\r
+\r
+ [Test]\r
+ public void Defaults ()\r
+ {\r
+ SqlPoker sql = new SqlPoker ();\r
+ Assert.AreEqual ("", sql.CacheKeyDependency, "A1");\r
+ Assert.IsTrue (sql.CancelSelectOnNullParameter, "A2");\r
+ Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A3");\r
+ Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");\r
+ Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A5");\r
+ Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A6");\r
+ Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A7");\r
+ Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A8");\r
+ Assert.AreEqual ("", sql.SqlCacheDependency, "A9");\r
+ Assert.AreEqual ("", sql.SortParameterName, "A10");\r
+ Assert.AreEqual (0, sql.CacheDuration, "A11");\r
+ Assert.AreEqual (DataSourceCacheExpiry.Absolute, sql.CacheExpirationPolicy, "A12");\r
+ Assert.IsFalse (sql.EnableCaching, "A13");\r
+ Assert.AreEqual ("", sql.ProviderName, "A14");\r
+ Assert.AreEqual ("", sql.ConnectionString, "A15");\r
+ Assert.AreEqual (SqlDataSourceMode.DataSet, sql.DataSourceMode, "A16");\r
+ Assert.AreEqual ("", sql.DeleteCommand, "A17");\r
+ Assert.IsNotNull (sql.DeleteParameters, "A18");\r
+ Assert.AreEqual (0, sql.DeleteParameters.Count, "A18.1");\r
+ Assert.IsNotNull (sql.FilterParameters, "A19");\r
+ Assert.AreEqual (0, sql.FilterParameters.Count, "A19.1");\r
+ Assert.AreEqual ("", sql.InsertCommand, "A20");\r
+ Assert.IsNotNull (sql.InsertParameters, "A21");\r
+ Assert.AreEqual (0, sql.InsertParameters.Count, "A21.1");\r
+ Assert.AreEqual ("", sql.SelectCommand, "A22");\r
+ Assert.IsNotNull (sql.SelectParameters, "A23");\r
+ Assert.AreEqual (0, sql.SelectParameters.Count, "A23.1");\r
+ Assert.AreEqual ("", sql.UpdateCommand, "A24");\r
+ Assert.IsNotNull (sql.UpdateParameters, "A25");\r
+ Assert.AreEqual (0, sql.UpdateParameters.Count, "A25.1");\r
+ Assert.AreEqual ("", sql.FilterExpression, "A26");\r
+ }\r
+\r
+ [Test]\r
+ public void ViewState ()\r
+ {\r
+ SqlPoker sql = new SqlPoker ();\r
+\r
+ sql.CacheKeyDependency = "hi";\r
+ sql.CancelSelectOnNullParameter = false;\r
+ sql.ConflictDetection = ConflictOptions.CompareAllValues;\r
+ sql.DeleteCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+ sql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+ sql.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+ sql.UpdateCommandType = SqlDataSourceCommandType.StoredProcedure;\r
+ sql.OldValuesParameterFormatString = "{1}";\r
+ sql.SqlCacheDependency = "hi";\r
+ sql.SortParameterName = "hi";\r
+ sql.CacheDuration = 1;\r
+ sql.CacheExpirationPolicy = DataSourceCacheExpiry.Sliding;\r
+ sql.EnableCaching = true;\r
+ sql.DataSourceMode = SqlDataSourceMode.DataReader;\r
+ sql.DeleteCommand = "DELETE foo";\r
+ sql.InsertCommand = "INSERT foo";\r
+ sql.SelectCommand = "SELECT foo";\r
+ sql.UpdateCommand = "UPDATE foo";\r
+ sql.FilterExpression = "hi";\r
+\r
+ Assert.AreEqual ("hi", sql.CacheKeyDependency, "A1");\r
+ Assert.IsFalse (sql.CancelSelectOnNullParameter, "A2");\r
+ Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A3");\r
+ Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.DeleteCommandType, "A4");\r
+ Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.InsertCommandType, "A5");\r
+ Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.SelectCommandType, "A6");\r
+ Assert.AreEqual (SqlDataSourceCommandType.StoredProcedure, sql.UpdateCommandType, "A7");\r
+ Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");\r
+ Assert.AreEqual ("hi", sql.SqlCacheDependency, "A9");\r
+ Assert.AreEqual ("hi", sql.SortParameterName, "A10");\r
+ Assert.AreEqual (1, sql.CacheDuration, "A11");\r
+ Assert.AreEqual (DataSourceCacheExpiry.Sliding, sql.CacheExpirationPolicy, "A12");\r
+ Assert.IsTrue (sql.EnableCaching, "A13");\r
+ Assert.AreEqual (SqlDataSourceMode.DataReader, sql.DataSourceMode, "A16");\r
+ Assert.AreEqual ("DELETE foo", sql.DeleteCommand, "A17");\r
+ Assert.AreEqual ("INSERT foo", sql.InsertCommand, "A20");\r
+ Assert.AreEqual ("SELECT foo", sql.SelectCommand, "A22");\r
+ Assert.AreEqual ("UPDATE foo", sql.UpdateCommand, "A24");\r
+ 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");\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 ("", sql.InsertCommand, "B20");\r
+ Assert.IsNotNull (sql.InsertParameters, "B21");\r
+ Assert.AreEqual (0, sql.InsertParameters.Count, "B21.1");\r
+ Assert.AreEqual ("", sql.SelectCommand, "B22");\r
+ Assert.IsNotNull (sql.SelectParameters, "B23");\r
+ Assert.AreEqual (0, sql.SelectParameters.Count, "B23.1");\r
+ Assert.AreEqual ("", sql.UpdateCommand, "B24");\r
+ Assert.IsNotNull (sql.UpdateParameters, "B25");\r
+ Assert.AreEqual (0, sql.UpdateParameters.Count, "B25.1");\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
+ {\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
+ view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);\r
+ view.Select (new DataSourceSelectArguments ());\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");\r
+ Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@ProductID", CustomEventParameterCollection[0].ParameterName, "Parameter name");\r
+ Assert.AreEqual (10, CustomEventParameterCollection[0].Value, "Parameter value");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteSelect2 () \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
+ sql.DataSourceMode = SqlDataSourceMode.DataReader;\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
+ view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);\r
+ view.Select (new DataSourceSelectArguments ());\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Select event not fired");\r
+ Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@ProductID", CustomEventParameterCollection [0].ParameterName, "Parameter name");\r
+ Assert.AreEqual (10, CustomEventParameterCollection [0].Value, "Parameter value");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteUpdate ()\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.UpdateCommandType = SqlDataSourceCommandType.Text;\r
+ view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);\r
+ view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));\r
+ view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));\r
+ view.Update (null, null, null);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");\r
+ Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteInsert ()\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.InsertCommandType = SqlDataSourceCommandType.Text;\r
+ view.InsertCommand = "INSERT INTO Table1 (UserId, UserName) VALUES ({0},{1})";\r
+ view.InsertParameters.Add (new Parameter ("UserId", TypeCode.Int32, "15"));\r
+ view.InsertParameters.Add (new Parameter ("UserName", TypeCode.String, "newuser"));\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);\r
+ view.Insert (null);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Insert event not fired");\r
+ Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@UserId", CustomEventParameterCollection[0].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#2");\r
+ Assert.AreEqual ("@UserName", CustomEventParameterCollection[1].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual ("newuser", CustomEventParameterCollection[1].Value, "Parameter value#1");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteInsertWithCollection ()\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.InsertCommandType = SqlDataSourceCommandType.Text;\r
+ view.InsertCommand = "INSERT INTO products (UserId, UserName) VALUES ({0},{1})";\r
+ view.InsertParameters.Add (new Parameter ("UserId", TypeCode.Int32, "15"));\r
+ view.InsertParameters.Add (new Parameter ("UserName", TypeCode.String, "newuser"));\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);\r
+ Hashtable value = new Hashtable ();\r
+ value.Add ("Description", "TestDescription");\r
+ view.Insert (value);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Insert event not fired");\r
+ Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@UserId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ Assert.AreEqual ("@UserName", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual ("newuser", CustomEventParameterCollection[1].Value, "Parameter value#2");\r
+ Assert.AreEqual ("@Description", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");\r
+ Assert.AreEqual ("TestDescription", CustomEventParameterCollection[2].Value, "Parameter value#3");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteDelete ()\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.DeleteCommandType = SqlDataSourceCommandType.Text;\r
+ view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";\r
+ view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);\r
+ view.Delete (null, null);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");\r
+ Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteDeleteWithOldValues ()\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.DeleteCommandType = SqlDataSourceCommandType.Text;\r
+ view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";\r
+ view.DeleteParameters.Add (new Parameter ("ProductID", TypeCode.Int32, "15"));\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+ view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);\r
+ Hashtable oldvalue = new Hashtable ();\r
+ oldvalue.Add ("ProductID", 10);\r
+ view.Delete (null,oldvalue );\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");\r
+ Assert.AreEqual (1, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@origin_ProductID", CustomEventParameterCollection[0].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual (10, CustomEventParameterCollection[0].Value, "Parameter value#2");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteDeleteWithMergedOldValues ()\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.DeleteCommandType = SqlDataSourceCommandType.Text;\r
+ view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";\r
+ view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+ view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);\r
+ Hashtable oldvalue = new Hashtable ();\r
+ oldvalue.Add ("Desc", "Description");\r
+ view.Delete (null, oldvalue);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");\r
+ Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ Assert.AreEqual ("@origin_Desc", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual ("Description", CustomEventParameterCollection[1].Value, "Parameter value#2");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteDeleteWithMergedValues ()\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.DeleteCommandType = SqlDataSourceCommandType.Text;\r
+ view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";\r
+ view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);\r
+ Hashtable value = new Hashtable ();\r
+ value.Add ("Desc", "Description");\r
+ view.Delete (value, null);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Delete event not fired");\r
+ Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@ProductId", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual (15, CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ Assert.AreEqual ("@origin_Desc", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual ("Description", CustomEventParameterCollection[1].Value, "Parameter value#2");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteDelete_KeysAndOldValues_OverwriteChanges () \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
+ IDictionary keys;\r
+ IDictionary values;\r
+ IDictionary oldValues;\r
+ InitializeView (view, out keys, out values, out oldValues);\r
+\r
+ view.ConflictDetection = ConflictOptions.OverwriteChanges;\r
+\r
+ view.Delete (keys, oldValues);\r
+\r
+ Assert.IsNotNull (CustomEventParameterCollection, "KeysAndOldValues_OverwriteChanges");\r
+ Assert.AreEqual ("String:@origin_ProductID=k_10", PassedParameters, "KeysAndOldValues_OverwriteChanges Values");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteDelete_KeysAndOldValues_CompareAllValues () \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
+ IDictionary keys;\r
+ IDictionary values;\r
+ IDictionary oldValues;\r
+ InitializeView (view, out keys, out values, out oldValues);\r
+\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+\r
+ view.Delete (keys, oldValues);\r
+\r
+ Assert.IsNotNull (CustomEventParameterCollection, "KeysAndOldValues_CompareAllValues");\r
+ Assert.AreEqual ("String:@origin_ProductID=ov_10, String:@origin_Description=ov_Beautifull, String:@origin_Name=ov_ColorTV", PassedParameters, "KeysAndOldValues_CompareAllValues Values");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteDelete_KeysAndOldValues_CompareAllValues2 () \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
+ IDictionary keys;\r
+ IDictionary values;\r
+ IDictionary oldValues;\r
+ InitializeView (view, out keys, out values, out oldValues);\r
+ view.DeleteParameters.Add ("origin_ProductID", "po_10");\r
+\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+\r
+ view.Delete (keys, oldValues);\r
+\r
+ Assert.IsNotNull (CustomEventParameterCollection, "ExecuteDelete_KeysAndOldValues_CompareAllValues2");\r
+ string [] expectedParams = new string []\r
+ { \r
+ "String:@origin_ProductID=ov_10", \r
+ "String:@origin_Description=ov_Beautifull",\r
+ "String:@origin_Name=ov_ColorTV" \r
+ };\r
+ string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);\r
+ Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");\r
+ ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");\r
+ }\r
+\r
+ private static void ValidatePassedParams (string [] expectedParams, string [] actualValues, string errorMessageFormat) \r
+ {\r
+ foreach (string eps in expectedParams) {\r
+ bool found = false;\r
+ foreach (string aps in actualValues) {\r
+ if (eps == aps) {\r
+ found = true;\r
+ break;\r
+ }\r
+ }\r
+ Assert.IsTrue (found, String.Format (errorMessageFormat, eps));\r
+ }\r
+ }\r
+\r
+ private void InitializeView (CustomSqlDataSourceView view, out IDictionary keys, out IDictionary values, out IDictionary oldValues) \r
+ {\r
+ view.SelectCommandType = SqlDataSourceCommandType.Text;\r
+ view.SelectCommand = "SELECT * FROM products WHERE ProductID = @ProductID;";\r
+ view.SelectParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_10"));\r
+ view.Selecting += new SqlDataSourceSelectingEventHandler (view_Selecting);\r
+\r
+ view.DeleteCommandType = SqlDataSourceCommandType.Text;\r
+ view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";\r
+ view.DeleteParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_10"));\r
+ view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);\r
+\r
+ view.InsertCommandType = SqlDataSourceCommandType.Text;\r
+ view.InsertCommand = "INSERT INTO products (ProductID, Name, Description) VALUES (@ProductID, @Name, @Description)";\r
+ view.InsertParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_15"));\r
+ view.InsertParameters.Add (new Parameter ("Name", TypeCode.String, "p_NewProduct"));\r
+ view.InsertParameters.Add (new Parameter ("Description", TypeCode.String, "p_Description"));\r
+ view.Inserting += new SqlDataSourceCommandEventHandler (view_Inserting);\r
+\r
+ view.UpdateCommandType = SqlDataSourceCommandType.Text;\r
+ view.UpdateCommand = "UPDATE products SET Name = @Name, Description = @Description WHERE ProductID = @ProductID";\r
+ view.UpdateParameters.Add (new Parameter ("ProductID", TypeCode.String, "p_15"));\r
+ view.UpdateParameters.Add (new Parameter ("Name", TypeCode.String, "p_UpdatedProduct"));\r
+ view.UpdateParameters.Add (new Parameter ("Description", TypeCode.String, "p_UpdatedDescription"));\r
+ view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);\r
+\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+\r
+ keys = new Hashtable ();\r
+ values = new Hashtable ();\r
+ oldValues = new Hashtable ();\r
+\r
+ keys.Add ("ProductID", "k_10");\r
+\r
+ values.Add ("ProductID", "n_10");\r
+ values.Add ("Name", "n_ColorTV");\r
+ values.Add ("Description", "n_Beautifull");\r
+\r
+ oldValues.Add ("ProductID", "ov_10");\r
+ oldValues.Add ("Name", "ov_ColorTV");\r
+ oldValues.Add ("Description", "ov_Beautifull"); \r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteUpdateWithOldValues ()\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.UpdateCommandType = SqlDataSourceCommandType.Text;\r
+ view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+ view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);\r
+ view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));\r
+ view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));\r
+ Hashtable oldvalue = new Hashtable ();\r
+ oldvalue.Add ("UserId", 2);\r
+ view.Update (null, null, oldvalue);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");\r
+ Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");\r
+ Assert.AreEqual ("@origin_UserId", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");\r
+ Assert.AreEqual (2, CustomEventParameterCollection[2].Value, "Parameter value#3");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteUpdateWithOverwriteParameters ()\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.UpdateCommandType = SqlDataSourceCommandType.Text;\r
+ view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.ConflictDetection = ConflictOptions.OverwriteChanges;\r
+ view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);\r
+ view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));\r
+ view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));\r
+ Hashtable value = new Hashtable ();\r
+ value.Add ("UserId", 2);\r
+ view.Update (value, null, null);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");\r
+ Assert.AreEqual (2, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ Assert.AreEqual ("@origin_UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual (2, CustomEventParameterCollection[1].Value, "Parameter value#2");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteUpdateWithMargeParameters ()\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.UpdateCommandType = SqlDataSourceCommandType.Text;\r
+ view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.ConflictDetection = ConflictOptions.OverwriteChanges;\r
+ view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);\r
+ view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));\r
+ view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));\r
+ Hashtable value = new Hashtable ();\r
+ value.Add ("UserLName", "TestLName");\r
+ view.Update (null, value, null);\r
+ Assert.IsNotNull (CustomEventParameterCollection, "Update event not fired");\r
+ Assert.AreEqual (3, CustomEventParameterCollection.Count, "Parameter count");\r
+ Assert.AreEqual ("@UserName", CustomEventParameterCollection[0].ParameterName, "Parameter name#1");\r
+ Assert.AreEqual ("TestUser", CustomEventParameterCollection[0].Value, "Parameter value#1");\r
+ Assert.AreEqual ("@UserId", CustomEventParameterCollection[1].ParameterName, "Parameter name#2");\r
+ Assert.AreEqual (1, CustomEventParameterCollection[1].Value, "Parameter value#2");\r
+ Assert.AreEqual ("@UserLName", CustomEventParameterCollection[2].ParameterName, "Parameter name#3");\r
+ Assert.AreEqual ("TestLName", CustomEventParameterCollection[2].Value, "Parameter value#3");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteUpdate_KeysValuesAndOldValues_OverwriteChanges () \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
+ IDictionary keys;\r
+ IDictionary values;\r
+ IDictionary oldValues;\r
+ InitializeView (view, out keys, out values, out oldValues);\r
+\r
+ view.ConflictDetection = ConflictOptions.OverwriteChanges;\r
+\r
+ view.Update (keys, values, oldValues);\r
+\r
+ Assert.IsNotNull (CustomEventParameterCollection, "ExecuteUpdate_KeysValuesAndOldValues_OverwriteChanges");\r
+ string [] expectedParams = new string []\r
+ { \r
+ "String:@ProductID=n_10", \r
+ "String:@Name=n_ColorTV", \r
+ "String:@Description=n_Beautifull",\r
+ "String:@origin_ProductID=k_10" \r
+ };\r
+ string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);\r
+ Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");\r
+ ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");\r
+ }\r
+\r
+ [Test]\r
+ public void ExecuteUpdate_KeysValuesAndOldValues_CompareAllValues () \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
+ IDictionary keys;\r
+ IDictionary values;\r
+ IDictionary oldValues;\r
+ InitializeView (view, out keys, out values, out oldValues);\r
+\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+\r
+ view.Update (keys, values, oldValues);\r
+\r
+ Assert.IsNotNull (CustomEventParameterCollection, "ExecuteUpdate_KeysValuesAndOldValues_CompareAllValues");\r
+ string [] expectedParams = new string []\r
+ { \r
+ "String:@ProductID=n_10", \r
+ "String:@Name=n_ColorTV", \r
+ "String:@Description=n_Beautifull",\r
+ "String:@origin_ProductID=ov_10", \r
+ "String:@origin_Name=ov_ColorTV", \r
+ "String:@origin_Description=ov_Beautifull",\r
+ };\r
+ string [] actualValues = PassedParameters.Split (new string [] { ", " }, StringSplitOptions.RemoveEmptyEntries);\r
+ Assert.AreEqual (expectedParams.Length, actualValues.Length, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 Params count");\r
+ ValidatePassedParams (expectedParams, actualValues, "ExecuteDelete_KeysAndOldValues_CompareAllValues2 expecte '{0}'");\r
+ }\r
+\r
+ void view_Updating (object sender, SqlDataSourceCommandEventArgs e)\r
+ {\r
+ SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;\r
+ SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);\r
+ e.Cancel = true;\r
+ }\r
+\r
+ void view_Selecting (object sender, SqlDataSourceSelectingEventArgs e)\r
+ {\r
+ SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;\r
+ SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);\r
+ e.Cancel = true;\r
+ }\r
+\r
+ void view_Inserting (object sender, SqlDataSourceCommandEventArgs e)\r
+ {\r
+ SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;\r
+ SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);\r
+ e.Cancel = true;\r
+ }\r
+\r
+ void view_Deleting (object sender, SqlDataSourceCommandEventArgs e)\r
+ {\r
+ SqlDataSourceTest.CustomEventParameterCollection = (SqlParameterCollection) e.Command.Parameters;\r
+ SqlDataSourceTest.PassedParameters = FormatParameters (SqlDataSourceTest.CustomEventParameterCollection);\r
+ e.Cancel = true;\r
+ }\r
+\r
+ private string FormatParameters (SqlParameterCollection sqlParameterCollection) \r
+ {\r
+ StringBuilder sb = new StringBuilder ();\r
+ foreach (SqlParameter p in sqlParameterCollection) {\r
+ if (sb.Length > 0) {\r
+ sb.Append (", ");\r
+ }\r
+ sb.AppendFormat ("{0}:{1}={2}", p.DbType, p.ParameterName, p.Value);\r
+ }\r
+ 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
+ public void ExecuteUpdateException ()\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.Update (null, null, null);\r
+ }\r
+\r
+ [Test]\r
+ [ExpectedException (typeof (NotSupportedException))]\r
+ public void ExecuteDeleteException ()\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.Delete (null, null);\r
+ }\r
+\r
+ [Test]\r
+ [ExpectedException (typeof (NotSupportedException))]\r
+ public void ExecuteInsertException ()\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.Insert (null);\r
+ }\r
+\r
+ [Test] //ConflictOptions.CompareAllValues must include old value collection\r
+ [ExpectedException (typeof (InvalidOperationException))]\r
+ public void ExecuteUpdateWithOldValuesException ()\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.UpdateCommandType = SqlDataSourceCommandType.Text;\r
+ view.UpdateCommand = "UPDATE Table1 SET UserName = @UserName WHERE UserId = @UserId";\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+ view.Updating += new SqlDataSourceCommandEventHandler (view_Updating);\r
+ view.UpdateParameters.Add (new Parameter ("UserName", TypeCode.String, "TestUser"));\r
+ view.UpdateParameters.Add (new Parameter ("UserId", TypeCode.Int32, "1"));\r
+ view.Update (null, null, null);\r
+ }\r
+\r
+ [Test] //ConflictOptions.CompareAllValues must include old value collection\r
+ [ExpectedException (typeof (InvalidOperationException))]\r
+ public void ExecuteDeleteWithOldValuesException ()\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.DeleteCommandType = SqlDataSourceCommandType.Text;\r
+ view.DeleteCommand = "DELETE * FROM products WHERE ProductID = @ProductID;";\r
+ view.DeleteParameters.Add (new Parameter ("ProductId", TypeCode.Int32, "15"));\r
+ view.OldValuesParameterFormatString = "origin_{0}";\r
+ view.ConflictDetection = ConflictOptions.CompareAllValues;\r
+ view.Deleting += new SqlDataSourceCommandEventHandler (view_Deleting);\r
+ Hashtable oldvalue = new Hashtable ();\r
+ oldvalue.Add ("ProductID", 10);\r
+ view.Delete (null, null);\r
+ }\r
+ }\r
+}\r
+\r
+#endif\r