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

MSLISTSWS_S03_TC07_GetListItemChangesSinceToken_MetaInfo() private method

        public void MSLISTSWS_S03_TC07_GetListItemChangesSinceToken_MetaInfo()
        {
            // Create list.
            string listGuid = TestSuiteHelper.CreateList();

            #region Add a list item and add property on the metaInfo field

            // Add a property on the metaInfo field
            string uniquePropertyName = TestSuiteHelper.GetUniqueMetaInfoFieldPropertyName();
            string propertyValue = Guid.NewGuid().ToString("N");
            TestSuiteHelper.AddListItemWithMetaInfoProperty(listGuid, uniquePropertyName, propertyValue);
            #endregion

            // Get the ViewFields whose Properties is true and reference field is MetaInfo.
            // "MetaInfo" is required Field in [MS-LISTSWS]
            string metaInfoFieldName = "MetaInfo";
            CamlViewFields viewFields = TestSuiteHelper.CreateViewFields(true, new List<string> { metaInfoFieldName });

            GetListItemChangesSinceTokenResponseGetListItemChangesSinceTokenResult getListItemResult = null;
            getListItemResult = this.listswsAdapter.GetListItemChangesSinceToken(
                                                                   listGuid,
                                                                    null,
                                                                    null,
                                                                    viewFields,
                                                                    null,
                                                                    null,
                                                                    null,
                                                                    null);

            // Verify MS-LISTSWS requirement: MS-LISTSWS_R743
            if (getListItemResult == null || getListItemResult.listitems == null
                || getListItemResult.listitems.data == null || getListItemResult.listitems.data.Any == null)
            {
                this.Site.Assert.Fail("Get list item response error.");
            }

            if (getListItemResult.listitems.data.Any.Length == 0)
            {
                this.Site.Assert.Fail("Get list item data error");
            }

            // A return value represents the schema definition which is read from specified xsd file.
            XmlNode[] anyItems = getListItemResult.listitems.data.Any;

            // "ows_MetaInfo_" is required prefix in [MS-LISTSWS]
            string expectedPrefix = "ows_MetaInfo_";
            DataTable zrowData = AdapterHelper.ExtractData(anyItems);

            // Pick up the items which begin with "ows_MetaInfo_"
            var matchColumn = from DataColumn columnItem in zrowData.Columns
                              where 0 == columnItem.ColumnName.IndexOf(expectedPrefix, StringComparison.OrdinalIgnoreCase)
                              select columnItem;

            // Find out whether there is an item that contains the added property name in the column items.
            bool isContainAddedPropertyName = matchColumn.Any(founder => (0 < founder.ColumnName.IndexOf(uniquePropertyName, StringComparison.OrdinalIgnoreCase)));

            Site.CaptureRequirementIfIsTrue(
                isContainAddedPropertyName,
                2338,
                @"[In GetListItemChangesSinceToken]  [In viewFields element] If the Properties attribute of the ViewFields structure is set to TRUE and the MetaInfo field is referenced in FieldRef element, then properties related to the list MUST be returned with the prefix ""ows_MetaInfo_"".");
        }
S03_OperationOnListItem