2 // Tests for System.Web.UI.WebControls.SqlDataSourceView
5 // Chris Toshok (toshok@novell.com)
9 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using NUnit.Framework;
35 using System.Configuration;
36 using System.Data.Common;
38 using System.Globalization;
41 using System.Web.UI.WebControls;
43 namespace MonoTests.System.Web.UI.WebControls
45 class SqlViewPoker : SqlDataSourceView {
46 public SqlViewPoker (SqlDataSource ds, string name, HttpContext context)
47 : base (ds, name, context)
52 public object SaveToViewState ()
54 return SaveViewState ();
57 public void LoadFromViewState (object savedState)
59 LoadViewState (savedState);
64 public class SqlDataSourceViewTest
67 public void Defaults ()
69 SqlDataSource ds = new SqlDataSource ();
70 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
72 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
73 Assert.IsFalse (sql.CanDelete,"A2");
74 Assert.IsFalse (sql.CanInsert,"A3");
75 Assert.IsFalse (sql.CanPage,"A4");
76 Assert.IsFalse (sql.CanRetrieveTotalRowCount,"A5");
77 Assert.IsTrue (sql.CanSort,"A6");
78 Assert.IsFalse (sql.CanUpdate,"A7");
79 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "A8");
80 Assert.AreEqual ("", sql.DeleteCommand, "A9");
81 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A10");
82 Assert.IsNotNull (sql.DeleteParameters, "A11");
83 Assert.AreEqual (0, sql.DeleteParameters.Count, "A12");
84 Assert.AreEqual ("", sql.FilterExpression, "A13");
85 Assert.IsNotNull (sql.FilterParameters, "A14");
86 Assert.AreEqual (0, sql.FilterParameters.Count, "A15");
87 Assert.AreEqual ("", sql.InsertCommand, "A16");
88 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A17");
89 Assert.IsNotNull (sql.InsertParameters, "A18");
90 Assert.AreEqual (0, sql.InsertParameters.Count, "A19");
91 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A20");
92 Assert.AreEqual ("", sql.SelectCommand, "A21");
93 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A22");
94 Assert.IsNotNull (sql.SelectParameters, "A23");
95 Assert.AreEqual (0, sql.SelectParameters.Count, "A24");
96 Assert.AreEqual ("", sql.SortParameterName, "A25");
97 Assert.AreEqual ("", sql.UpdateCommand, "A26");
98 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A27");
99 Assert.IsNotNull (sql.UpdateParameters, "A28");
100 Assert.AreEqual (0, sql.UpdateParameters.Count, "A29");
104 public void ViewStateSupport ()
106 SqlDataSource ds = new SqlDataSource ();
107 SqlViewPoker view = new SqlViewPoker (ds, "DefaultView", null);
109 ds.ID = "SqlDataSource1";
110 ds.SelectCommand = "Select";
112 Parameter p1 = new Parameter ("test", TypeCode.String);
114 Assert.IsTrue (((IStateManager) view).IsTrackingViewState, "IsTrackingViewState");
115 Assert.IsTrue (((IStateManager) view.FilterParameters).IsTrackingViewState, "FilterParameters.IsTrackingViewState");
116 Assert.IsTrue (((IStateManager) view.SelectParameters).IsTrackingViewState, "SelecteParameters.IsTrackingViewState");
117 Assert.IsFalse (((IStateManager) view.DeleteParameters).IsTrackingViewState, "DeleteParameters.IsTrackingViewState");
118 Assert.IsFalse (((IStateManager) view.InsertParameters).IsTrackingViewState, "InsertParameters.IsTrackingViewState");
119 Assert.IsFalse (((IStateManager) view.UpdateParameters).IsTrackingViewState, "UpdateParameters.IsTrackingViewState");
121 object state = ((IStateManager) view).SaveViewState ();
122 Assert.IsNull (state, "view ViewState not null");
124 view.DeleteParameters.Add (p1);
125 view.InsertParameters.Add (p1);
126 //view.UpdateParameters.Add (p1);
128 state = ((IStateManager) view).SaveViewState ();
129 Assert.IsNull (state, "view ViewState not null");
131 view.FilterParameters.Add (p1);
132 //view.SelectParameters.Add (p1);
134 state = ((IStateManager) view).SaveViewState ();
135 Assert.IsNotNull (state, "view ViewState not null");
137 state = ((IStateManager) view.FilterParameters).SaveViewState ();
138 Assert.IsNotNull (state, "FilterParamenters ViewState not null");
139 state = ((IStateManager) view.SelectParameters).SaveViewState ();
140 Assert.IsNull (state, "SelectParameters ViewState not null");
142 state = ((IStateManager) view.DeleteParameters).SaveViewState ();
143 Assert.IsNotNull (state, "DeleteParameters ViewState not null");
144 state = ((IStateManager) view.InsertParameters).SaveViewState ();
145 Assert.IsNotNull (state, "InsertParameters ViewState not null");
146 state = ((IStateManager) view.UpdateParameters).SaveViewState ();
147 Assert.IsNull (state, "UpdateParameters ViewState not null");
151 public void ViewState ()
153 SqlDataSource ds = new SqlDataSource ();
154 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
156 /* XXX test parameters */
158 sql.CancelSelectOnNullParameter = false;
159 sql.ConflictDetection = ConflictOptions.CompareAllValues;
160 sql.DeleteCommandType = SqlDataSourceCommandType.Text;
161 sql.DeleteCommand = "delete command";
162 sql.FilterExpression = "filter expression";
163 sql.InsertCommand = "insert command";
164 sql.InsertCommandType = SqlDataSourceCommandType.Text;
165 sql.OldValuesParameterFormatString = "{1}";
166 sql.SelectCommand = "select command";
167 sql.SelectCommandType = SqlDataSourceCommandType.Text;
168 sql.SortParameterName = "sort parameter";
169 sql.UpdateCommand = "update command";
170 sql.UpdateCommandType = SqlDataSourceCommandType.Text;
172 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A1");
173 Assert.AreEqual (ConflictOptions.CompareAllValues, sql.ConflictDetection, "A2");
174 Assert.AreEqual ("delete command", sql.DeleteCommand, "A3");
175 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.DeleteCommandType, "A4");
176 Assert.AreEqual ("filter expression", sql.FilterExpression, "A5");
177 Assert.AreEqual ("insert command", sql.InsertCommand, "A6");
178 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.InsertCommandType, "A7");
179 Assert.AreEqual ("{1}", sql.OldValuesParameterFormatString, "A8");
180 Assert.AreEqual ("select command", sql.SelectCommand, "A9");
181 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.SelectCommandType, "A10");
182 Assert.AreEqual ("sort parameter", sql.SortParameterName, "A11");
183 Assert.AreEqual ("update command", sql.UpdateCommand, "A12");
184 Assert.AreEqual (SqlDataSourceCommandType.Text, sql.UpdateCommandType, "A13");
186 object state = sql.SaveToViewState();
187 Assert.IsNull (state, "ViewState is null");
189 sql = new SqlViewPoker (ds, "DefaultView", null);
190 sql.LoadFromViewState (state);
192 Assert.IsTrue(sql.CancelSelectOnNullParameter, "B1");
193 Assert.IsFalse(sql.CanDelete, "B2");
194 Assert.IsFalse(sql.CanInsert, "B3");
195 Assert.IsFalse(sql.CanPage, "B4");
196 Assert.IsFalse(sql.CanRetrieveTotalRowCount, "B5");
197 Assert.IsTrue(sql.CanSort, "B6");
198 Assert.IsFalse(sql.CanUpdate, "B7");
199 Assert.AreEqual (ConflictOptions.OverwriteChanges, sql.ConflictDetection, "B8");
200 Assert.AreEqual ("", sql.DeleteCommand, "B9");
201 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.DeleteCommandType, "B10");
202 Assert.IsNotNull(sql.DeleteParameters, "B11");
203 Assert.AreEqual(0, sql.DeleteParameters.Count, "B12");
204 Assert.AreEqual ("", sql.FilterExpression, "B13");
205 Assert.IsNotNull(sql.FilterParameters, "B14");
206 Assert.AreEqual(0, sql.FilterParameters.Count, "B15");
207 Assert.AreEqual ("", sql.InsertCommand, "B16");
208 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.InsertCommandType, "B17");
209 Assert.IsNotNull(sql.InsertParameters, "B18");
210 Assert.AreEqual(0, sql.InsertParameters.Count, "B19");
211 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "B20");
212 Assert.AreEqual ("", sql.SelectCommand, "B21");
213 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.SelectCommandType, "B22");
214 Assert.IsNotNull(sql.SelectParameters, "B23");
215 Assert.AreEqual(0, sql.SelectParameters.Count, "B24");
216 Assert.AreEqual ("", sql.SortParameterName, "B25");
217 Assert.AreEqual ("", sql.UpdateCommand, "B26");
218 Assert.AreEqual(SqlDataSourceCommandType.Text, sql.UpdateCommandType, "B27");
219 Assert.IsNotNull(sql.UpdateParameters, "B28");
220 Assert.AreEqual(0, sql.UpdateParameters.Count, "B29");
224 public void CanDelete ()
226 SqlDataSource ds = new SqlDataSource ();
227 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
229 sql.DeleteCommand = "DELETE from foo";
230 Assert.IsTrue (sql.CanDelete, "A1");
232 sql.DeleteCommand = "";
233 Assert.IsFalse (sql.CanDelete, "A2");
235 sql.DeleteCommand = null;
236 Assert.IsFalse (sql.CanDelete, "A3");
240 public void CanInsert ()
242 SqlDataSource ds = new SqlDataSource ();
243 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
245 sql.InsertCommand = "INSERT into foo";
246 Assert.IsTrue (sql.CanInsert, "A1");
248 sql.InsertCommand = "";
249 Assert.IsFalse (sql.CanInsert, "A2");
251 sql.InsertCommand = null;
252 Assert.IsFalse (sql.CanInsert, "A3");
256 public void CanUpdate ()
258 SqlDataSource ds = new SqlDataSource ();
259 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
261 sql.UpdateCommand = "UPDATE foo";
262 Assert.IsTrue (sql.CanUpdate, "A1");
264 sql.UpdateCommand = "";
265 Assert.IsFalse (sql.CanUpdate, "A2");
267 sql.UpdateCommand = null;
268 Assert.IsFalse (sql.CanUpdate, "A3");
272 public void CanSort ()
274 SqlDataSource ds = new SqlDataSource ();
275 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
277 sql.SortParameterName = "foo";
278 Assert.IsTrue (sql.CanSort, "A1");
280 sql.SortParameterName = null;
281 Assert.IsTrue (sql.CanSort, "A2");
283 sql.SortParameterName = "";
284 Assert.IsTrue (sql.CanSort, "A3");
286 sql.SortParameterName = "foo";
288 ds.DataSourceMode = SqlDataSourceMode.DataReader;
289 Assert.IsTrue (sql.CanSort, "A4");
291 ds.DataSourceMode = SqlDataSourceMode.DataSet;
292 Assert.IsTrue (sql.CanSort, "A5");
294 sql.SortParameterName = "";
296 ds.DataSourceMode = SqlDataSourceMode.DataReader;
297 Assert.IsFalse (sql.CanSort, "A6");
299 ds.DataSourceMode = SqlDataSourceMode.DataSet;
300 Assert.IsTrue (sql.CanSort, "A7");
304 public void OldValuesParameterFormatString ()
306 SqlDataSource ds = new SqlDataSource ();
308 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A1");
310 ds.OldValuesParameterFormatString = "hi {0}";
312 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
314 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A2");
316 ds.OldValuesParameterFormatString = "hi {0}";
318 Assert.AreEqual ("{0}", sql.OldValuesParameterFormatString, "A3");
320 ds.OldValuesParameterFormatString = "{0}";
321 sql.OldValuesParameterFormatString = "hi {0}";
323 Assert.AreEqual ("{0}", ds.OldValuesParameterFormatString, "A4");
327 public void CancelSelectOnNullParameter ()
329 SqlDataSource ds = new SqlDataSource ();
331 ds.CancelSelectOnNullParameter = false;
333 SqlViewPoker sql = new SqlViewPoker (ds, "DefaultView", null);
335 Assert.IsTrue (sql.CancelSelectOnNullParameter, "A1");
337 ds.CancelSelectOnNullParameter = true;
338 sql.CancelSelectOnNullParameter = false;
340 Assert.IsTrue (ds.CancelSelectOnNullParameter, "A2");
342 sql.CancelSelectOnNullParameter = false;
343 ds.CancelSelectOnNullParameter = true;
344 Assert.IsFalse (sql.CancelSelectOnNullParameter, "A3");