private static void DoBulkUpdate(XrmCrudDialog crudDialog, string newValue, string field)
        {
            var bulkUpdateDialog = crudDialog.ChildForms.First() as BulkUpdateDialog;

            Assert.IsNotNull(bulkUpdateDialog);
            bulkUpdateDialog.LoadDialog();
            var bulkUpdateEntry = bulkUpdateDialog.Controller.UiItems.First() as ObjectEntryViewModel;

            Assert.IsNotNull(bulkUpdateEntry);
            bulkUpdateEntry.LoadFormSections();
            var fieldField = bulkUpdateEntry.GetRecordFieldFieldViewModel(nameof(BulkUpdateRequest.FieldToSet));

            fieldField.Value = fieldField.ItemsSource.First(kv => kv.Key == field);
            var valueField = bulkUpdateEntry.GetStringFieldFieldViewModel(nameof(BulkUpdateRequest.ValueToSet));

            valueField.Value = newValue;
            bulkUpdateEntry.SaveButtonViewModel.Invoke();
            var completionScreen = bulkUpdateDialog.Controller.UiItems.First() as CompletionScreenViewModel;

            Assert.IsNotNull(completionScreen);
            completionScreen.CompletionDetails.LoadFormSections();
            Assert.IsFalse(completionScreen.CompletionDetails.GetEnumerableFieldViewModel(nameof(BulkUpdateResponse.ResponseItems)).GetGridRecords(false).Records.Any());
            completionScreen.CloseButton.Invoke();
            Assert.IsFalse(crudDialog.ChildForms.Any());
        }
        private static void DoBulkDelete(XrmCrudDialog crudDialog, bool doExecuteMultiples = false)
        {
            var bulkDeleteDialog = crudDialog.ChildForms.First() as BulkDeleteDialog;

            Assert.IsNotNull(bulkDeleteDialog);
            bulkDeleteDialog.LoadDialog();
            bulkDeleteDialog.LoadDialog();
            var bulkUpdateEntry = bulkDeleteDialog.Controller.UiItems.First() as ObjectEntryViewModel;

            Assert.IsNotNull(bulkUpdateEntry);
            var setSizeField = bulkUpdateEntry.GetIntegerFieldFieldViewModel(nameof(BulkUpdateRequest.ExecuteMultipleSetSize));

            setSizeField.Value = doExecuteMultiples ? 3 : 1;
            if (!bulkUpdateEntry.Validate())
            {
                Assert.Fail(bulkUpdateEntry.GetValidationSummary());
            }
            bulkUpdateEntry.SaveButtonViewModel.Invoke();
            var completionScreen = bulkDeleteDialog.Controller.UiItems.First() as CompletionScreenViewModel;

            Assert.IsNotNull(completionScreen);
            completionScreen.CompletionDetails.LoadFormSections();
            Assert.IsFalse(completionScreen.CompletionDetails.GetEnumerableFieldViewModel(nameof(BulkDeleteResponse.ResponseItems)).GetGridRecords(false).Records.Any());
            completionScreen.CompletionDetails.CancelButtonViewModel.Invoke();
            Assert.IsFalse(crudDialog.ChildForms.Any());
        }
        private void DoBulkCopyFieldValue(XrmCrudDialog crudDialog, string sourceField, string targetField, bool copyIfNull = false, bool overwriteIfPopulated = false, bool doExecuteMultiples = false)
        {
            var bulkUpdateDialog = crudDialog.ChildForms.First() as BulkCopyFieldValueDialog;

            Assert.IsNotNull(bulkUpdateDialog);
            bulkUpdateDialog.LoadDialog();
            var bulkUpdateEntry = bulkUpdateDialog.Controller.UiItems.First() as ObjectEntryViewModel;

            Assert.IsNotNull(bulkUpdateEntry);
            bulkUpdateEntry.LoadFormSections();
            var fieldField = bulkUpdateEntry.GetRecordFieldFieldViewModel(nameof(BulkCopyFieldValueRequest.SourceField));

            fieldField.Value = fieldField.ItemsSource.First(kv => kv.Key == sourceField);
            var valueField = bulkUpdateEntry.GetRecordFieldFieldViewModel(nameof(BulkCopyFieldValueRequest.TargetField));

            valueField.Value = valueField.ItemsSource.First(kv => kv.Key == targetField);
            var setSizeField = bulkUpdateEntry.GetIntegerFieldFieldViewModel(nameof(BulkUpdateRequest.ExecuteMultipleSetSize));

            setSizeField.Value = doExecuteMultiples ? 3 : 1;
            bulkUpdateEntry.GetBooleanFieldFieldViewModel(nameof(BulkCopyFieldValueRequest.CopyIfNull)).Value           = copyIfNull;
            bulkUpdateEntry.GetBooleanFieldFieldViewModel(nameof(BulkCopyFieldValueRequest.OverwriteIfPopulated)).Value = overwriteIfPopulated;
            if (!bulkUpdateEntry.Validate())
            {
                Assert.Fail(bulkUpdateEntry.GetValidationSummary());
            }
            bulkUpdateEntry.SaveButtonViewModel.Invoke();
            var completionScreen = bulkUpdateDialog.Controller.UiItems.First() as CompletionScreenViewModel;

            Assert.IsNotNull(completionScreen);
            completionScreen.CompletionDetails.LoadFormSections();
            Assert.IsFalse(completionScreen.CompletionDetails.GetEnumerableFieldViewModel(nameof(BulkCopyFieldValueResponse.ResponseItems)).GetGridRecords(false).Records.Any());
            completionScreen.CompletionDetails.CancelButtonViewModel.Invoke();
            Assert.IsFalse(crudDialog.ChildForms.Any());
        }
        private static void EnterNewRecord(XrmCrudDialog crudDialog)
        {
            var entryForm = crudDialog.QueryViewModel.ChildForms.First() as RecordEntryFormViewModel;

            Assert.IsNotNull(entryForm);
            entryForm.LoadFormSections();
            entryForm.GetStringFieldFieldViewModel(Fields.account_.name).Value = "Test Script Record";
            entryForm.SaveButtonViewModel.Invoke();
            Assert.IsFalse(crudDialog.QueryViewModel.ChildForms.Any());
        }
        private static void DoBulkDelete(XrmCrudDialog crudDialog)
        {
            var bulkDeleteDialog = crudDialog.ChildForms.First() as BulkDeleteDialog;

            Assert.IsNotNull(bulkDeleteDialog);
            bulkDeleteDialog.LoadDialog();
            bulkDeleteDialog.LoadDialog();
            var bulkUpdateEntry = bulkDeleteDialog.Controller.UiItems.First() as ObjectEntryViewModel;

            Assert.IsNotNull(bulkDeleteDialog);
            bulkUpdateEntry.SaveButtonViewModel.Invoke();
            var completionScreen = bulkDeleteDialog.Controller.UiItems.First() as CompletionScreenViewModel;

            Assert.IsNotNull(completionScreen);
            completionScreen.CompletionDetails.LoadFormSections();
            Assert.IsFalse(completionScreen.CompletionDetails.GetEnumerableFieldViewModel(nameof(BulkDeleteResponse.ResponseItems)).GetGridRecords(false).Records.Any());
            completionScreen.CloseButton.Invoke();
            Assert.IsFalse(crudDialog.ChildForms.Any());
        }
        private static void DoBulkReplace(XrmCrudDialog crudDialog, string field, string oldValue, string newValue, bool doExecuteMultiples = false)
        {
            var bulkUpdateDialog = crudDialog.ChildForms.First() as BulkReplaceDialog;

            Assert.IsNotNull(bulkUpdateDialog);
            bulkUpdateDialog.LoadDialog();
            var bulkUpdateEntry = bulkUpdateDialog.Controller.UiItems.First() as ObjectEntryViewModel;

            Assert.IsNotNull(bulkUpdateEntry);
            bulkUpdateEntry.LoadFormSections();

            var fieldGrid = bulkUpdateEntry.GetEnumerableFieldViewModel(nameof(BulkReplaceRequest.FieldsToReplace));

            fieldGrid.AddRow();
            var fieldSelection = fieldGrid.GridRecords.First().GetRecordFieldFieldViewModel(nameof(BulkReplaceRequest.FieldToReplace.RecordField));

            fieldSelection.Value = fieldSelection.ItemsSource.First(kv => kv.Key == field);

            var replacementsGrid = bulkUpdateEntry.GetEnumerableFieldViewModel(nameof(BulkReplaceRequest.ReplacementTexts));

            replacementsGrid.AddRow();
            replacementsGrid.GridRecords.First().GetStringFieldFieldViewModel(nameof(BulkReplaceRequest.ReplacementText.OldText)).Value = oldValue;
            replacementsGrid.GridRecords.First().GetStringFieldFieldViewModel(nameof(BulkReplaceRequest.ReplacementText.NewText)).Value = newValue;

            var setSizeField = bulkUpdateEntry.GetIntegerFieldFieldViewModel(nameof(BulkReplaceRequest.ExecuteMultipleSetSize));

            setSizeField.Value = doExecuteMultiples ? 3 : 1;
            if (!bulkUpdateEntry.Validate())
            {
                Assert.Fail(bulkUpdateEntry.GetValidationSummary());
            }
            bulkUpdateEntry.SaveButtonViewModel.Invoke();
            var completionScreen = bulkUpdateDialog.Controller.UiItems.First() as CompletionScreenViewModel;

            Assert.IsNotNull(completionScreen);
            completionScreen.CompletionDetails.LoadFormSections();
            Assert.IsFalse(completionScreen.CompletionDetails.GetEnumerableFieldViewModel(nameof(BulkReplaceResponse.ResponseItems)).GetGridRecords(false).Records.Any());
            completionScreen.CompletionDetails.CancelButtonViewModel.Invoke();
            Assert.IsFalse(crudDialog.ChildForms.Any());
        }