package hudson.plugins.testabilityexplorer.helpers;
import hudson.plugins.testabilityexplorer.parser.StatisticsParser;
import hudson.plugins.testabilityexplorer.report.BuildIndividualReport;
import hudson.plugins.testabilityexplorer.report.CostDetailBuilder;
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.health.ReportBuilder;
import hudson.plugins.testabilityexplorer.report.health.TestabilityReportBuilder;
import hudson.plugins.testabilityexplorer.report.health.TemporaryHealthCalculator;
import hudson.plugins.testabilityexplorer.PluginBaseTest;
import hudson.FilePath;
import hudson.model.AbstractBuild;
import hudson.model.Result;
import org.apache.commons.lang.SystemUtils;
import static org.mockito.Mockito.mock;
import static org.testng.Assert.*;
import org.testng.annotations.Test;
import java.util.Calendar;
import java.util.Collection;
import java.util.GregorianCalendar;
/**
* Tests the {@link BuildProxy} class.
*
* @author reik.schatz
*/
@Test
public class BuildProxyTest extends PluginBaseTest
{
public void testProxy()
{
FilePath path = new FilePath(SystemUtils.getJavaIoTmpDir());
StatisticsParser statisticsParser = mock(StatisticsParser.class);
ChartBuilder chartBuilder = new TestabilityChartBuilder();
ReportBuilder reportBuilder = new TestabilityReportBuilder(chartBuilder, new TemporaryHealthCalculator());
BuildProxy buildProxy = new BuildProxy(path, statisticsParser, new CostDetailBuilder(), reportBuilder);
assertEquals(path, buildProxy.getModuleRoot());
assertTrue(statisticsParser == buildProxy.getStatisticsParser());
assertEquals(reportBuilder, buildProxy.getReportBuilder());
Collection<Statistic> results = createStatistics();
BuildIndividualReport abstractBuildAction = new BuildIndividualReport(results, reportBuilder, new CostDetailBuilder());
buildProxy.addAction(abstractBuildAction);
assertNull(buildProxy.getResult());
buildProxy.setResult(Result.SUCCESS);
assertNotNull(buildProxy.getResult());
assertNull(abstractBuildAction.getBuild());
AbstractBuild<?,?> someBuild = createBuild(15, GregorianCalendar.getInstance());
buildProxy.updateBuild(someBuild);
assertNotNull(abstractBuildAction.getBuild());
assertTrue(someBuild == abstractBuildAction.getBuild());
}
}