/// <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)); }
/// <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))); }
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); }
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); }