protected void ApplyTemplate(Action <Frame> when, DocumentStyleLinkOperation operation, XafApplication application) { MockDocumentsListEditor(application); var style = Document.NewDocumentStyle(1, DocumentStyleType.Paragraph).Select(s => s.ToDocumentStyle(Document)).First(); Document.Paragraphs.Append(); Document.Paragraphs.Last().Style = Document.ParagraphStyles.First(); var documentStyles = new[] { style, Document.NewParagraphStyle(1, operation == DocumentStyleLinkOperation.Ensure).ToDocumentStyle(Document) }.ToArray(); var tuple = application.SetApplyTemplateStyleDetailView(Document); var applyTemplateStyle = tuple.applyTemplateStyle; var detailView = ((DetailView)tuple.window.View); detailView.DocumentsListView().Editor.GetMock() .Setup(editor => editor.GetSelectedObjects()) .Returns(() => ((Xpand.XAF.Modules.Office.DocumentStyleManager.BusinessObjects.ApplyTemplateStyle)detailView.CurrentObject).Documents.Take(1).ToArray()); void ConfigureApplyTemplateStyle() { var objectSpace = application.CreateObjectSpace(); applyTemplateStyle.Template = objectSpace.CreateObject <DocumentStyleLinkTemplate>(); var documentStyleLink = objectSpace.CreateObject <DocumentStyleLink>(); documentStyleLink.Original = documentStyles.First().NewTemplateStyle(objectSpace); documentStyleLink.Replacement = new DocumentStyle() { DocumentStyleType = DocumentStyleType.Paragraph, StyleName = "Rep1" }.NewTemplateStyle(objectSpace); applyTemplateStyle.Template.DocumentStyleLinks.Add(documentStyleLink); documentStyleLink = objectSpace.CreateObject <DocumentStyleLink>(); if (operation == DocumentStyleLinkOperation.Replace) { documentStyleLink.Original = documentStyles.Last().NewTemplateStyle(objectSpace); } documentStyleLink.Replacement = new DocumentStyle() { DocumentStyleType = DocumentStyleType.Paragraph, StyleName = "Rep2" }.NewTemplateStyle(objectSpace); documentStyleLink.Operation = operation; applyTemplateStyle.Template.DocumentStyleLinks.Add(documentStyleLink); } ConfigureApplyTemplateStyle(); var changedDocument = tuple.window.View.AsDetailView().ApplyTemplateStyleChangedRichEditControl().Document; when(tuple.window); var repStyle = changedDocument.ParagraphStyles.FirstOrDefault(_ => _.Name == "Rep1"); repStyle.ShouldNotBeNull(); repStyle = changedDocument.ParagraphStyles.FirstOrDefault(_ => _.Name == "Rep2"); repStyle.ShouldNotBeNull(); applyTemplateStyle.ChangedStyles.Count.ShouldBe(2); var changedStyle = applyTemplateStyle.ChangedStyles.FirstOrDefault(link => link.Replacement.StyleName == "Rep1"); changedStyle.ShouldNotBeNull(); changedStyle.Count.ShouldBe(1); changedStyle = applyTemplateStyle.ChangedStyles.FirstOrDefault(link => link.Replacement.StyleName == "Rep2"); changedStyle.ShouldNotBeNull(); changedStyle.Count.ShouldBe(1); }
public void ApplyTemplate_When_Selected_TemplateDocument_Changed_and_template_set(DocumentStyleLinkOperation operation) { using var application = DocumentStyleManagerModule().Application; ApplyTemplate(frame => { var documentsListView = frame.View.AsDetailView() .GetListPropertyEditor <BusinessObjects.ApplyTemplateStyle>(_ => _.Documents).Frame.View.AsListView(); documentsListView.OnSelectionChanged(); }, operation, application); }
public void When_ApplyTemplateAction_Executed_Applies_active_template_to_all_and_saves_changes_to_source_objects(DocumentStyleLinkOperation operation) { using var application = DocumentStyleManagerModule().Application; ApplyTemplate(frame => { var objectSpace = application.CreateObjectSpace(); var modelDocumentStyleManager = application.Model.DocumentStyleManager(); var oid = objectSpace.GetObjects(modelDocumentStyleManager.DefaultPropertiesProvider.TypeInfo.Type, objectSpace.ParseCriteria(modelDocumentStyleManager.DefaultPropertiesProviderCriteria)).Cast <DataObject>().First().Oid; var content = objectSpace.GetObjectsQuery <DataObject>().ToArray().First(o => o.Oid != oid).Content; frame.Action <DocumentStyleManagerModule>().ApplyTemplate().DoExecute(); content.ShouldNotBe(application.CreateObjectSpace().GetObjectByKey <DataObject>(oid).Content); }, operation, application); }