use of org.cerberus.crud.service.ITestCaseStepActionControlService in project cerberus-source by cerberustesting.
the class UpdateTestCaseWithDependencies method getTestCaseStepFromParameter.
private List<TestCaseStep> getTestCaseStepFromParameter(HttpServletRequest request, ApplicationContext appContext, String test, String testCase, boolean duplicate) {
List<TestCaseStep> testCaseStep = new ArrayList();
ITestCaseStepService tcsService = appContext.getBean(ITestCaseStepService.class);
String[] testcase_step_increment = getParameterValuesIfExists(request, "step_increment");
IFactoryTestCaseStep testCaseStepFactory = appContext.getBean(IFactoryTestCaseStep.class);
if (testcase_step_increment != null) {
for (String inc : testcase_step_increment) {
String delete = getParameterIfExists(request, "step_delete_" + inc);
String stepInUse = getParameterIfExists(request, "step_InUseInOtherTestCase_" + inc);
int step = getParameterIfExists(request, "step_technical_number_" + inc) == null ? 0 : Integer.parseInt(getParameterIfExists(request, "step_technical_number_" + inc));
int sort = getParameterIfExists(request, "step_number_" + inc) == null ? 0 : Integer.parseInt(getParameterIfExists(request, "step_number_" + inc));
int initialStep = getParameterIfExists(request, "initial_step_number_" + inc) == null ? 0 : Integer.parseInt(getParameterIfExists(request, "initial_step_number_" + inc));
String loop = getParameterIfExists(request, "step_loop_" + inc);
String conditionOper = getParameterIfExists(request, "step_conditionoper_" + inc);
String conditionVal1 = getParameterIfExists(request, "step_conditionval1_" + inc);
String conditionVal2 = getParameterIfExists(request, "step_conditionval2_" + inc);
String desc = getParameterIfExists(request, "step_description_" + inc);
String useStep = getParameterIfExists(request, "step_useStep_" + inc);
String useStepChanged = getParameterIfExists(request, "step_useStepChanged_" + inc);
String useStepTest = getParameterIfExists(request, "step_useStepTest_" + inc) == null ? "" : getParameterIfExists(request, "step_useStepTest_" + inc);
String useStepTestCase = getParameterIfExists(request, "step_useStepTestCase_" + inc) == null ? "" : getParameterIfExists(request, "step_useStepTestCase_" + inc);
String stepValue = getParameterIfExists(request, "step_useStepStep_" + inc);
int useStepStep = stepValue == null || stepValue.equals("") ? -1 : Integer.parseInt(getParameterIfExists(request, "step_useStepStep_" + inc));
String inLibrary = getParameterIfExists(request, "step_inLibrary_" + inc);
/* If delete, don't add it to the list of steps */
if (delete == null) {
TestCaseStep tcStep = testCaseStepFactory.create(test, testCase, step, sort, loop, conditionOper, conditionVal1, conditionVal2, desc, useStep == null ? "N" : useStep, useStepTest, useStepTestCase, useStepStep, inLibrary == null ? "N" : inLibrary);
/* Take action and control only if not use step*/
if (useStep == null || useStep.equals("N")) {
String isToCopySteps = getParameterIfExists(request, "isToCopySteps_" + inc);
if (isToCopySteps != null && isToCopySteps.equals("Y")) {
// TODO:FN the information about the useStep should be cleared?
// tcStep.setTestCaseStepAction(tcsService.findTestCaseStep(useStepTest, useStepTestCase, useStepStep));
ITestCaseStepActionService tcsaService = appContext.getBean(TestCaseStepActionService.class);
ITestCaseStepActionControlService tcsacService = appContext.getBean(TestCaseStepActionControlService.class);
int stepNumber = Integer.parseInt(stepValue);
List<TestCaseStepAction> actions = tcsaService.getListOfAction(useStepTest, useStepTestCase, stepNumber);
for (TestCaseStepAction act : actions) {
List<TestCaseStepActionControl> controlsPerAction = tcsacService.findControlByTestTestCaseStepSequence(useStepTest, useStepTestCase, stepNumber, act.getSequence());
// these actions now belong to the current test case, therefore we need to change it
act.setTest(test);
act.setTestCase(testCase);
act.setStep(step);
List<TestCaseStepActionControl> updatedControlsPerAction = new ArrayList<TestCaseStepActionControl>();
for (TestCaseStepActionControl ctrl : controlsPerAction) {
ctrl.setTest(test);
ctrl.setTestCase(testCase);
ctrl.setStep(step);
updatedControlsPerAction.add(ctrl);
}
act.setTestCaseStepActionControl(updatedControlsPerAction);
}
tcStep.setTestCaseStepAction(actions);
} else {
tcStep.setTestCaseStepAction(getTestCaseStepActionFromParameter(request, appContext, test, testCase, inc));
}
// clears the information about the usestep
tcStep.setUseStep("N");
tcStep.setUseStepTest("");
tcStep.setUseStepTestCase("");
tcStep.setUseStepStep(-1);
// updates the test step action list with the new step
List<TestCaseStepAction> actionsForStep = tcStep.getTestCaseStepAction();
for (TestCaseStepAction ac : actionsForStep) {
List<TestCaseStepActionControl> actionControlList = ac.getTestCaseStepActionControl();
for (TestCaseStepActionControl acControl : actionControlList) {
acControl.setStep(step);
}
ac.setStep(step);
}
// update the step associated with the actions that are now the new actions
} else {
TestCaseStep tcs = null;
if (useStepStep != -1 && !useStepTest.equals("") && !useStepTestCase.equals("")) {
/* If use step, verify if used step alread use another one */
if ((useStepChanged != null && useStepChanged.equals("Y")) || duplicate) {
// if it is to duplicate then we need to get the new step information
// save the information about the test + testcase + step that was used to duplicate the test
tcs = tcsService.findTestCaseStep(useStepTest, useStepTestCase, useStepStep);
if (tcs != null) {
tcStep.setUseStepTest(tcs.getTest());
tcStep.setUseStepTestCase(tcs.getTestCase());
tcStep.setUseStepStep(tcs.getStep());
}
} else {
// if there was no changes then it uses the same information
tcs = tcsService.findTestCaseStep(test, testCase, step);
if (tcs != null) {
tcStep.setUseStepTest(tcs.getUseStepTest());
tcStep.setUseStepTestCase(tcs.getUseStepTestCase());
tcStep.setUseStepStep(tcs.getUseStepStep());
}
}
} else {
// does not defines a valid step, then keep as it was before
tcs = tcsService.findTestCaseStep(test, testCase, step);
if (tcs != null) {
tcStep.setUseStep("N");
tcStep.setUseStepTest(tcs.getUseStepTest());
tcStep.setUseStepTestCase(tcs.getUseStepTestCase());
tcStep.setUseStepStep(tcs.getUseStepStep());
tcStep.setTestCaseStepAction(getTestCaseStepActionFromParameter(request, appContext, test, testCase, inc));
List<TestCaseStepAction> actionsForStep = tcStep.getTestCaseStepAction();
for (TestCaseStepAction ac : actionsForStep) {
List<TestCaseStepActionControl> actionControlList = ac.getTestCaseStepActionControl();
for (TestCaseStepActionControl acControl : actionControlList) {
acControl.setStep(step);
}
ac.setStep(step);
}
}
}
if (tcs != null) {
/**
* If description is empty, take the one from the
* use step
*/
if (desc.equals("")) {
tcStep.setDescription(tcs.getDescription());
}
} else {
// if the step that should be defined is not imported then we should save the data
// and the test case should have the useStep = 'N'
tcStep.setUseStep("N");
}
}
if (stepInUse != null && stepInUse.equals("Y")) {
tcStep.setIsStepInUseByOtherTestCase(true);
tcStep.setInitialStep(initialStep);
} else {
tcStep.setIsStepInUseByOtherTestCase(false);
}
testCaseStep.add(tcStep);
}
}
}
return testCaseStep;
}
Aggregations