public void SummaryReport_ReportIsGenerated()
        {
            // Arrange
            string hostUrl = "http://mySonarQube:9000";
            ProjectInfoAnalysisResult result = new ProjectInfoAnalysisResult();
            AnalysisConfig config = new AnalysisConfig() { SonarProjectKey = "Foo" , SonarQubeHostUrl = hostUrl};

            TeamBuildSettings settings = TeamBuildSettings.CreateNonTeamBuildSettings(this.TestContext.DeploymentDirectory);
            config.SonarOutputDir = TestContext.TestDeploymentDir; // this will be cleaned up by VS when there are too many results
            string expectedReportPath = Path.Combine(TestContext.TestDeploymentDir, SummaryReportBuilder.SummaryMdFilename);

            // Act
            SummaryReportBuilder builder = new SummaryReportBuilder();
            builder.GenerateReports(settings, config, result, new TestLogger());

            // Assert
            Assert.IsTrue(File.Exists(expectedReportPath) && (new FileInfo(expectedReportPath)).Length > 0, "The report file cannot be found or is empty");
        }
 private static void VerifySummaryProjectCounts(
     SummaryReportBuilder.SummaryReportData summaryReportData,
     int expectedInvalidProjects,
     int expectedProductProjects,
     int expectedSkippedProjects,
     int expectedTestProjects,
     int expectedExcludedProjects)
 {
     Assert.AreEqual(expectedInvalidProjects, summaryReportData.InvalidProjects);
     Assert.AreEqual(expectedProductProjects, summaryReportData.ProductProjects);
     Assert.AreEqual(expectedSkippedProjects, summaryReportData.SkippedProjects);
     Assert.AreEqual(expectedTestProjects, summaryReportData.TestProjects);
     Assert.AreEqual(expectedExcludedProjects, summaryReportData.ExcludedProjects);
 }
        private static void VerifySummaryReportData(
            SummaryReportBuilder.SummaryReportData summaryReportData,
            ProjectInfoAnalysisResult analysisResult,
            string expectedHostUrl,
            AnalysisConfig config)
        {
            Assert.AreEqual(
                            String.Format(SummaryReportBuilder.DashboardUrlFormat, expectedHostUrl, config.SonarProjectKey),
                            summaryReportData.DashboardUrl,
                            "Invalid dashboard url");

            Assert.AreEqual(analysisResult.RanToCompletion, summaryReportData.Succeeded, "Invalid outcome");
        }
        private static void VerifySummaryReportData(
            SummaryReportBuilder.SummaryReportData summaryReportData,
            ProjectInfoAnalysisResult analysisResult,
            string expectedHostUrl,
            AnalysisConfig config)
        {
            string expectedUrl;
            string branch;

            config.GetAnalysisSettings(false).TryGetValue("sonar.branch", out branch);

            if (String.IsNullOrEmpty(branch))
            {
                expectedUrl = String.Format(
                    SummaryReportBuilder.DashboardUrlFormat, 
                    expectedHostUrl, 
                    config.SonarProjectKey);
            }
            else
            {
                expectedUrl = String.Format(
                    SummaryReportBuilder.DashboardUrlFormatWithBranch, 
                    expectedHostUrl, 
                    config.SonarProjectKey, 
                    branch);
            }

            Assert.AreEqual(expectedUrl, summaryReportData.DashboardUrl, "Invalid dashboard url");
            Assert.AreEqual(analysisResult.RanToCompletion, summaryReportData.Succeeded, "Invalid outcome");

        }