public void MSLISTSWS_S03_TC66_IncludeMandatoryColumns()
{
#region Create a new generic list
int templateId = (int)TemplateType.Generic_List;
string listName = TestSuiteHelper.CreateList(templateId);
#endregion
#region Add a new "Required" field in the generic list
string newRequiredField = TestSuiteHelper.GetUniqueFieldName();
TestSuiteHelper.AddFieldsToList(
listName,
new List<string> { newRequiredField },
new List<string> { "Counter" },
true,
new List<string> { null });
#endregion
#region Add a new list item in the generic list with a valid value for the "Required" field
UpdateListItemsUpdates listItemUpdates_1 = new UpdateListItemsUpdates();
listItemUpdates_1.Batch = new UpdateListItemsUpdatesBatch();
listItemUpdates_1.Batch.Method = new UpdateListItemsUpdatesBatchMethod[1];
listItemUpdates_1.Batch.Method[0] = new UpdateListItemsUpdatesBatchMethod();
listItemUpdates_1.Batch.Method[0].ID = (uint)0;
listItemUpdates_1.Batch.Method[0].Cmd = MethodCmdEnum.New;
listItemUpdates_1.Batch.Method[0].Field = new UpdateListItemsUpdatesBatchMethodField[1];
listItemUpdates_1.Batch.Method[0].Field[0] = new UpdateListItemsUpdatesBatchMethodField();
listItemUpdates_1.Batch.Method[0].Field[0].Name = newRequiredField;
listItemUpdates_1.Batch.Method[0].Field[0].Value = "30";
this.listswsAdapter.UpdateListItems(listName, listItemUpdates_1);
#endregion
#region Invoke the operation "GetListItems" to check the "Required" field.
GetListItemsResponseGetListItemsResult getListItemsResult = null;
CamlViewFields viewFields = new CamlViewFields();
viewFields.ViewFields = new CamlViewFieldsViewFields();
viewFields.ViewFields.FieldRef = new CamlViewFieldsViewFieldsFieldRef[1];
viewFields.ViewFields.FieldRef[0] = new CamlViewFieldsViewFieldsFieldRef();
viewFields.ViewFields.FieldRef[0].Name = "ID";
CamlQueryOptions queryOption = new CamlQueryOptions();
queryOption.QueryOptions = new CamlQueryOptionsQueryOptions();
XmlNode[] row = null;
System.Collections.IEnumerator attributeEnumerator = null;
string attribute_NewRequiredField = "ows_" + newRequiredField;
// Invoke "GetListItems" operation with the value of request element "IncludeMandatoryColumns" is "TRUE".
queryOption.QueryOptions.IncludeMandatoryColumns = "TRUE";
getListItemsResult = this.listswsAdapter.GetListItems(listName, null, null, viewFields, null, queryOption, null);
Site.Assert.IsNotNull(getListItemsResult.listitems, "The \"listitems\" is null in the first invoke of \"GetListItems\"!");
Site.Assert.IsNotNull(getListItemsResult.listitems.data, "The \"listitems.data\" is null in the first invoke of \"GetListItems\"!");
Site.Assert.IsNotNull(getListItemsResult.listitems.data.Any, "The \"listitems.data.Any\" is null in the first invoke of \"GetListItems\"!");
row = getListItemsResult.listitems.data.Any;
Site.Assert.IsNotNull(row[0], "The \"row[0]\" is null in the first invoke of \"GetListItems\"!");
Site.Assert.IsNotNull(row[0].Attributes, "The \"row[0].Attributes\" is null in the first invoke of \"GetListItems\"!");
attributeEnumerator = row[0].Attributes.GetEnumerator();
// Check if the "Required" field appears as one attribute of "z:row" element in the response of "GetListItems".
bool findRequiredField_IncludeMandatoryColumns = false;
while (attributeEnumerator.MoveNext())
{
XmlAttribute curAttribute = (XmlAttribute)attributeEnumerator.Current;
if (string.Compare(curAttribute.Name, attribute_NewRequiredField, StringComparison.OrdinalIgnoreCase) == 0)
{
findRequiredField_IncludeMandatoryColumns = true;
break;
}
}
// Invoke "GetListItems" operation with the value of request element "IncludeMandatoryColumns" is "FALSE".
queryOption.QueryOptions.IncludeMandatoryColumns = "FALSE";
getListItemsResult = this.listswsAdapter.GetListItems(listName, null, null, viewFields, null, queryOption, null);
Site.Assert.IsNotNull(getListItemsResult.listitems, "The \"listitems\" is null in the second invoke of \"GetListItems\"!");
Site.Assert.IsNotNull(getListItemsResult.listitems.data, "The \"listitems.data\" is null in the second invoke of \"GetListItems\"!");
Site.Assert.IsNotNull(getListItemsResult.listitems.data.Any, "The \"listitems.data.Any\" is null in the second invoke of \"GetListItems\"!");
row = getListItemsResult.listitems.data.Any;
Site.Assert.IsNotNull(row[0], "The \"row[0]\" is null in the second invoke of \"GetListItems\"!");
Site.Assert.IsNotNull(row[0].Attributes, "The \"row[0].Attributes\" is null in the second invoke of \"GetListItems\"!");
attributeEnumerator = row[0].Attributes.GetEnumerator();
// Check if the "Required" field does not appear as one attribute of "z:row" element in the response of "GetListItems".
bool findRequiredField_NotIncludeMandatoryColumns = false;
while (attributeEnumerator.MoveNext())
{
XmlAttribute curAttribute = (XmlAttribute)attributeEnumerator.Current;
if (string.Compare(curAttribute.Name, attribute_NewRequiredField, StringComparison.OrdinalIgnoreCase) == 0)
{
findRequiredField_NotIncludeMandatoryColumns = true;
break;
}
}
#endregion
#region Try to confirm the requirement #1256.
// Capture the requirement #1256 when following 2 conditions are all satisfied:
// 1. The "Required" field appears as one attribute of "z:row" element in the response of "GetListItems",
// when the value of request element "IncludeMandatoryColumns" is "TRUE";
// 2. The "Required" field does not appear as one attribute of "z:row" element in the response of "GetListItems",
// when the value of request element "IncludeMandatoryColumns" is "FALSE";
bool confirmR1256 = false;
if (findRequiredField_IncludeMandatoryColumns && !findRequiredField_NotIncludeMandatoryColumns)
{
confirmR1256 = true;
}
Site.CaptureRequirementIfIsTrue(
confirmR1256,
1256,
"[IncludeMandatoryColumns]Specifies that required fields and fields used by specified calculated fields be returned in addition to the fields specified by the viewFields parameter if set to True.");
#endregion
}