[Bug #1039] Added new test to check spread advance and set them randomly if needed.

FEA: ItEr74S07WBSTreeRefactoring
This commit is contained in:
Manuel Rego Casasnovas 2011-05-04 18:04:03 +02:00
parent 0041ff7512
commit 1ddeb946fa
4 changed files with 72 additions and 27 deletions

View file

@ -556,6 +556,7 @@ public abstract class OrderElement extends IntegrationEntity implements
removeChildrenAdvanceInParents(this.getParent());
}
markAsDirtyLastAdvanceMeasurementForSpreading();
updateSpreadAdvance();
}
}
@ -1403,4 +1404,26 @@ public abstract class OrderElement extends IntegrationEntity implements
return result;
}
protected void updateSpreadAdvance() {
if (getReportGlobalAdvanceAssignment() == null) {
// Set PERCENTAGE type as spread if any
String type = PredefinedAdvancedTypes.PERCENTAGE.getTypeName();
for (DirectAdvanceAssignment each : directAdvanceAssignments) {
if (each.getAdvanceType() != null
&& each.getAdvanceType().getType() != null
&& each.getAdvanceType().getType().equals(type)) {
each.setReportGlobalAdvance(true);
return;
}
}
// Otherwise, set first advance assignment
if (!directAdvanceAssignments.isEmpty()) {
directAdvanceAssignments.iterator().next()
.setReportGlobalAdvance(true);
return;
}
}
}
}

View file

@ -234,6 +234,7 @@ public class OrderLine extends OrderElement {
if (advanceAssignment != null) {
advanceAssignment.setReportGlobalAdvance(false);
}
markAsDirtyLastAdvanceMeasurementForSpreading();
}
public boolean containsHoursGroup(String code) {

View file

@ -164,30 +164,28 @@ public class OrderLineGroup extends OrderElement implements
}
}
private void updateSpreadAdvance(){
if(getReportGlobalAdvanceAssignment() == null){
AdvanceType type = PredefinedAdvancedTypes.PERCENTAGE.getType();
DirectAdvanceAssignment advancePercentage = getAdvanceAssignmentByType(type);
if(advancePercentage != null) {
if(advancePercentage.isFake()){
for (IndirectAdvanceAssignment each : getIndirectAdvanceAssignments()) {
if (type != null && each.getAdvanceType().getId().equals(type.getId())) {
each.setReportGlobalAdvance(true);
}
}
}else{
advancePercentage.setReportGlobalAdvance(true);
}
} else {
for (DirectAdvanceAssignment advance : getDirectAdvanceAssignments()) {
advance.setReportGlobalAdvance(true);
return;
}
for (IndirectAdvanceAssignment advance : getIndirectAdvanceAssignments()) {
advance.setReportGlobalAdvance(true);
@Override
protected void updateSpreadAdvance() {
if (getReportGlobalAdvanceAssignment() == null) {
// Set CHILDREN type as spread if any
String type = PredefinedAdvancedTypes.CHILDREN.getTypeName();
for (IndirectAdvanceAssignment each : indirectAdvanceAssignments) {
if (each.getAdvanceType() != null
&& each.getAdvanceType().getType() != null
&& each.getAdvanceType().getType().equals(type)) {
each.setReportGlobalAdvance(true);
return;
}
}
// Otherwise, set first indirect advance assignment
if (!indirectAdvanceAssignments.isEmpty()) {
indirectAdvanceAssignments.iterator().next()
.setReportGlobalAdvance(true);
return;
}
super.updateSpreadAdvance();
}
}
@ -925,12 +923,7 @@ public class OrderLineGroup extends OrderElement implements
}
if (toRemove != null) {
indirectAdvanceAssignments.remove(toRemove);
if (toRemove.getReportGlobalAdvance()) {
IndirectAdvanceAssignment childrenAdvance = getChildrenAdvance();
if (childrenAdvance != null) {
childrenAdvance.setReportGlobalAdvance(true);
}
}
updateSpreadAdvance();
}
if (parent != null) {
@ -1010,6 +1003,7 @@ public class OrderLineGroup extends OrderElement implements
if (advanceAssignment != null) {
advanceAssignment.setReportGlobalAdvance(false);
}
markAsDirtyLastAdvanceMeasurementForSpreading();
}
public DirectAdvanceAssignment getAdvanceAssignmentByType(AdvanceType type) {

View file

@ -23,6 +23,7 @@ package org.navalplanner.business.test.orders.entities;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@ -1148,4 +1149,30 @@ public class OrderElementTest {
.iterator().next().isValid());
}
@Test
public void checkSpreadAdvanceInOrderLine()
throws DuplicateValueTrueReportGlobalAdvanceException,
DuplicateAdvanceAssignmentForOrderElementException {
OrderLine orderLine = givenOrderLine("element", "element-code", 100);
AdvanceType advanceType1 = PredefinedAdvancedTypes.PERCENTAGE.getType();
AdvanceType advanceType2 = PredefinedAdvancedTypes.UNITS.getType();
addAvanceAssignmentWithoutMeasurement(orderLine, advanceType1,
BigDecimal.TEN, true);
addAvanceAssignmentWithoutMeasurement(orderLine, advanceType2,
BigDecimal.TEN, false);
assertThat(orderLine.getReportGlobalAdvanceAssignment()
.getAdvanceType(), equalTo(advanceType1));
assertNotNull(orderLine.getReportGlobalAdvanceAssignment());
orderLine.removeAdvanceAssignment(orderLine
.getAdvanceAssignmentByType(advanceType1));
assertNotNull(orderLine.getReportGlobalAdvanceAssignment());
assertThat(orderLine.getReportGlobalAdvanceAssignment()
.getAdvanceType(), equalTo(advanceType2));
}
}