public void VsixSolutionWizardTest() { //okay so this wizard contains a dialog spawned different to the others //since it is loaded prior to the solution being created //this script just verifies the settings are netered into the dialog wihtout a crash with no visual studio solutoion context etc. var packageSettings = new XrmPackageSettings(); var container = new VsixDependencyContainer(); //purpose of this is to load modules registrations into the container as per done in the actual wizard Factory.CreateJosephMXrmVsixApp(new FakeVisualStudioService(), container, isNonSolutionExplorerContext: true); //okay spawn the wizards entry method with a fake controller var applicationController = new FakeVsixApplicationController(container); XrmSolutionWizardBase.RunWizardSettingsEntry(packageSettings, applicationController, "Fake.Name"); //okay so now we have navigated to the package entry //in our application controller via the wizard //here I inject that application conctroller into a fake application //so that I can use methods for auto testing the dialog which has spawned var fakeVsixApplication = TestApplication.CreateTestApplication(applicationController); fakeVsixApplication.AddModule <XrmPackageSettingsModule>(); var dialog = fakeVsixApplication.GetNavigatedDialog <XrmPackageSettingsDialog>(); //okay so the package entry dialog should redirect us to the connection entry when started as we dont have a connection yet var connectionEntryDialog = dialog.SubDialogs.First(); var connectionEntry = fakeVsixApplication.GetSubObjectEntryViewModel(connectionEntryDialog); var connectionToEnter = GetXrmRecordConfiguration(); fakeVsixApplication.EnterAndSaveObject(connectionToEnter, connectionEntry); //okay now the connection is entered it should navigate to the package settings entry var packageSettingsEntry = fakeVsixApplication.GetSubObjectEntryViewModel(dialog, index: 1); Assert.AreEqual("Fake", packageSettingsEntry.GetStringFieldFieldViewModel(nameof(XrmPackageSettings.SolutionObjectPrefix)).Value); //we want to verify that the object had the settings passed into it as well as the lookup connection works packageSettingsEntry.GetBooleanFieldFieldViewModel(nameof(XrmPackageSettings.AddToSolution)).Value = true; var solutionPicklistField = packageSettingsEntry.GetLookupFieldFieldViewModel(nameof(XrmPackageSettings.Solution)); solutionPicklistField.SelectedItem = solutionPicklistField.ItemsSource.ElementAt(1); Assert.IsTrue(!string.IsNullOrWhiteSpace(packageSettingsEntry.GetStringFieldFieldViewModel(nameof(XrmPackageSettings.SolutionDynamicsCrmPrefix)).Value)); var connectionsubGrid = packageSettingsEntry.GetEnumerableFieldViewModel(nameof(XrmPackageSettings.Connections)); Assert.IsTrue(connectionsubGrid.GridRecords.Any()); Assert.AreEqual(connectionToEnter.OrganizationUniqueName, connectionsubGrid.GridRecords.First().GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).Value); packageSettingsEntry.SaveButtonViewModel.Invoke(); Assert.IsTrue(packageSettings.Connections.Any()); Assert.AreEqual(connectionToEnter.OrganizationUniqueName, packageSettings.Connections.First().OrganizationUniqueName); }
protected virtual TestApplication CreateAndLoadTestApplication <TModule>(ApplicationControllerBase applicationController = null, ISettingsManager settingsManager = null, bool loadXrmConnection = true) where TModule : ModuleBase, new() { var testApplication = TestApplication.CreateTestApplication(applicationController, settingsManager); testApplication.AddModule <TModule>(); return(testApplication); }
public void VsixSolutionWizardTest() { //okay so this wizard contains a dialog spawned different to the others //since it is loaded prior to the solution being created //this script just verifies the settings are netered into the dialog wihtout a crash with no visual studio solutoion context etc. var packageSettings = new XrmPackageSettings { SolutionDynamicsCrmPrefix = "FAKE", SolutionObjectPrefix = "Fake" }; //okay spawn the wizards entry method with a fake controller var container = new VsixDependencyContainer(); var applicationController = new FakeVsixApplicationController(container); XrmSolutionWizardBase.RunWizardSettingsEntry(packageSettings, applicationController); //fake applcation simply to use its navigation and entry methods var fakeVsixApplication = TestApplication.CreateTestApplication(applicationController); //okay so the package entry dialgo should redirect us to the conneciton entry when started as we don;t have a connection yet var dialog = fakeVsixApplication.GetNavigatedDialog <XrmPackageSettingsDialog>(); var connectionEntryDialog = dialog.SubDialogs.First(); var connectionEntry = fakeVsixApplication.GetSubObjectEntryViewModel(connectionEntryDialog); var connectionToEnter = GetXrmRecordConfiguration(); fakeVsixApplication.EnterAndSaveObject(connectionToEnter, connectionEntry); //okay now the conneciton is entered it should navigate to the package settings entry var packageSettingsEntry = fakeVsixApplication.GetSubObjectEntryViewModel(dialog, index: 1); //we want to verify that the object had the settings passed into it as well as the lookup connection works packageSettingsEntry.GetBooleanFieldFieldViewModel(nameof(XrmPackageSettings.AddToSolution)).Value = true; var solutionPicklistField = packageSettingsEntry.GetLookupFieldFieldViewModel(nameof(XrmPackageSettings.Solution)); solutionPicklistField.SelectedItem = solutionPicklistField.ItemsSource.First(); var connectionsubGrid = packageSettingsEntry.GetEnumerableFieldViewModel(nameof(XrmPackageSettings.Connections)); Assert.IsTrue(connectionsubGrid.GridRecords.Any()); Assert.AreEqual(connectionToEnter.OrganizationUniqueName, connectionsubGrid.GridRecords.First().GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).Value); packageSettingsEntry.SaveButtonViewModel.Invoke(); Assert.IsTrue(packageSettings.Connections.Any()); Assert.AreEqual(connectionToEnter.OrganizationUniqueName, packageSettings.Connections.First().OrganizationUniqueName); if (applicationController.GetObjects().Any()) { Assert.Inconclusive("Haven't verified closure of the form after entry instead of navigation to completion screen"); } }
public void XrmConnectionModuleTestEnterConnection() { var recordConnection = new XrmConfigurationMapper().Map(XrmConfiguration as XrmConfiguration); //clear all saved settings for test script app var testApplication = TestApplication.CreateTestApplication(); var settingsFolder = testApplication.Controller.SettingsPath; FileUtility.DeleteFiles(settingsFolder); //create app with saved connections module testApplication = TestApplication.CreateTestApplication(); testApplication.AddModule <SavedXrmConnectionsModule>(); //navgiate to adding saved conneciton var module = testApplication.GetModule <XrmConnectionModule>(); module.DialogCommand(); var dialog = testApplication.GetNavigatedDialog <XrmConnectionDialog>(); var connectionEntry = testApplication.GetSubObjectEntryViewModel(dialog); //verify autocompletes only display for those not reliant on existing values Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Domain)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); //enter the connection connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Name)).Value = "Script Entry 1"; connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetPicklistFieldFieldViewModel(nameof(XrmRecordConfiguration.AuthenticationProviderType)).Value = connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).ItemsSource.First(p => p == PicklistOption.EnumToPicklistOption(recordConnection.AuthenticationProviderType)); connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).Value = recordConnection.DiscoveryServiceAddress; connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Domain)).Value = recordConnection.Domain; connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Username)).Value = recordConnection.Username; connectionEntry.GetFieldViewModel(nameof(XrmRecordConfiguration.Password)).ValueObject = recordConnection.Password; //including using autocomplete for the organisation unique name connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.SelectedRow = connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.First(r => r.GetStringFieldFieldViewModel(nameof(Xrm.Organisation.UniqueName)).Value == recordConnection.OrganizationUniqueName); connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.SetToSelectedRow(); Assert.AreEqual(recordConnection.OrganizationUniqueName, connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).Value); //save the connection and verify added to grid Assert.IsTrue(connectionEntry.Validate()); connectionEntry.SaveButtonViewModel.Invoke(); }
protected virtual TestApplication CreateAndLoadTestApplication <TModule>(ApplicationControllerBase applicationController = null, ISettingsManager settingsManager = null, bool loadXrmConnection = true) where TModule : ModuleBase, new() { var testApplication = TestApplication.CreateTestApplication(applicationController, settingsManager); testApplication.AddModule <TModule>(); if (loadXrmConnection) { XrmConnectionModule.RefreshXrmServices(GetXrmRecordConfiguration(), testApplication.Controller); testApplication.Controller.RegisterInstance <ISavedXrmConnections>(new SavedXrmConnections.SavedXrmConnections { Connections = new[] { GetSavedXrmRecordConfiguration() } }); } return(testApplication); }
public void ObjectEncryptionTest() { FileUtility.DeleteFiles(TestingFolder); var application = TestApplication.CreateTestApplication(); application.AddModule <ObjectEncryptModule <TestObjectEncryptDialog, TestClassToEncrypt> >(); var instance = new TestClassToEncrypt(); PopulateObject(instance); application.NavigateAndProcessDialog <ObjectEncryptModule <TestObjectEncryptDialog, TestClassToEncrypt>, TestObjectEncryptDialog>(new object[] { instance, new ObjectEncryptToFolder() { SaveToFolder = new Folder(TestingFolder) } }); Assert.IsTrue(FileUtility.GetFiles(TestingFolder).Any()); }
public void SavedXrmConnectionsModuleTestEnterSavedConnections() { var recordConnection = new XrmConfigurationMapper().Map(XrmConfiguration as XrmConfiguration); //clear all saved settings for test script app var testApplication = TestApplication.CreateTestApplication(); var settingsFolder = testApplication.Controller.SettingsPath; FileUtility.DeleteFiles(settingsFolder); //create app with saved connections module testApplication = TestApplication.CreateTestApplication(); testApplication.AddModule <SavedXrmConnectionsModule>(); //navgiate to adding saved conneciton var dialog = testApplication.NavigateToDialog <SavedXrmConnectionsModule, SavedXrmConnectionsDialog>(); var savedConnectionsEntryForm = testApplication.GetSubObjectEntryViewModel(dialog); //click to add a connection to the grid var connectionsGrid = savedConnectionsEntryForm.GetEnumerableFieldViewModel(nameof(SavedXrmConnections.SavedXrmConnections.Connections)); connectionsGrid.DynamicGridViewModel.AddRowButton.Invoke(); var connectionEntry = testApplication.GetSubObjectEntryViewModel(savedConnectionsEntryForm); //verify autocompletes only display for those not reliant on existing values Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Domain)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); //enter the connection connectionEntry.GetBooleanFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Active)).Value = true; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Name)).Value = "Script Entry 1"; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).Value = connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).ItemsSource.First(p => p == PicklistOption.EnumToPicklistOption(recordConnection.AuthenticationProviderType)); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).Value = recordConnection.DiscoveryServiceAddress; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Domain)).Value = recordConnection.Domain; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).Value = recordConnection.Username; connectionEntry.GetFieldViewModel(nameof(SavedXrmRecordConfiguration.Password)).ValueObject = recordConnection.Password; //including using autocomplete for the organisation unique name connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.SelectedRow = connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.First(r => r.GetStringFieldFieldViewModel(nameof(Xrm.Organisation.UniqueName)).Value == recordConnection.OrganizationUniqueName); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.SetToSelectedRow(); Assert.AreEqual(recordConnection.OrganizationUniqueName, connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).Value); //save the connection and verify added to grid Assert.IsTrue(connectionEntry.Validate()); connectionEntry.SaveButtonViewModel.Invoke(); Assert.IsFalse(savedConnectionsEntryForm.ChildForms.Any()); connectionsGrid = savedConnectionsEntryForm.GetEnumerableFieldViewModel(nameof(SavedXrmConnections.SavedXrmConnections.Connections)); Assert.AreEqual(1, connectionsGrid.GridRecords.Count); //save the connections and verify reloads same form with the connection Assert.IsTrue(savedConnectionsEntryForm.Validate()); savedConnectionsEntryForm.SaveButtonViewModel.Invoke(); savedConnectionsEntryForm = savedConnectionsEntryForm = testApplication.GetSubObjectEntryViewModel(dialog, index: 1); connectionsGrid = savedConnectionsEntryForm.GetEnumerableFieldViewModel(nameof(SavedXrmConnections.SavedXrmConnections.Connections)); Assert.AreEqual(1, connectionsGrid.GridRecords.Count); //go to add another connection and verify username now has autocomplete due to existing value connectionsGrid.DynamicGridViewModel.AddRowButton.Invoke(); connectionEntry = testApplication.GetSubObjectEntryViewModel(savedConnectionsEntryForm); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); }