blob: f12f09105252d6eea4a2b6e6c2db0427c26fd46d [file] [log] [blame]
/*
* Copyright 2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections;
using Nexus.Core;
using Nexus.Core.Helpers;
using NUnit.Framework;
namespace PhoneBook.Core.Commands
{
/// <summary>
/// Exercise SelectAll Command per [OVR-5].
/// </summary>
///
[TestFixture]
public class SelectAllTest : BaseTest
{
/// <summary>
/// Assert result of SelectAll, after another method runs the command.
/// </summary>
/// <param name="context">Context with result to assert.</param>
///
private void SelectAll_Result(IRequestContext context)
{
IList list = AssertListOutcome(context);
IDictionary row = list[0] as IDictionary;
Assert.IsNotNull(row, "Expected list entry to be an IDictionary.");
string[] KEYS = {App.FIRST_NAME, App.LAST_NAME, App.USER_NAME, App.EXTENSION, App.HIRED, App.HOURS, App.EDITOR};
bool valid = true;
foreach (string key in KEYS)
{
valid = valid && row.Contains(key);
}
Assert.IsTrue(valid, "Expected row to contain all keys.");
}
/// <summary>
/// Filter all and succeed, using catalog.
/// </summary>
///
[Test]
public void SelectAll_Pass()
{
IRequestContext context = catalog.ExecuteRequest(App.ENTRY_LIST);
SelectAll_Result(context);
}
/// <summary>
/// Exercise Entry List and validate hired and extension string formatting.
/// </summary>
///
[Test]
public void FilterHelper_Format()
{
IViewHelper helper = catalog.GetHelperFor(App.ENTRY_LIST);
helper.Execute();
AssertNominal(helper);
AppEntryList list = helper.Outcome as AppEntryList;
Assert.IsNotNull(list, "Expected list to be AppEntryList");
AppEntry row = list[0] as AppEntry;
Assert.IsNotNull(row, "Expected rows to be AppEntries");
string hired = row.hired;
Assert.IsNotNull(hired, "Expected each row to have a hired date.");
Assert.IsTrue(hired.Length < "##/##/#### ".Length, hired + ": Expected short date format.");
string extension = row.extension;
Assert.IsNotNull(extension, "Expected each row to have an extension.");
Assert.IsTrue(extension.Length > "1234567890".Length, extension + ": Expected formatted extension.");
}
/// <summary>
/// Exercise custom paging
/// (retrieve only visible section of the result se).
/// </summary>
///
[Test]
public void SelectAll_Limit()
{
IViewHelper helper = catalog.GetHelperFor(App.ENTRY_LIST);
helper.Criteria[App.ITEM_LIMIT] = 2;
helper.Criteria[App.ITEM_OFFSET] = 0;
helper.Execute();
if (!helper.IsNominal) Assert.Fail(helper.AlertsText);
IList list = helper.Outcome;
Assert.IsTrue(list.Count == 2, "Expected result set to be limited to two entries.");
AppEntry entry = list[0] as AppEntry;
helper.Criteria[App.ITEM_LIMIT] = 2;
helper.Criteria[App.ITEM_OFFSET] = 3;
helper.Execute();
IList list2 = helper.Outcome;
AppEntry entry2 = list2[0] as AppEntry;
Assert.IsFalse(entry.entry_key.Equals(entry2.entry_key), "Expected result sets to be different");
int count = Convert.ToInt32(helper.Criteria[App.ITEM_COUNT]);
Assert.IsTrue(count > 2, "Expected the overall count to be higher");
}
}
}