ItEr20S07CUIntroducionAvanceUnidadeTraballoItEr19S12: Fixing bug. IMPORTANT: The comparison between Long objects must be done using equals instead of instance equality operator.
Adding test case that reproduced the error. This way they're more resilient to change.
This commit is contained in:
parent
5d565508a7
commit
25f6116ca2
2 changed files with 39 additions and 2 deletions
|
|
@ -209,8 +209,8 @@ public abstract class OrderElement {
|
|||
throws DuplicateAdvanceAssigmentForOrderElementException {
|
||||
for (AdvanceAssigment advanceAssigment : orderElement
|
||||
.getAdvanceAssigments()) {
|
||||
if (advanceAssigment.getAdvanceType().getId() == newAdvanceAssigment
|
||||
.getAdvanceType().getId()) {
|
||||
if (advanceAssigment.getAdvanceType().getId().equals(
|
||||
newAdvanceAssigment.getAdvanceType().getId())) {
|
||||
throw new DuplicateAdvanceAssigmentForOrderElementException(
|
||||
"Duplicate Advance Assigment For Order Element", this,
|
||||
OrderElement.class);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import org.navalplanner.business.advance.entities.AdvanceAssigment;
|
|||
import org.navalplanner.business.advance.entities.AdvanceType;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssigmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.HoursGroup;
|
||||
|
|
@ -430,4 +431,40 @@ public class AddAdvanceAssigmentsToOrderElementTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test(expected = DuplicateAdvanceAssigmentForOrderElementException.class)
|
||||
public void addingAnotherAdvanceAssigmentWithAnEquivalentTypeButDifferentInstance()
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssigmentForOrderElementException {
|
||||
final Order order = createValidOrder();
|
||||
OrderLine line = createValidLeaf("GranSon", "75757");
|
||||
order.add(line);
|
||||
orderDao.save(order);
|
||||
|
||||
AdvanceType type = createValidAdvanceType("tipoA");
|
||||
advanceTypeDao.save(type);
|
||||
getSession().flush();
|
||||
getSession().evict(type);
|
||||
|
||||
AdvanceType typeReloaded = reloadType(type);
|
||||
|
||||
AdvanceAssigment assigment = createValidAdvanceAssigment(false);
|
||||
assigment.setAdvanceType(type);
|
||||
AdvanceAssigment assigmentWithSameType = createValidAdvanceAssigment(false);
|
||||
assigmentWithSameType.setAdvanceType(typeReloaded);
|
||||
|
||||
line.addAvanceAssigment(assigment);
|
||||
line.addAvanceAssigment(assigmentWithSameType);
|
||||
}
|
||||
|
||||
private AdvanceType reloadType(AdvanceType type) {
|
||||
try {
|
||||
// new instance of id is created to avoid both types have the same
|
||||
// id object
|
||||
Long newLong = new Long(type.getId());
|
||||
return advanceTypeDao.find(newLong);
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue