Exemplo n.º 1
0
        public void AddDbConnectionCommand() {
            var coll = new ConfigurationSettingCollection();
            coll.Add(new ConfigurationSetting("dbConnection1", "1", ConfigurationSettingValueType.String));
            coll.Add(new ConfigurationSetting("dbConnection2", "1", ConfigurationSettingValueType.String));
            coll.Add(new ConfigurationSetting("dbConnection4", "1", ConfigurationSettingValueType.String));

            var configuredProject = Substitute.For<ConfiguredProject>();
            var ac = Substitute.For<IProjectConfigurationSettingsAccess>();
            ac.Settings.Returns(coll);
            var csp = Substitute.For<IProjectConfigurationSettingsProvider>();
            csp.OpenProjectSettingsAccessAsync(configuredProject).Returns(ac);

            var properties = new ProjectProperties(Substitute.For<ConfiguredProject>());
            var dbcs = Substitute.For<IDbConnectionService>();
            dbcs.EditConnectionString(null).Returns("DSN");

            var session = Substitute.For<IRSession>();
            session.EvaluateAsync(null, REvaluationKind.NoResult).ReturnsForAnyArgs(Task.FromResult(new REvaluationResult()));
            session.IsHostRunning.Returns(true);
            var operations = Substitute.For<IRInteractiveWorkflowOperations>();

            var workflow = Substitute.For<IRInteractiveWorkflow>();
            workflow.RSession.Returns(session);
            workflow.Operations.Returns(operations);

            var ucp = Substitute.For<UnconfiguredProject>();
            ucp.LoadedConfiguredProjects.Returns(new ConfiguredProject[] { configuredProject });
            var vsbc = Substitute.For<IVsBrowseObjectContext>();
            vsbc.UnconfiguredProject.Returns(ucp); // IVsBrowseObjectContext.ConfiguredProject

            var dteProj = Substitute.For<EnvDTE.Project>();
            dteProj.Object.Returns(vsbc); // dteProject?.Object as IVsBrowseObjectContext

            object extObject;
            var hier = Substitute.For<IVsHierarchy>();
            hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ExtObject, out extObject)
                .Returns(x => {
                    x[2] = dteProj;
                    return VSConstants.S_OK;
                });

            var pss = Substitute.For<IProjectSystemServices>();
            pss.GetSelectedProject<IVsHierarchy>().Returns(hier);

            var cmd = new AddDbConnectionCommand(dbcs, pss, csp, workflow);
            cmd.Enabled.Should().BeTrue();
            cmd.Invoke(null, IntPtr.Zero, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);

            coll.Should().HaveCount(4);
            var s = coll.GetSetting("dbConnection3");
            s.Value.Should().Be("DSN");
            s.ValueType.Should().Be(ConfigurationSettingValueType.String);
            s.Category.Should().Be(ConnectionStringEditor.ConnectionStringEditorCategory);
            s.EditorType.Should().Be(ConnectionStringEditor.ConnectionStringEditorName);
            s.Description.Should().Be(Resources.ConnectionStringDescription);

            var expected = "if (!exists('settings')) { settings <- as.environment(list()); }; if (is.environment(settings)) { settings$dbConnection3 = \"DSN\"; }";
            operations.Received(1).EnqueueExpression(expected, true);
        }
Exemplo n.º 2
0
        private void ConfigureSettingAccessMock(IEnumerable <IConfigurationSetting> settings)
        {
            var confProj = Substitute.For <ConfiguredProject>();
            var unconf   = Substitute.For <UnconfiguredProject>();

            unconf.LoadedConfiguredProjects.Returns((IEnumerable <ConfiguredProject>) new ConfiguredProject[] { confProj });
            var browseContext = Substitute.For <IVsBrowseObjectContext>();

            browseContext.UnconfiguredProject.Returns(unconf);

            var dteProj = Substitute.For <EnvDTE.Project>();

            dteProj.Object.Returns(browseContext);

            var access = Substitute.For <IProjectConfigurationSettingsAccess>();
            var coll   = new ConfigurationSettingCollection();

            foreach (var s in settings)
            {
                coll.Add(s);
            }
            access.Settings.Returns(coll);
            _pcsp.OpenProjectSettingsAccessAsync(confProj).Returns(Task.FromResult(access));

            object ext;
            var    hier = Substitute.For <IVsHierarchy>();

            hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ExtObject, out ext).Returns((c) => {
                c[2] = dteProj;
                return(VSConstants.S_OK);
            });
            _pss.GetSelectedProject <IVsHierarchy>().Returns(hier);
        }
        private void ConfigureSettingAccessMock(IEnumerable<IConfigurationSetting> settings) {

            var confProj = Substitute.For<ConfiguredProject>();
            var unconf = Substitute.For<UnconfiguredProject>();
            unconf.LoadedConfiguredProjects.Returns((IEnumerable<ConfiguredProject>)new ConfiguredProject[] { confProj });
            var browseContext = Substitute.For<IVsBrowseObjectContext>();
            browseContext.UnconfiguredProject.Returns(unconf);

            var dteProj = Substitute.For<EnvDTE.Project>();
            dteProj.Object.Returns(browseContext);

            var access = Substitute.For<IProjectConfigurationSettingsAccess>();
            var coll = new ConfigurationSettingCollection();
            foreach (var s in settings) {
                coll.Add(s);
            }
            access.Settings.Returns(coll);
            _pcsp.OpenProjectSettingsAccessAsync(confProj).Returns(Task.FromResult(access));

            object ext;
            var hier = Substitute.For<IVsHierarchy>();
            hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ExtObject, out ext).Returns((c) => {
                c[2] = dteProj;
                return VSConstants.S_OK;
            });
            _pss.GetSelectedProject<IVsHierarchy>().Returns(hier);

            _coreShell.When(cs => cs.DispatchOnUIThread(Arg.Any<Action>())).Do(c => {
                var action = (Action)c.Args()[0];
                action();
            });
        }
Exemplo n.º 4
0
        public void AddDbConnectionCommand()
        {
            var coll = new ConfigurationSettingCollection();

            coll.Add(new ConfigurationSetting("dbConnection1", "1", ConfigurationSettingValueType.String));
            coll.Add(new ConfigurationSetting("dbConnection2", "1", ConfigurationSettingValueType.String));
            coll.Add(new ConfigurationSetting("dbConnection4", "1", ConfigurationSettingValueType.String));

            var configuredProject = Substitute.For <ConfiguredProject>();
            var ac = Substitute.For <IProjectConfigurationSettingsAccess>();

            ac.Settings.Returns(coll);
            var csp = Substitute.For <IProjectConfigurationSettingsProvider>();

            csp.OpenProjectSettingsAccessAsync(configuredProject).Returns(ac);

            var properties = new ProjectProperties(Substitute.For <ConfiguredProject>());
            var dbcs       = Substitute.For <IDbConnectionService>();

            dbcs.EditConnectionString(null).Returns("DSN");

            var session = Substitute.For <IRSession>();

            session.EvaluateAsync(null, REvaluationKind.NoResult).ReturnsForAnyArgs(Task.FromResult(new REvaluationResult()));
            session.IsHostRunning.Returns(true);
            var operations = Substitute.For <IRInteractiveWorkflowOperations>();

            var workflow = Substitute.For <IRInteractiveWorkflow>();

            workflow.RSession.Returns(session);
            workflow.Operations.Returns(operations);

            var ucp = Substitute.For <UnconfiguredProject>();

            ucp.LoadedConfiguredProjects.Returns(new ConfiguredProject[] { configuredProject });
            var vsbc = Substitute.For <IVsBrowseObjectContext>();

            vsbc.UnconfiguredProject.Returns(ucp); // IVsBrowseObjectContext.ConfiguredProject

            var dteProj = Substitute.For <EnvDTE.Project>();

            dteProj.Object.Returns(vsbc); // dteProject?.Object as IVsBrowseObjectContext

            object extObject;
            var    hier = Substitute.For <IVsHierarchy>();

            hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ExtObject, out extObject)
            .Returns(x => {
                x[2] = dteProj;
                return(VSConstants.S_OK);
            });

            var pss = Substitute.For <IProjectSystemServices>();

            pss.GetSelectedProject <IVsHierarchy>().Returns(hier);

            var cmd = new AddDbConnectionCommand(dbcs, pss, csp, workflow);

            cmd.Enabled.Should().BeTrue();
            cmd.Invoke(null, IntPtr.Zero, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);

            coll.Should().HaveCount(4);
            var s = coll.GetSetting("dbConnection3");

            s.Value.Should().Be("DSN");
            s.ValueType.Should().Be(ConfigurationSettingValueType.String);
            s.Category.Should().Be(ConnectionStringEditor.ConnectionStringEditorCategory);
            s.EditorType.Should().Be(ConnectionStringEditor.ConnectionStringEditorName);
            s.Description.Should().Be(Resources.ConnectionStringDescription);

            operations.Received(1).EnqueueExpression(Invariant($"dbConnection3 <- 'DSN'"), true);
        }