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);
        }
Beispiel #2
0
 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);
 }