package hudson.plugins.testabilityexplorer.report;
import hudson.plugins.testabilityexplorer.PluginBaseTest;
import hudson.plugins.testabilityexplorer.report.charts.ChartBuilder;
import hudson.plugins.testabilityexplorer.report.charts.TestabilityChartBuilder;
import hudson.plugins.testabilityexplorer.report.costs.Statistic;
import hudson.plugins.testabilityexplorer.report.costs.CostSummary;
import hudson.plugins.testabilityexplorer.report.health.ReportBuilder;
import hudson.plugins.testabilityexplorer.report.health.TemporaryHealthCalculator;
import hudson.plugins.testabilityexplorer.report.health.TestabilityReportBuilder;
import hudson.maven.AggregatableAction;
import hudson.maven.MavenBuild;
import hudson.model.AbstractBuild;
import static org.mockito.Mockito.*;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
import java.util.Collection;
/**
* Tests the BuildAggregatedReport.
*
* @author reik.schatz
*/
@Test
public class BuildAggregatedReportTest extends PluginBaseTest
{
public void testGetIndividualActionType()
{
Collection<Statistic> statistics = createStatistics();
ChartBuilder chartBuilder = new TestabilityChartBuilder();
ReportBuilder reportBuilder = new TestabilityReportBuilder(chartBuilder, new TemporaryHealthCalculator());
CostDetailBuilder costDetailBuilder = new CostDetailBuilder();
BuildAggregatedReport buildAggregatedReport = new BuildAggregatedReport(null, statistics, reportBuilder, costDetailBuilder);
Class<? extends AggregatableAction> actionType = buildAggregatedReport.getIndividualActionType();
assertTrue(BuildIndividualReport.class.isAssignableFrom(actionType));
}
public void testUpdate()
{
CostSummary costSummary = new CostSummary(12, 14, 43, 43);
Collection<Statistic> stats1 = createStatistics(false, costSummary);
Collection<Statistic> stats2 = createStatistics();
BuildIndividualReport report = new BuildIndividualReport(stats1, null, new CostDetailBuilder());
AbstractBuild<?, ?> build1 = mock(AbstractBuild.class);
stub(build1.toString()).toReturn("Build 1");
report.setBuild(build1);
MavenBuild build = mock(MavenBuild.class);
stub(build.getAction(BuildIndividualReport.class)).toReturn(report);
ChartBuilder chartBuilder = new TestabilityChartBuilder();
ReportBuilder reportBuilder = new TestabilityReportBuilder(chartBuilder, new TemporaryHealthCalculator());
CostDetailBuilder costDetailBuilder = new CostDetailBuilder();
BuildAggregatedReport buildAggregatedReport = new BuildAggregatedReport(null, stats2, reportBuilder, costDetailBuilder);
assertEquals(buildAggregatedReport.getResults().size(), 1);
buildAggregatedReport.update(null, build);
Collection<Statistic> combinedStats = buildAggregatedReport.getResults();
assertEquals(combinedStats.size(), 2);
MavenBuild invalidBuild = mock(MavenBuild.class);
stub(invalidBuild.getAction(BuildIndividualReport.class)).toReturn(null);
buildAggregatedReport.update(null, invalidBuild);
combinedStats = buildAggregatedReport.getResults();
assertEquals(combinedStats.size(), 2);
}
}