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 <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 <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 <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."); } }); }