示例#1
0
 /// <summary>
 /// Retrieves list of files that represent stored procedures in R
 /// </summary>
 /// <returns></returns>
 public static IEnumerable<string> GetSProcFiles(this EnvDTE.Project project, IProjectSystemServices pss) {
     var rFiles = pss.GetProjectFiles(project).Where(x => Path.GetExtension(x).EqualsIgnoreCase(".R"));
     var sqlFiles = new HashSet<string>(pss.GetProjectFiles(project).Where(x => Path.GetExtension(x).EqualsIgnoreCase(".sql")));
     return rFiles.Where(x =>
                 sqlFiles.Contains(x.ToQueryFilePath(), StringComparer.OrdinalIgnoreCase) &&
                 sqlFiles.Contains(x.ToSProcFilePath(), StringComparer.OrdinalIgnoreCase));
 }
示例#2
0
        /// <summary>
        /// Retrieves list of files that represent stored procedures in R
        /// </summary>
        /// <returns></returns>
        public static IEnumerable <string> GetSProcFiles(this EnvDTE.Project project, IProjectSystemServices pss)
        {
            var rFiles   = pss.GetProjectFiles(project).Where(x => Path.GetExtension(x).EqualsIgnoreCase(".R"));
            var sqlFiles = new HashSet <string>(pss.GetProjectFiles(project).Where(x => Path.GetExtension(x).EqualsIgnoreCase(".sql")));

            return(rFiles.Where(x =>
                                sqlFiles.Contains(x.ToQueryFilePath(), StringComparer.OrdinalIgnoreCase) &&
                                sqlFiles.Contains(x.ToSProcFilePath(), StringComparer.OrdinalIgnoreCase)));
        }
示例#3
0
        public void PublishSProcCommandHandle01()
        {
            _pss.GetSelectedProject <IVsHierarchy>().Returns((IVsHierarchy)null);

            _pss.GetProjectFiles(null).ReturnsForAnyArgs(new string[] { "file.r" });
            var hier = Substitute.For <IVsHierarchy>();

            object ext;

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

            var cmd = new PublishSProcCommand(_appShell, _pss);

            cmd.TryHandleCommand(null, RPackageCommandId.icmdPublishSProc, false, 0, IntPtr.Zero, IntPtr.Zero).Should().BeTrue();
            //_appShell.Received().ShowErrorMessage(Resources.SqlPublishDialog_NoDbProject);
        }
示例#4
0
        public void Generate(string rFile, RCodePlacement codePlacement, SqlQuoteType quoteType, string sprocName)
        {
            var fs       = new FileSystem();
            var settings = new SqlSProcPublishSettings();
            var g        = new SProcProjectFilesGenerator(_pss, fs);

            var targetProjItem  = Substitute.For <EnvDTE.ProjectItem>();
            var targetProjItems = Substitute.For <EnvDTE.ProjectItems>();

            targetProjItem.ProjectItems.Returns(targetProjItems);

            var rootProjItems = Substitute.For <EnvDTE.ProjectItems>();

            rootProjItems.Item("R").Returns((EnvDTE.ProjectItem)null);
            rootProjItems.AddFolder("R").Returns(targetProjItem);
            _project.ProjectItems.Returns(rootProjItems);

            var templateFile = Path.Combine(_files.DestinationPath, Path.GetFileNameWithoutExtension(rFile) + SProcFileExtensions.SProcFileExtension);

            _pss.GetProjectFiles(_project).Returns(new string[] {
                Path.Combine(_files.DestinationPath, rFile),
                Path.Combine(_files.DestinationPath, Path.GetFileNameWithoutExtension(rFile) + SProcFileExtensions.QueryFileExtension),
                templateFile
            });

            settings.CodePlacement = codePlacement;
            settings.QuoteType     = quoteType;

            g.Generate(settings, _project);
            rootProjItems.Received().AddFolder("R");

            var targetFolder = Path.Combine(_files.DestinationPath, "R\\");
            var rFilePath    = Path.Combine(targetFolder, rFile);
            var sprocFile    = Path.ChangeExtension(Path.Combine(targetFolder, sprocName), ".sql");

            targetProjItem.ProjectItems.Received().AddFromFile(sprocFile);
            if (codePlacement == RCodePlacement.Table)
            {
                targetProjItem.ProjectItems.Received().AddFromFile(Path.Combine(targetFolder, SProcProjectFilesGenerator.PostDeploymentScriptName));
                targetProjItem.ProjectItems.Received().AddFromFile(Path.Combine(targetFolder, SProcProjectFilesGenerator.CreateRCodeTableScriptName));
            }

            var    mode     = codePlacement == RCodePlacement.Inline ? "inline" : "table";
            var    baseline = fs.ReadAllText(Path.Combine(_files.DestinationPath, Invariant($"{Path.GetFileNameWithoutExtension(rFile)}.{mode}.baseline.sql")));
            string actual   = fs.ReadAllText(sprocFile);

            BaselineCompare.CompareStringLines(baseline, actual);
        }