Microsoft.Protocols.TestSuites.MS_LISTSWS.S03_OperationOnListItem.MSLISTSWS_S03_TC66_IncludeMandatoryColumns C# (CSharp) Method

MSLISTSWS_S03_TC66_IncludeMandatoryColumns() private method

private MSLISTSWS_S03_TC66_IncludeMandatoryColumns ( ) : void
return void
        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
        }
S03_OperationOnListItem