package hudson.matrix;
import hudson.model.*;
import hudson.util.FormValidation;
import org.junit.Rule;
import org.junit.Test;
import org.jvnet.hudson.test.JenkinsRule;
import static org.junit.Assert.*;
/**
* Created by lvotypko on 4/4/17.
*/
public class MatrixChildParametersActionTest {
@Rule
public JenkinsRule j = new JenkinsRule();
@Test
public void testLoadingParameters() throws Exception {
MatrixProject project = j.createProject(MatrixProject.class, "project");
StringParameterDefinition def1 = new StringParameterDefinition("definition1", "value1", "description");
StringParameterDefinition def2 = new StringParameterDefinition("definition2", "value2", "description");
ParametersDefinitionProperty prop = new ParametersDefinitionProperty(def1,def2);
project.addProperty(prop);
AxisList axes = new AxisList(
new Axis("a","axis1","axis2"));
project.setAxes(axes);
project.save();
j.buildAndAssertSuccess(project);
MatrixBuild build = project.getLastBuild();
assertEquals("Two configuration should have been build.",2, build.getRuns().size());
checkReferencesForParameters(build);
//reloading
j.jenkins.reload();
project = j.jenkins.getItemByFullName("project", MatrixProject.class);
build = project.getLastBuild();
checkReferencesForParameters(build);
}
private void checkReferencesForParameters(MatrixBuild build) {
ParametersAction action = build.getAction(ParametersAction.class);
ParameterValue definition1 = action.getParameter("definition1");
ParameterValue definition2 = action.getParameter("definition2");
for(MatrixRun run : build.getExactRuns()){
ParametersAction matrichChildParameters = build.getAction(ParametersAction.class);
ParameterValue definition1Child = run.getAction(ParametersAction.class).getParameter("definition1");
ParameterValue definition2Child = run.getAction(ParametersAction.class).getParameter("definition2");
assertSame("Parameters shoud be references to parameters of parent build.", definition1Child, definition1);
assertSame("Parameters shoud be references to parameters of parent build.", definition2Child, definition2);
}
}
}