Example #1
0
        private void RunDialogAndAddMessage(TestApplication testApplication, string message)
        {
            var dialog          = testApplication.NavigateToDialog <ManagePluginTriggersModule, ManagePluginTriggersDialog>();
            var entryViewModel  = testApplication.GetSubObjectEntryViewModel(dialog);
            var triggersSubGrid = entryViewModel.SubGrids.First();

            triggersSubGrid.DynamicGridViewModel.AddRowButton.Invoke();
            var triggerEntryForm = testApplication.GetSubObjectEntryViewModel(entryViewModel);

            foreach (var field in triggerEntryForm.FieldViewModels)
            {
                if (field.ValueObject == null)
                {
                    if (field is LookupFieldViewModel)
                    {
                        var typeFieldViewModel = (LookupFieldViewModel)field;
                        if (field.FieldName == "Message")
                        {
                            typeFieldViewModel.Value = typeFieldViewModel.LookupService.ToLookup(typeFieldViewModel.ItemsSource.First(m => m.Name == message).Record);
                        }
                        else if (typeFieldViewModel.UsePicklist)
                        {
                            typeFieldViewModel.Value = typeFieldViewModel.LookupService.ToLookup(typeFieldViewModel.ItemsSource.First(p => p.Record != null).Record);
                        }
                        ;
                    }
                    if (field is PicklistFieldViewModel)
                    {
                        var typeFieldViewModel = (PicklistFieldViewModel)field;
                        typeFieldViewModel.Value = typeFieldViewModel.ItemsSource.First();
                    }
                    if (field is RecordTypeFieldViewModel)
                    {
                        var typeFieldViewModel = (RecordTypeFieldViewModel)field;
                        typeFieldViewModel.Value = typeFieldViewModel.ItemsSource.First();
                    }
                    if (field.FieldName == nameof(PluginTrigger.FilteringFields) && message == "Update")
                    {
                        var multiSelectField = triggerEntryForm.GetFieldViewModel <RecordFieldMultiSelectFieldViewModel>(nameof(PluginTrigger.FilteringFields));
                        SelectItems(multiSelectField, 1, 2);
                    }
                    if (field.FieldName == nameof(PluginTrigger.PreImageAllFields) && message == "Update")
                    {
                        triggerEntryForm.GetFieldViewModel <BooleanFieldViewModel>(nameof(PluginTrigger.PreImageAllFields)).Value = false;
                    }
                    if (field.FieldName == nameof(PluginTrigger.PreImageFields) && message == "Update")
                    {
                        var multiSelectField = triggerEntryForm.GetFieldViewModel <RecordFieldMultiSelectFieldViewModel>(nameof(PluginTrigger.PreImageFields));
                        SelectItems(multiSelectField, 1, 2);
                    }
                }
            }
            triggerEntryForm.GetPicklistFieldFieldViewModel(nameof(PluginTrigger.Mode)).ValueObject        = PluginTrigger.PluginMode.Asynch;
            triggerEntryForm.GetPicklistFieldFieldViewModel(nameof(PluginTrigger.Stage)).ValueObject       = PluginTrigger.PluginStage.PostEvent;
            triggerEntryForm.GetBooleanFieldFieldViewModel(nameof(PluginTrigger.PreImageAllFields)).Value  = true;
            triggerEntryForm.GetLookupFieldFieldViewModel(nameof(PluginTrigger.SpecificUserContext)).Value = null;
            var filteringAttributesField = triggerEntryForm.GetFieldViewModel <RecordFieldMultiSelectFieldViewModel>(nameof(PluginTrigger.FilteringFields));

            DeselectAll(filteringAttributesField);

            Assert.IsTrue(triggerEntryForm.Validate());
            triggerEntryForm.SaveButtonViewModel.Invoke();

            Assert.IsTrue(entryViewModel.Validate());
            entryViewModel.SaveButtonViewModel.Invoke();

            var response = dialog.CompletionItem as ManagePluginTriggersResponse;

            Assert.IsFalse(response.HasError);
        }