예제 #1
0
        public void PublishSProcCommandHandle02()
        {
            var project = Substitute.For <EnvDTE.Project>();

            project.FileName.Returns("db.sqlproj");

            _pss.GetProjectFiles(null).ReturnsForAnyArgs(new string[] { "file.r" });

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

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

            var sol      = Substitute.For <EnvDTE.Solution>();
            var projects = Substitute.For <EnvDTE.Projects>();

            projects.GetEnumerator().Returns((new EnvDTE.Project[] { project }).GetEnumerator());
            sol.Projects.Returns(projects);
            _pss.GetSolution().Returns(sol);

            var cmd = new PublishSProcCommand(_appShell, _pss);

            cmd.TryHandleCommand(null, RPackageCommandId.icmdPublishSProc, false, 0, IntPtr.Zero, IntPtr.Zero).Should().BeTrue();
            _appShell.Received().ShowErrorMessage(Resources.SqlPublishDialog_NoSProcFiles);
        }
예제 #2
0
        private IReadOnlyList <string> GetDatabaseProjects()
        {
            _noDbProjects = false;
            var projectMap = new Dictionary <string, EnvDTE.Project>();
            var solution   = _pss.GetSolution();
            var projects   = new List <string>();

            foreach (EnvDTE.Project project in solution.Projects)
            {
                try {
                    // Some projects throw 'not implemented'
                    var projectFileName = project.FileName;
                    if (!string.IsNullOrEmpty(projectFileName) && Path.GetExtension(projectFileName).EqualsIgnoreCase(".sqlproj"))
                    {
                        projects.Add(project.Name);
                    }
                } catch (NotImplementedException) { } catch (COMException) { }
            }

            if (projects.Count == 0)
            {
                _noDbProjects = true;
                projects.Add(Resources.SqlPublishDialog_NoDatabaseProjects);
            }
            return(projects);
        }
예제 #3
0
        public async Task ProjectList()
        {
            var projects = Substitute.For <EnvDTE.Projects>();
            var p1       = Substitute.For <EnvDTE.Project>();

            p1.FileName.Returns("project1.sqlproj");
            p1.Name.Returns("project1");
            var p2 = Substitute.For <EnvDTE.Project>();

            p2.FileName.Returns("project2.sqlproj");
            p2.Name.Returns("project2");
            var p3 = Substitute.For <EnvDTE.Project>();

            p3.FileName.Returns("project3.csproj");
            p3.Name.Returns("project3");
            projects.GetEnumerator().Returns((new EnvDTE.Project[] { p1, p2, p3 }).GetEnumerator());

            var sol = Substitute.For <EnvDTE.Solution>();

            sol.Projects.Returns(projects);
            _pss.GetSolution().Returns(sol);

            _storage.GetSetting(SqlSProcPublishSettings.TargetTypeSettingName, PublishTargetType.Dacpac).Returns(PublishTargetType.Project);
            _storage.GetSetting(SqlSProcPublishSettings.TargetProjectSettingName, Arg.Any <string>()).Returns(("project2"));

            var settings = new SqlSProcPublishSettings(_storage);
            var model    = await SqlPublishOptionsDialogViewModel.CreateAsync(settings, _coreShell, _pss, _pcsp);

            model.Settings.TargetType.Should().Be(PublishTargetType.Project);
            model.Settings.TargetProject.Should().Be("project2");

            model.Targets.Should().HaveCount(2);
            model.Targets[0].Should().Be("project1");
            model.Targets[1].Should().Be("project2");
            model.SelectedTargetIndex.Should().Be(1);
        }