public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <ListViewWebPartDefinition>("model", value => value.RequireNotNull()); var context = listItemModelHost.HostClientContext; WithExistingWebPart(listItemModelHost.HostFile, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); var typedDefinition = definition; if (typedDefinition.WebId.HasGuidValue()) { // TODO } else { assert.SkipProperty(m => m.WebId, "WebId is NULL. Skipping."); } if (!string.IsNullOrEmpty(typedDefinition.WebUrl)) { // TODO } else { assert.SkipProperty(m => m.WebUrl, "WebUrl is NULL. Skipping."); } // list if (!string.IsNullOrEmpty(definition.ListTitle)) { var listId = new Guid(CurrentWebPartXml.GetListViewWebPartProperty("ListId")); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListTitle); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListTitle, "ListTitle is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ListUrl)) { var listId = new Guid(CurrentWebPartXml.GetListViewWebPartProperty("ListId")); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListUrl); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListUrl, "ListUrl is null or empty. Skipping."); } if (definition.ListId.HasGuidValue()) { var listId = new Guid(CurrentWebPartXml.GetListViewWebPartProperty("ListId")); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListId); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListId, "ListId is null or empty. Skipping."); } if (definition.ViewId.HasGuidValue()) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetListViewWebPartProperty("ListViewXml")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetById(definition.ViewId.Value); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQueryWithTrace(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewId); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewId, "ViewId is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ViewName)) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetListViewWebPartProperty("ListViewXml")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetByTitle(definition.ViewName); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQueryWithTrace(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewName); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewName, "ViewName is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ViewUrl)) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetListViewWebPartProperty("ListViewXml")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetByTitle(definition.ViewName); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQueryWithTrace(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewUrl); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewUrl, "ViewUrl is null or empty. Skipping."); } // skip it, it will be part of the .Toolbar validation assert.SkipProperty(m => m.ToolbarShowAlways, ""); if (!string.IsNullOrEmpty(definition.Toolbar)) { assert.ShouldBeEqual((p, s, d) => { var targetWeb = listItemModelHost.HostWeb; if (typedDefinition.WebId.HasGuidValue() || !string.IsNullOrEmpty(typedDefinition.WebUrl)) { targetWeb = new LookupFieldModelHandler() .GetTargetWeb(this.CurrentClientContext.Site, typedDefinition.WebUrl, typedDefinition.WebId, modelHost); } var list = XsltListViewWebPartModelHandler.LookupList(targetWeb, typedDefinition.ListUrl, typedDefinition.ListTitle, typedDefinition.WebId); var xmlDefinition = ConvertUtils.ToString( CurrentWebPartXml.Root.Descendants( ((XNamespace)"http://schemas.microsoft.com/WebPart/v2/ListView") + "ListViewXml") .First().Value); var xmlDefinitionDoc = XDocument.Parse(xmlDefinition); var viewId = new Guid(xmlDefinitionDoc.Root.GetAttributeValue("Name")); var hiddenView = list.Views.GetById(viewId); context.Load(hiddenView, v => v.HtmlSchemaXml); context.ExecuteQueryWithTrace(); var htmlSchemaXml = XDocument.Parse(hiddenView.HtmlSchemaXml); var useShowAlwaysValue = (typedDefinition.Toolbar.ToUpper() == BuiltInToolbarType.Standard.ToUpper()) && typedDefinition.ToolbarShowAlways.HasValue && typedDefinition.ToolbarShowAlways.Value; var toolbarNode = htmlSchemaXml.Root .Descendants("Toolbar") .FirstOrDefault(); // NONE? the node might not be there if ((typedDefinition.Toolbar.ToUpper() == BuiltInToolbarType.None.ToUpper()) && (toolbarNode == null)) { var srcProp = s.GetExpressionValue(m => m.Toolbar); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = true }); } else { var toolBarValue = toolbarNode.GetAttributeValue("Type"); var srcProp = s.GetExpressionValue(m => m.Toolbar); var isValid = toolBarValue.ToUpper() == definition.Toolbar.ToUpper(); if (useShowAlwaysValue) { var showAlwaysValue = toolbarNode.GetAttributeValue("ShowAlways"); isValid = isValid && (showAlwaysValue.ToUpper() == "TRUE"); } return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); } }); } else { assert.SkipProperty(m => m.Toolbar); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var typedDefinition = model.WithAssertAndCast <ContentByQueryWebPartDefinition>("model", value => value.RequireNotNull()); var pageItem = listItemModelHost.HostListItem; WithExistingWebPart(listItemModelHost.HostFile, typedDefinition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, typedDefinition, spObject) .ShouldNotBeNull(spObject); if (!string.IsNullOrEmpty(typedDefinition.ContentTypeBeginsWithId)) { throw new NotImplementedException(); } else { assert.SkipProperty(m => m.ContentTypeBeginsWithId, "ContentTypeBeginsWithId is null or empty, skipping."); } // mappings if (!string.IsNullOrEmpty(typedDefinition.DataMappings)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DataMappings); var isValid = false; isValid = s.DataMappings == CurrentWebPartXml.GetProperty("DataMappings"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DataMappings, "DataMappings is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.DataMappingViewFields)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DataMappingViewFields); var isValid = false; isValid = s.DataMappingViewFields == CurrentWebPartXml.GetProperty("DataMappingViewFields"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DataMappingViewFields, "DataMappingViewFields is null or empty, skipping."); } // filter display values if (!string.IsNullOrEmpty(typedDefinition.FilterDisplayValue1)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterDisplayValue1); var isValid = false; isValid = s.FilterDisplayValue1 == CurrentWebPartXml.GetProperty("FilterDisplayValue1"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterDisplayValue1, "FilterDisplayValue1 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterDisplayValue2)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterDisplayValue2); var isValid = false; isValid = s.FilterDisplayValue2 == CurrentWebPartXml.GetProperty("FilterDisplayValue2"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterDisplayValue2, "FilterDisplayValue2 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterDisplayValue3)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterDisplayValue3); var isValid = false; isValid = s.FilterDisplayValue3 == CurrentWebPartXml.GetProperty("FilterDisplayValue3"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterDisplayValue3, "FilterDisplayValue3 is null or empty, skipping."); } // filter operator if (!string.IsNullOrEmpty(typedDefinition.FilterOperator1)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterOperator1); var isValid = false; isValid = s.FilterOperator1 == CurrentWebPartXml.GetProperty("FilterOperator1"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterOperator1, "FilterOperator1 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterOperator2)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterOperator2); var isValid = false; isValid = s.FilterOperator2 == CurrentWebPartXml.GetProperty("FilterOperator2"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterOperator2, "FilterOperator2 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterOperator3)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterOperator3); var isValid = false; isValid = s.FilterOperator3 == CurrentWebPartXml.GetProperty("FilterOperator3"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterOperator3, "FilterOperator3 is null or empty, skipping."); } // filter types if (!string.IsNullOrEmpty(typedDefinition.FilterType1)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterType1); var isValid = false; isValid = s.FilterType1 == CurrentWebPartXml.GetProperty("FilterType1"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterType1, "FilterType1 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterType2)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterType2); var isValid = false; isValid = s.FilterType2 == CurrentWebPartXml.GetProperty("FilterType2"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterType2, "FilterType2 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterType3)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterType3); var isValid = false; isValid = s.FilterType3 == CurrentWebPartXml.GetProperty("FilterType3"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterType3, "FilterType3 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.SortBy)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.SortBy); var isValid = false; isValid = s.SortBy == CurrentWebPartXml.GetProperty("SortBy"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.SortBy, "SortBy is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.SortByFieldType)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.SortByFieldType); var isValid = false; isValid = s.SortByFieldType == CurrentWebPartXml.GetProperty("SortByFieldType"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.SortByFieldType, "SortByFieldType is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.SortByDirection)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.SortByDirection); var isValid = false; isValid = s.SortByDirection == CurrentWebPartXml.GetProperty("SortByDirection"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.SortByDirection, "SortByDirection is null or empty, skipping."); } // filter values if (!string.IsNullOrEmpty(typedDefinition.FilterValue1)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterValue1); var isValid = false; isValid = s.FilterValue1 == CurrentWebPartXml.GetProperty("FilterValue1"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterValue1, "FilterValue1 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterValue2)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterValue2); var isValid = false; isValid = s.FilterValue2 == CurrentWebPartXml.GetProperty("FilterValue2"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterValue2, "FilterValue2 is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.FilterValue3)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.FilterValue3); var isValid = false; isValid = s.FilterValue3 == CurrentWebPartXml.GetProperty("FilterValue3"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.FilterValue3, "FilterValue3 is null or empty, skipping."); } // styles if (!string.IsNullOrEmpty(typedDefinition.GroupStyle)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.GroupStyle); var isValid = false; isValid = s.GroupStyle == CurrentWebPartXml.GetGroupStyle(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.GroupStyle, "GroupStyle is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.ItemStyle)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ItemStyle); var isValid = false; isValid = s.ItemStyle == CurrentWebPartXml.GetItemStyle(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ItemStyle, "ItemStyle is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.ItemXslLink)) { throw new NotImplementedException(); } else { assert.SkipProperty(m => m.ItemXslLink, "ItemXslLink is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.MainXslLink)) { throw new NotImplementedException(); } else { assert.SkipProperty(m => m.MainXslLink, "MainXslLink is null or empty, skipping."); } // list bindings if (!string.IsNullOrEmpty(typedDefinition.WebUrl)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.WebUrl); var isValid = false; isValid = s.WebUrl == CurrentWebPartXml.GetWebUrl(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.WebUrl, "WebUrl is null or empty, skipping."); } if (typedDefinition.WebId.HasValue) { throw new NotImplementedException(); } else { assert.SkipProperty(m => m.WebId, "WebId is null or empty, skipping."); } if (typedDefinition.ListGuid.HasGuidValue()) { throw new NotImplementedException(); } else { assert.SkipProperty(m => m.ListGuid, "ListGuid is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.ListName)) { throw new NotImplementedException(); } else { assert.SkipProperty(m => m.ListName, "ListName is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.ListUrl)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListUrl); var isValid = false; // resolve web / url by list URL // check ListId var webLookup = new LookupFieldModelHandler(); var targetWeb = webLookup.GetTargetWeb(listItemModelHost.HostSite, typedDefinition.WebUrl, typedDefinition.WebId, modelHost); var list = targetWeb.QueryAndGetListByUrl(typedDefinition.ListUrl); isValid = CurrentWebPartXml.GetListGuid() == list.Id.ToString("D"); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListUrl, "ListUrl is null or empty, skipping."); } // misc if (typedDefinition.ServerTemplate.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ServerTemplate); var isValid = false; isValid = ConvertUtils.ToInt(CurrentWebPartXml.GetProperty("ServerTemplate")) == typedDefinition.ServerTemplate; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ServerTemplate, "ServerTemplate is null or empty, skipping."); } if (typedDefinition.ItemLimit.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ItemLimit); var isValid = false; isValid = ConvertUtils.ToInt(CurrentWebPartXml.GetProperty("ItemLimit")) == typedDefinition.ItemLimit; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ItemLimit, "ItemLimit is null or empty, skipping."); } if (typedDefinition.PlayMediaInBrowser.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.PlayMediaInBrowser); var isValid = false; isValid = s.PlayMediaInBrowser == ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("PlayMediaInBrowser")); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.PlayMediaInBrowser, "PlayMediaInBrowser is null or empty, skipping."); } if (typedDefinition.ShowUntargetedItems.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowUntargetedItems); var isValid = false; isValid = s.ShowUntargetedItems == ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("ShowUntargetedItems")); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowUntargetedItems, "ShowUntargetedItems is null or empty, skipping."); } if (typedDefinition.UseCopyUtil.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.UseCopyUtil); var isValid = false; isValid = s.UseCopyUtil == ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("UseCopyUtil")); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.UseCopyUtil, "UseCopyUtil is null or empty, skipping."); } if (typedDefinition.DisplayColumns.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisplayColumns); var isValid = false; isValid = s.DisplayColumns == ConvertUtils.ToInt(CurrentWebPartXml.GetProperty("DisplayColumns")); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisplayColumns, "DisplayColumns is null or empty, skipping."); } if (!string.IsNullOrEmpty(typedDefinition.GroupBy)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.GroupBy); var isValid = false; isValid = s.GroupBy == ConvertUtils.ToString(CurrentWebPartXml.GetProperty("GroupBy")); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.GroupBy, "GroupBy is null or empty, skipping."); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <ContentEditorWebPartDefinition>("model", value => value.RequireNotNull()); var pageItem = listItemModelHost.HostListItem; WithWithExistingWebPart(pageItem, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); if (!string.IsNullOrEmpty(definition.Content)) { var value = CurrentWebPartXml.GetContentEditorWebPartProperty("Content"); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.Content); var isValid = definition.Content == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.Content, "Content is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ContentLink)) { var value = CurrentWebPartXml.GetContentEditorWebPartProperty("ContentLink"); var defValue = TokenReplacementService.ReplaceTokens(new TokenReplacementContext { Context = listItemModelHost.HostClientContext, Value = definition.ContentLink }).Value; var isValid = defValue.ToUpper() == value.ToUpper(); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ContentLink); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ContentLink, "ContentLink is null or empty. Skipping."); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <XsltListViewWebPartDefinition>("model", value => value.RequireNotNull()); var web = listItemModelHost.HostWeb; var context = web.Context; var pageItem = listItemModelHost.HostListItem; WithWithExistingWebPart(pageItem, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); // list if (!string.IsNullOrEmpty(definition.ListTitle)) { var listId = new Guid(CurrentWebPartXml.GetListId()); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListTitle); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListTitle, "ListTitle is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ListUrl)) { var listId = new Guid(CurrentWebPartXml.GetListId()); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListUrl); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListUrl, "ListUrl is null or empty. Skipping."); } if (definition.ListId.HasGuidValue()) { var listId = new Guid(CurrentWebPartXml.GetListId()); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListId); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListId, "ListId is null or empty. Skipping."); } // list view if (definition.ViewId.HasGuidValue()) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetProperty("XmlDefinition")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetById(definition.ViewId.Value); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQuery(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewId); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewId, "ViewId is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ViewName)) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetProperty("XmlDefinition")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetByTitle(definition.ViewName); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQuery(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewName); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewName, "ViewName is null or empty. Skipping."); } // jslink if (!string.IsNullOrEmpty(definition.JSLink)) { var jsLinkValue = CurrentWebPartXml.GetJSLink(); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.JSLink); var isValid = definition.JSLink.ToUpper() == jsLinkValue.ToUpper(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.JSLink, "JSLink is null or empty. Skipping."); } // the rest if (definition.CacheXslTimeOut.HasValue) { var value = ConvertUtils.ToInt(CurrentWebPartXml.GetProperty("CacheXslTimeOut")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.CacheXslTimeOut); var isValid = definition.CacheXslTimeOut == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.CacheXslTimeOut, "CacheXslTimeOut is null or empty. Skipping."); } if (definition.CacheXslStorage.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("CacheXslStorage")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.CacheXslStorage); var isValid = definition.CacheXslStorage == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.CacheXslStorage, "CacheXslStorage is null or empty. Skipping."); } if (definition.ShowTimelineIfAvailable.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("ShowTimelineIfAvailable")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowTimelineIfAvailable); var isValid = definition.ShowTimelineIfAvailable == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowTimelineIfAvailable, "ShowTimelineIfAvailable is null or empty. Skipping."); } if (definition.InplaceSearchEnabled.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("InplaceSearchEnabled")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.InplaceSearchEnabled); var isValid = definition.InplaceSearchEnabled == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.InplaceSearchEnabled, "InplaceSearchEnabled is null or empty. Skipping."); } if (definition.DisableSaveAsNewViewButton.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("DisableSaveAsNewViewButton")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisableSaveAsNewViewButton); var isValid = definition.DisableSaveAsNewViewButton == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisableSaveAsNewViewButton, "DisableSaveAsNewViewButton is null or empty. Skipping."); } if (definition.DisableColumnFiltering.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("DisableColumnFiltering")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisableColumnFiltering); var isValid = definition.DisableColumnFiltering == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisableColumnFiltering, "DisableColumnFiltering is null or empty. Skipping."); } if (definition.DisableViewSelectorMenu.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("DisableViewSelectorMenu")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisableViewSelectorMenu); var isValid = definition.DisableViewSelectorMenu == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisableViewSelectorMenu, "DisableViewSelectorMenu is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.BaseXsltHashKey)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("BaseXsltHashKey")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.BaseXsltHashKey); var isValid = definition.BaseXsltHashKey == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.BaseXsltHashKey, "BaseXsltHashKey is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.GhostedXslLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("GhostedXslLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.GhostedXslLink); var isValid = definition.GhostedXslLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.GhostedXslLink, "GhostedXslLink is null or empty. Skipping."); } // xsl if (!string.IsNullOrEmpty(definition.Xsl)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("Xsl")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.Xsl); var isValid = value .Replace("\r", string.Empty) .Replace("\n", string.Empty) == definition.Xsl .Replace("\r", string.Empty) .Replace("\n", string.Empty); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.Xsl, "Xsl is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.XslLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("XslLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.XslLink); var isValid = definition.XslLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.XslLink, "XslLink is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.GhostedXslLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("GhostedXslLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.GhostedXslLink); var isValid = definition.GhostedXslLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.GhostedXslLink, "GhostedXslLink is null or empty. Skipping."); } // xml if (!string.IsNullOrEmpty(definition.XmlDefinition)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("XmlDefinition")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.XmlDefinition); var isValid = value.Contains("BaseViewID=\"2\""); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.XmlDefinition, "XmlDefinition is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.XmlDefinitionLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("XmlDefinitionLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.XmlDefinitionLink); var isValid = definition.XmlDefinitionLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.XmlDefinitionLink, "XmlDefinitionLink is null or empty. Skipping."); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <XsltListViewWebPartDefinition>("model", value => value.RequireNotNull()); var web = listItemModelHost.HostWeb; var context = web.Context; var pageItem = listItemModelHost.HostListItem; WithExistingWebPart(listItemModelHost.HostFile, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); var typedDefinition = definition; if (typedDefinition.WebId.HasGuidValue()) { // TODO } else { assert.SkipProperty(m => m.WebId, "WebId is NULL. Skipping."); } if (!string.IsNullOrEmpty(typedDefinition.WebUrl)) { var webId = default(Guid); var bindContext = LookupBindContext(listItemModelHost, typedDefinition, out webId); // web id should be the same assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.WebUrl); var isValid = webId == new Guid(CurrentWebPartXml.GetWebId()); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.WebUrl, "WebUrl is NULL. Skipping."); } // list if (!string.IsNullOrEmpty(definition.ListTitle)) { var listId = new Guid(CurrentWebPartXml.GetListId()); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListTitle); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListTitle, "ListTitle is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ListUrl)) { var listId = new Guid(CurrentWebPartXml.GetListId()); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListUrl); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListUrl, "ListUrl is null or empty. Skipping."); } if (definition.ListId.HasGuidValue()) { var listId = new Guid(CurrentWebPartXml.GetListId()); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListId); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListId, "ListId is null or empty. Skipping."); } // list view if (definition.ViewId.HasGuidValue()) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetProperty("XmlDefinition")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetById(definition.ViewId.Value); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQueryWithTrace(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewId); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewId, "ViewId is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ViewName)) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetProperty("XmlDefinition")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetByTitle(definition.ViewName); context.Load(bindedView, l => l.BaseViewId, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit, l => l.JSLink); context.Load(targetView, l => l.BaseViewId, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit, l => l.JSLink); context.ExecuteQueryWithTrace(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit) && (bindedView.JSLink == targetView.JSLink) && (bindedView.BaseViewId == targetView.BaseViewId); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewName); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewName, "ViewName is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ViewUrl)) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetProperty("XmlDefinition")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var views = list.Views; context.Load(views, v => v.Include(r => r.ServerRelativeUrl)); context.ExecuteQueryWithTrace(); var targetView = views.ToArray() .FirstOrDefault(v => v.ServerRelativeUrl.ToUpper().EndsWith(definition.ViewUrl.ToUpper())); context.Load(bindedView, l => l.BaseViewId, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit, l => l.JSLink); context.Load(targetView, l => l.BaseViewId, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit, l => l.JSLink); context.ExecuteQueryWithTrace(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit) && (bindedView.JSLink == targetView.JSLink) && (bindedView.BaseViewId == targetView.BaseViewId); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewUrl); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewUrl, "ViewUrl is null or empty. Skipping."); } // jslink if (!string.IsNullOrEmpty(definition.JSLink)) { var jsLinkValue = CurrentWebPartXml.GetJSLink(); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.JSLink); var isValid = definition.JSLink.ToUpper() == jsLinkValue.ToUpper(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.JSLink, "JSLink is null or empty. Skipping."); } // the rest if (definition.CacheXslTimeOut.HasValue) { var value = ConvertUtils.ToInt(CurrentWebPartXml.GetProperty("CacheXslTimeOut")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.CacheXslTimeOut); var isValid = definition.CacheXslTimeOut == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.CacheXslTimeOut, "CacheXslTimeOut is null or empty. Skipping."); } if (definition.CacheXslStorage.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("CacheXslStorage")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.CacheXslStorage); var isValid = definition.CacheXslStorage == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.CacheXslStorage, "CacheXslStorage is null or empty. Skipping."); } if (definition.ShowTimelineIfAvailable.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("ShowTimelineIfAvailable")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowTimelineIfAvailable); var isValid = definition.ShowTimelineIfAvailable == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowTimelineIfAvailable, "ShowTimelineIfAvailable is null or empty. Skipping."); } if (definition.InplaceSearchEnabled.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("InplaceSearchEnabled")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.InplaceSearchEnabled); var isValid = definition.InplaceSearchEnabled == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.InplaceSearchEnabled, "InplaceSearchEnabled is null or empty. Skipping."); } if (definition.DisableSaveAsNewViewButton.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("DisableSaveAsNewViewButton")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisableSaveAsNewViewButton); var isValid = definition.DisableSaveAsNewViewButton == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisableSaveAsNewViewButton, "DisableSaveAsNewViewButton is null or empty. Skipping."); } if (definition.DisableColumnFiltering.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("DisableColumnFiltering")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisableColumnFiltering); var isValid = definition.DisableColumnFiltering == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisableColumnFiltering, "DisableColumnFiltering is null or empty. Skipping."); } if (definition.DisableViewSelectorMenu.HasValue) { var value = ConvertUtils.ToBool(CurrentWebPartXml.GetProperty("DisableViewSelectorMenu")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisableViewSelectorMenu); var isValid = definition.DisableViewSelectorMenu == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisableViewSelectorMenu, "DisableViewSelectorMenu is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.BaseXsltHashKey)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("BaseXsltHashKey")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.BaseXsltHashKey); var isValid = definition.BaseXsltHashKey == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.BaseXsltHashKey, "BaseXsltHashKey is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.GhostedXslLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("GhostedXslLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.GhostedXslLink); var isValid = definition.GhostedXslLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.GhostedXslLink, "GhostedXslLink is null or empty. Skipping."); } // xsl if (!string.IsNullOrEmpty(definition.Xsl)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("Xsl")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.Xsl); var isValid = value .Replace("\r", string.Empty) .Replace("\n", string.Empty) == definition.Xsl .Replace("\r", string.Empty) .Replace("\n", string.Empty); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.Xsl, "Xsl is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.XslLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("XslLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.XslLink); var isValid = definition.XslLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.XslLink, "XslLink is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.GhostedXslLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("GhostedXslLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.GhostedXslLink); var isValid = definition.GhostedXslLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.GhostedXslLink, "GhostedXslLink is null or empty. Skipping."); } // xml if (!string.IsNullOrEmpty(definition.XmlDefinition)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("XmlDefinition")); var destXmlAttrs = XDocument.Parse(value).Root.Attributes(); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.XmlDefinition); var isValid = true; var srcXmlAttrs = XDocument.Parse(definition.XmlDefinition).Root.Attributes(); foreach (var srcAttr in srcXmlAttrs) { var attrName = srcAttr.Name; var attrValue = srcAttr.Value; isValid = destXmlAttrs.FirstOrDefault(a => a.Name == attrName) .Value == attrValue; if (!isValid) { break; } } return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.XmlDefinition, "XmlDefinition is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.XmlDefinitionLink)) { var value = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("XmlDefinitionLink")); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.XmlDefinitionLink); var isValid = definition.XmlDefinitionLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.XmlDefinitionLink, "XmlDefinitionLink is null or empty. Skipping."); } // skip it, it will be part of the .Toolbar validation assert.SkipProperty(m => m.ToolbarShowAlways, ""); if (!string.IsNullOrEmpty(definition.Toolbar)) { assert.ShouldBeEqual((p, s, d) => { var targetWeb = listItemModelHost.HostWeb; if (typedDefinition.WebId.HasGuidValue() || !string.IsNullOrEmpty(typedDefinition.WebUrl)) { targetWeb = new LookupFieldModelHandler() .GetTargetWeb( this.CurrentClientContext.Site, typedDefinition.WebUrl, typedDefinition.WebId, modelHost); } var list = XsltListViewWebPartModelHandler.LookupList(targetWeb, typedDefinition.ListUrl, typedDefinition.ListTitle, typedDefinition.WebId); var xmlDefinition = ConvertUtils.ToString(CurrentWebPartXml.GetProperty("XmlDefinition")); var xmlDefinitionDoc = XDocument.Parse(xmlDefinition); var viewId = new Guid(xmlDefinitionDoc.Root.GetAttributeValue("Name")); var hiddenView = list.Views.GetById(viewId); context.Load(hiddenView, v => v.HtmlSchemaXml); context.ExecuteQueryWithTrace(); var htmlSchemaXml = XDocument.Parse(hiddenView.HtmlSchemaXml); var useShowAlwaysValue = (typedDefinition.Toolbar.ToUpper() == BuiltInToolbarType.Standard.ToUpper()) && typedDefinition.ToolbarShowAlways.HasValue && typedDefinition.ToolbarShowAlways.Value; var toolbarNode = htmlSchemaXml.Root .Descendants("Toolbar") .FirstOrDefault(); // NONE? the node might not be there if ((typedDefinition.Toolbar.ToUpper() == BuiltInToolbarType.None.ToUpper()) && (toolbarNode == null)) { var srcProp = s.GetExpressionValue(m => m.Toolbar); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = true }); } else { var toolBarValue = toolbarNode.GetAttributeValue("Type"); var srcProp = s.GetExpressionValue(m => m.Toolbar); var isValid = toolBarValue.ToUpper() == definition.Toolbar.ToUpper(); if (useShowAlwaysValue) { var showAlwaysValue = toolbarNode.GetAttributeValue("ShowAlways"); isValid = isValid && (showAlwaysValue.ToUpper() == "TRUE"); } return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); } }); } else { assert.SkipProperty(m => m.Toolbar); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <SilverlightWebPartDefinition>("model", value => value.RequireNotNull()); var pageItem = listItemModelHost.HostListItem; WithWithExistingWebPart(pageItem, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); if (!string.IsNullOrEmpty(definition.CustomInitParameters)) { var value = CurrentWebPartXml.GetProperty("CustomInitParameters"); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.CustomInitParameters); var isValid = definition.CustomInitParameters == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.CustomInitParameters, "CustomInitParameters is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.Url)) { var value = CurrentWebPartXml.GetProperty("Url"); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.Url); var isValid = definition.Url == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.Url, "Url is null or empty. Skipping."); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <PageViewerWebPartDefinition>("model", value => value.RequireNotNull()); var pageItem = listItemModelHost.HostListItem; WithExistingWebPart(listItemModelHost.HostFile, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); if (!string.IsNullOrEmpty(definition.ContentLink)) { var value = CurrentWebPartXml.GetPageViewerWebPartProperty("ContentLink"); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ContentLink); var isValid = definition.ContentLink == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ContentLink, "ContentLink is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.SourceType)) { var value = CurrentWebPartXml.GetPageViewerWebPartProperty("SourceType"); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.SourceType); var isValid = definition.SourceType == value; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.SourceType, "SourceType is null or empty. Skipping."); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <ListViewWebPartDefinition>("model", value => value.RequireNotNull()); var pageItem = listItemModelHost.HostListItem; var context = pageItem.Context; WithWithExistingWebPart(pageItem, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); // list if (!string.IsNullOrEmpty(definition.ListTitle)) { var listId = new Guid(CurrentWebPartXml.GetListViewWebPartProperty("ListId")); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListTitle); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListTitle, "ListTitle is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ListUrl)) { var listId = new Guid(CurrentWebPartXml.GetListViewWebPartProperty("ListId")); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListUrl); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListUrl, "ListUrl is null or empty. Skipping."); } if (definition.ListId.HasGuidValue()) { var listId = new Guid(CurrentWebPartXml.GetListViewWebPartProperty("ListId")); var list = LookupList(listItemModelHost, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ListId); var isValid = list.Id == listId; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ListId, "ListId is null or empty. Skipping."); } if (definition.ViewId.HasGuidValue()) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetListViewWebPartProperty("ListViewXml")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetById(definition.ViewId.Value); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQuery(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewId); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewId, "ViewId is null or empty. Skipping."); } if (!string.IsNullOrEmpty(definition.ViewName)) { var list = LookupList(listItemModelHost, definition); var bindContext = LookupBindContext(listItemModelHost, definition); var viewBindingXml = XDocument.Parse(CurrentWebPartXml.GetListViewWebPartProperty("ListViewXml")); var viewId = new Guid(viewBindingXml.Root.GetAttributeValue("Name")); var bindedView = list.Views.GetById(viewId); var targetView = list.Views.GetByTitle(definition.ViewName); context.Load(bindedView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.Load(targetView, l => l.ViewFields, l => l.ViewQuery, l => l.RowLimit); context.ExecuteQuery(); var isValid = false; // these are two different views, just CAML and field count isValid = (bindedView.ViewFields.Count == targetView.ViewFields.Count) && (bindedView.ViewQuery == targetView.ViewQuery) && (bindedView.RowLimit == targetView.RowLimit); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ViewName); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ViewName, "ViewName is null or empty. Skipping."); } }); }
public override void DeployModel(object modelHost, DefinitionBase model) { base.DeployModel(modelHost, model); var listItemModelHost = modelHost.WithAssertAndCast <ListItemModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <AdvancedSearchBoxDefinition>("model", value => value.RequireNotNull()); var pageItem = listItemModelHost.HostListItem; WithExistingWebPart(listItemModelHost.HostFile, definition, spObject => { var assert = ServiceFactory.AssertService .NewAssert(model, definition, spObject) .ShouldNotBeNull(spObject); if (!string.IsNullOrEmpty(definition.AndQueryTextBoxLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.AndQueryTextBoxLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("AndQueryTextBoxLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.AndQueryTextBoxLabelText); } if (!string.IsNullOrEmpty(definition.DisplayGroup)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.DisplayGroup); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("DisplayGroup"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.DisplayGroup); } if (!string.IsNullOrEmpty(definition.LanguagesLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.LanguagesLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("LanguagesLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.LanguagesLabelText); } if (!string.IsNullOrEmpty(definition.NotQueryTextBoxLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.NotQueryTextBoxLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("NotQueryTextBoxLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.NotQueryTextBoxLabelText); } if (!string.IsNullOrEmpty(definition.OrQueryTextBoxLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.OrQueryTextBoxLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("OrQueryTextBoxLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.OrQueryTextBoxLabelText); } if (!string.IsNullOrEmpty(definition.PhraseQueryTextBoxLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.PhraseQueryTextBoxLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("PhraseQueryTextBoxLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.PhraseQueryTextBoxLabelText); } if (!string.IsNullOrEmpty(definition.AdvancedSearchBoxProperties)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.AdvancedSearchBoxProperties); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("Properties"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.AdvancedSearchBoxProperties); } if (!string.IsNullOrEmpty(definition.PropertiesSectionLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.PropertiesSectionLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("PropertiesSectionLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.PropertiesSectionLabelText); } if (!string.IsNullOrEmpty(definition.ResultTypeLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ResultTypeLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ResultTypeLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ResultTypeLabelText); } if (!string.IsNullOrEmpty(definition.ScopeLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ScopeLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ScopeLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ScopeLabelText); } if (!string.IsNullOrEmpty(definition.ScopeSectionLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ScopeSectionLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ScopeSectionLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ScopeSectionLabelText); } if (!string.IsNullOrEmpty(definition.SearchResultPageURL)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.SearchResultPageURL); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("SearchResultPageURL"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.SearchResultPageURL); } if (definition.ShowAndQueryTextBox.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowAndQueryTextBox); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowAndQueryTextBox"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowAndQueryTextBox); } if (definition.ShowLanguageOptions.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowLanguageOptions); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowLanguageOptions"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowLanguageOptions); } if (definition.ShowNotQueryTextBox.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowNotQueryTextBox); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowNotQueryTextBox"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowNotQueryTextBox); } if (definition.ShowOrQueryTextBox.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowOrQueryTextBox); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowOrQueryTextBox"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowOrQueryTextBox); } if (definition.ShowPhraseQueryTextBox.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowPhraseQueryTextBox); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowPhraseQueryTextBox"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowPhraseQueryTextBox); } if (definition.ShowPropertiesSection.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowPropertiesSection); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowPropertiesSection"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowPropertiesSection); } if (definition.ShowResultTypePicker.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowResultTypePicker); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowResultTypePicker"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowResultTypePicker); } if (definition.ShowScopes.HasValue) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.ShowScopes); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("ShowScopes"); var isValid = ConvertUtils.ToBool(value) == ConvertUtils.ToBool(srcProp.Value); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.ShowScopes); } if (!string.IsNullOrEmpty(definition.TextQuerySectionLabelText)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.TextQuerySectionLabelText); var value = CurrentWebPartXml.GetAdvancedSearchBoxWebPartProperty("TextQuerySectionLabelText"); var isValid = value == srcProp.Value.ToString(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.TextQuerySectionLabelText); } }); }