private T AssertViewAction <T>(XafApplication application, string caption, ViewType viewType = ViewType.DetailView) where T : ActionBase
        {
            var viewWindow = application.CreateViewWindow();

            caption = caption.CompoundName();
            var compositeView = application.NewView(application.FindDetailViewId(typeof(NonPersistentObject)));

            viewWindow.SetView(compositeView);
            var id          = $"{typeof(T).Name}{viewType}";
            var modelAction = compositeView.Model.Application.ActionDesign.Actions.FirstOrDefault(action => action.Id == id);

            modelAction.ShouldNotBeNull();
            modelAction.TargetViewType.ShouldBe(viewType);
            modelAction.TargetObjectType.ShouldBe(typeof(NonPersistentObject).FullName);
            modelAction.Caption.ShouldBe(caption);
            var detailViewAction = viewWindow.Actions(id).FirstOrDefault();

            detailViewAction.ShouldNotBeNull();
            detailViewAction.Active.ResultValue.ShouldBe(viewType == ViewType.DetailView);
            var listViewAction = viewWindow.View.AsDetailView().GetListPropertyEditor <NonPersistentObject>(o => o.Childs).Frame.Actions(id).FirstOrDefault();

            if (viewType == ViewType.ListView)
            {
                listViewAction.ShouldNotBeNull();
                listViewAction.Active.ResultValue.ShouldBe(true);
            }
            var window = application.CreateViewWindow();

            window.Controllers.Values.OfType <WindowController>().SelectMany(controller => controller.Actions).Select(a => a.Id).ShouldNotContain(id);
            if (detailViewAction.Active.ResultValue)
            {
                var testObserver = detailViewAction.WhenExecuted().ToUnit().Test();
                if (detailViewAction is PopupWindowShowAction popupWindowShowAction)
                {
                    popupWindowShowAction.IsModal = false;
                    testObserver = popupWindowShowAction.WhenCustomizePopupWindowParams().Do(args => args.View = application.NewView <DetailView>(typeof(R))).FirstAsync().ToUnit().Test();
                }

                detailViewAction.DoTheExecute();
                testObserver.ItemCount.ShouldBe(1);
            }
            else if (listViewAction != null && listViewAction.Active.ResultValue)
            {
                var testObserver = listViewAction.WhenExecuted().Test();
                listViewAction.DoTheExecute();
                testObserver.ItemCount.ShouldBe(1);
            }
            detailViewAction.TargetViewType.ShouldBe(viewType);
            detailViewAction.TargetObjectType.ShouldBe(typeof(NonPersistentObject));
            detailViewAction.Caption.ShouldBe(caption);
            if (listViewAction != null)
            {
                listViewAction.TargetViewType.ShouldBe(viewType);
                listViewAction.TargetObjectType.ShouldBe(typeof(NonPersistentObject));
                listViewAction.Caption.ShouldBe(caption);
            }

            return((T)detailViewAction);
        }
        private static T AssertWindowAction <T>(XafApplication application) where T : ActionBase
        {
            var window     = application.CreateViewWindow();
            var actionBase = window.Controllers.Values.OfType <WindowController>().SelectMany(controller => controller.Actions)
                             .FirstOrDefault(a => a.Id == typeof(T).Name);

            actionBase.ShouldNotBeNull();
            actionBase.Active.ResultValue.ShouldBe(true);
            return((T)actionBase);
        }
        public static async Task Actions_Active_State_when_authentication_not_needed(this XafApplication application, string serviceName)
        {
            var compositeView = application.NewView(ViewType.DetailView, application.Security.UserType);

            compositeView.CurrentObject = compositeView.ObjectSpace.GetObjectByKey(application.Security.UserType, SecuritySystem.CurrentUserId);
            var viewWindow = application.CreateViewWindow();

            viewWindow.SetView(compositeView);

            await ActiveState(viewWindow, false, serviceName).ConfigureAwait(false);
        }
        public static void Actions_are_Activated_For_CurrentUser_Details(this XafApplication application, string serviceName)
        {
            var compositeView = application.NewView(ViewType.DetailView, application.Security.UserType);

            compositeView.CurrentObject = compositeView.ObjectSpace.GetObjectByKey(application.Security.UserType, SecuritySystem.CurrentUserId);
            var viewWindow = application.CreateViewWindow();

            viewWindow.SetView(compositeView);

            viewWindow.ConnectAction(serviceName).Active[nameof(ActionsService.ActivateInUserDetails)].ShouldBeTrue();
            viewWindow.DisconnectAction(serviceName).Active[nameof(ActionsService.ActivateInUserDetails)].ShouldBeTrue();
        }
        public static void Actions_Active_State_when_authentication_needed(this XafApplication application, string serviceName)
        {
            var compositeView = application.NewView(ViewType.DetailView, application.Security.UserType);

            compositeView.CurrentObject = compositeView.ObjectSpace.GetObjectByKey(application.Security.UserType, SecuritySystem.CurrentUserId);
            var viewWindow = application.CreateViewWindow();

            viewWindow.SetView(compositeView);

            viewWindow.ConnectAction(serviceName).Active[nameof(Extensions.Office.Cloud.Extensions.NeedsAuthentication)].ShouldBeTrue();
            viewWindow.DisconnectAction(serviceName).Active[nameof(Extensions.Office.Cloud.Extensions.NeedsAuthentication)].ShouldBeFalse();
        }
Example #6
0
        public static async Task <(Frame frame, GraphServiceClient client)> InitGraphServiceClient(this XafApplication application)
        {
            application.ObjectSpaceProvider.NewMicrosoftAuthentication();
            var todoModel = await application.ReactiveModulesModel().OfficeModel().MicrosoftModel().TodoModel();

            var window = application.CreateViewWindow();

            window.SetView(application.NewView(todoModel.ObjectViews().First().ObjectView));
            var client = await TodoService.Client.FirstAsync().ToTaskWithoutConfigureAwait();

            return(client);
        }
        public static (Window window, BusinessObjects.ApplyTemplateStyle applyTemplateStyle)  SetDocumentStyleManagerDetailView(this XafApplication application)
        {
            var window = application.CreateViewWindow();
            var item   = application.Model.DocumentStyleManager().ApplyTemplateListViews.AddNode <IModelApplyTemplateListViewItem>();

            item.ListView = application.Model.BOModel.GetClass(typeof(DataObject)).DefaultListView;
            window.SetView(application.NewView(ViewType.ListView, typeof(DataObject)));
            var action = window.Action <DocumentStyleManagerModule>().ShowApplyStylesTemplate();

            action.WhenExecuted().FirstAsync()
            .Do(e => e.ShowViewParameters.TargetWindow = TargetWindow.NewWindow).Test();
            return(window, (BusinessObjects.ApplyTemplateStyle)window.View.CurrentObject);
        }
        public static async Task <Window> TestListView(this XafApplication application, Type objectType)
        {
            if (application.GetPlatform() == Platform.Blazor)
            {
                application.CallMethod("CreateMainWindow");
            }
            var listView = application.NewListView(objectType);
            var whenProxyCollectionChanged = ((ProxyCollection)listView.CollectionSource.Collection).Count.ReturnObservable()
                                             .SelectMany(_ => listView.CollectionSource.WhenProxyCollectionChanged()).SubscribeReplay();
            var window = application.CreateViewWindow(() => listView);
            await whenProxyCollectionChanged.FirstAsync();

            return(window);
        }
Example #9
0
        public static async Task <(Frame frame, global::Google.Apis.Calendar.v3.CalendarService service)> InitService(this XafApplication application, bool newAuthentication = true)
        {
            if (newAuthentication)
            {
                application.ObjectSpaceProvider.NewAuthentication();
            }
            var todoModel = await application.ReactiveModulesModel().Office().Google().Calendar();

            var window  = application.CreateViewWindow();
            var service = Calendar.CalendarService.Credentials.FirstAsync().SubscribeReplay();

            window.SetView(application.NewView(todoModel.Items.Select(item => item.ObjectView).First()));
            return(await service.Select(t => (t.frame, t.credential.NewService <global::Google.Apis.Calendar.v3.CalendarService>())).ToTaskWithoutConfigureAwait());
        }
        public static (Window window, BusinessObjects.DocumentStyleManager documentStyleManager) SetDocumentStyleManagerDetailView(
            this XafApplication application, Document document, Action <Window> windowCreated = null)
        {
            var objectSpace          = application.NonPersisteObjectSpace();
            var documentStyleManager = objectSpace.CreateObject <BusinessObjects.DocumentStyleManager>();

            documentStyleManager.Content = document.ToByteArray(DocumentFormat.OpenXml);
            documentStyleManager.SynchronizeStyles();
            var window = application.CreateViewWindow();

            windowCreated?.Invoke(window);
            window.SetView(application.CreateDetailView(objectSpace, documentStyleManager));
            return(window, documentStyleManager);
        }
Example #11
0
        public static async Task <(Frame frame, GraphServiceClient client)> InitGraphServiceClient(this XafApplication application, bool newAuthentication = true)
        {
            if (newAuthentication)
            {
                application.ObjectSpaceProvider.NewAuthentication();
            }
            var todoModel = await application.ReactiveModulesModel().Office().Microsoft().Todo();

            var window  = application.CreateViewWindow();
            var service = MicrosoftTodoService.Client.FirstAsync().SubscribeReplay();

            window.SetView(application.NewView(todoModel.Items.Select(item => item.ObjectView).First()));
            return(await service.ToTaskWithoutConfigureAwait());
        }
        public static async Task <(Frame frame, GraphServiceClient client)> InitGraphServiceClient(this XafApplication application, bool newAuthentication = true)
        {
            if (newAuthentication)
            {
                application.ObjectSpaceProvider.NewAuthentication();
            }

            var todoModel       = application.Model.ToReactiveModule <IModelReactiveModuleOffice>().Office.Microsoft().Calendar();
            var window          = application.CreateViewWindow();
            var service         = CalendarService.Client.Select(tuple => tuple).FirstAsync().SubscribeReplay();
            var modelObjectView = todoModel.Items.Select(item => item.ObjectView).First();

            window.SetView(application.NewView(modelObjectView));
            return(await service.ToTaskWithoutConfigureAwait());
        }
        public static Window ShowDocumentStyleManagerDetailView(this XafApplication application, DataObject dataObject)
        {
            application.Model.EnableShowStyleManager();
            var window = application.CreateViewWindow();

            window.SetView(window.Application.CreateDetailView(dataObject));

            var singleChoiceAction = window.Action <DocumentStyleManagerModule>().ShowStyleManager();
            var testObserver       = application.WhenWindowCreated().Test();

            singleChoiceAction.WhenExecuted().FirstAsync()
            .Do(e => e.ShowViewParameters.TargetWindow = TargetWindow.NewWindow).Test();
            singleChoiceAction.DoExecute(singleChoiceAction.Items.First());
            var managerWindow = testObserver.Items.First();

            return(managerWindow);
        }
        public static async Task Disconnect_Action_Destroys_Connection(this XafApplication application, string serviceName)
        {
            var compositeView = application.NewView(ViewType.DetailView, application.Security.UserType);

            compositeView.CurrentObject = compositeView.ObjectSpace.GetObjectByKey(application.Security.UserType, SecuritySystem.CurrentUserId);
            var viewWindow = application.CreateViewWindow();

            viewWindow.SetView(compositeView);
            var disconnectMicrosoft = viewWindow.DisconnectAction(serviceName);

            if (!disconnectMicrosoft.Active)
            {
                await disconnectMicrosoft.WhenActivated().FirstAsync().ToTaskWithoutConfigureAwait();
            }
            disconnectMicrosoft.DoExecute();

            disconnectMicrosoft.Active[nameof(Extensions.Office.Cloud.Extensions.NeedsAuthentication)].ShouldBeFalse();
            viewWindow.ConnectAction(serviceName).Active[nameof(Extensions.Office.Cloud.Extensions.NeedsAuthentication)].ShouldBeTrue();
        }
        SetApplyTemplateStyleDetailView(this XafApplication application, Document document = null)
        {
            document ??= new RichEditDocumentServer().Document;
            var modelListView             = application.Model.BOModel.GetClass(typeof(DataObject)).DefaultListView;
            var modelDocumentStyleManager = application.Model.DocumentStyleManager();
            var applyTemplateListViewItem = modelDocumentStyleManager.ApplyTemplateListViews.AddNode <IModelApplyTemplateListViewItem>();

            applyTemplateListViewItem.ListView = modelListView;

            var dataObjectSpace = application.CreateObjectSpace();
            var dataObject      = dataObjectSpace.CreateObject <DataObject>();

            dataObject.Content = document.ToByteArray(DocumentFormat.OpenXml);
            dataObjectSpace.CommitChanges();
            var applyTemplateStyle = application.NewApplyStyleTemplate(modelListView, dataObject);
            var detailView         = application.CreateDetailView(applyTemplateStyle);
            var window             = application.CreateViewWindow();

            window.SetView(detailView);
            return(window, applyTemplateStyle);
        }