ItEr16S12CreacionProxectoPlanificacion: When an Order is removed, all the associated task elements are removed.

Database schema might need to be recreated.
This commit is contained in:
Óscar González Fernández 2009-07-09 17:23:36 +02:00 committed by Javier Moran Rua
parent cbf7cccd21
commit bbf9af0978
2 changed files with 32 additions and 11 deletions

View file

@ -31,7 +31,7 @@
<property name="mandatoryInit" access="field" />
<property name="mandatoryEnd" access="field" />
<property name="description" access="field" />
<set name="taskElements" access="field">
<set name="taskElements" access="field" cascade="delete">
<key column="ORDER_ELEMENT_ID"/>
<one-to-many class="org.navalplanner.business.planner.entities.TaskElement"></one-to-many>
</set>
@ -77,4 +77,4 @@
</class>
</hibernate-mapping>
</hibernate-mapping>

View file

@ -25,6 +25,7 @@ import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.orders.entities.OrderLine;
import org.navalplanner.business.orders.entities.OrderLineGroup;
import org.navalplanner.business.orders.services.IOrderService;
import org.navalplanner.business.planner.services.ITaskElementService;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionType;
import org.navalplanner.business.resources.services.CriterionService;
@ -58,6 +59,9 @@ public class OrderServiceTest {
@Autowired
private IOrderService orderService;
@Autowired
private ITaskElementService taskElementService;
@Autowired
private CriterionService criterionService;
@ -79,8 +83,7 @@ public class OrderServiceTest {
public void testListing() throws Exception {
List<Order> list = orderService.getOrders();
orderService.save(createValidOrder());
assertThat(orderService.getOrders().size(), equalTo(list
.size() + 1));
assertThat(orderService.getOrders().size(), equalTo(list.size() + 1));
}
@Test
@ -92,6 +95,25 @@ public class OrderServiceTest {
assertFalse(orderService.exists(order));
}
@Test
public void removingOrderWithAssociatedTasksDeletesThem()
throws ValidationException, InstanceNotFoundException {
Order order = createValidOrder();
OrderLine orderLine = new OrderLine();
orderLine.setName("bla");
orderLine.setWorkHours(10);
order.add(orderLine);
orderService.save(order);
taskElementService.convertToScheduleAndSave(order);
getSession().flush();
getSession().evict(order);
Order reloaded = orderService.find(order.getId());
OrderElement e = reloaded.getOrderElements().iterator().next();
assertThat(e.getTaskElements().size(), equalTo(1));
orderService.remove(reloaded);
assertFalse(orderService.exists(reloaded));
}
@Test(expected = ValidationException.class)
public void shouldSendValidationExceptionIfEndDateIsBeforeThanStartingDate()
throws ValidationException {
@ -132,8 +154,7 @@ public class OrderServiceTest {
@Override
public Void execute() {
try {
Order reloaded = orderService.find(order
.getId());
Order reloaded = orderService.find(order.getId());
List<OrderElement> elements = reloaded.getOrderElements();
for (int i = 0; i < containers.length; i++) {
assertThat(elements.get(i).getId(),
@ -143,8 +164,8 @@ public class OrderServiceTest {
.getOrderElements().iterator().next();
List<OrderElement> children = container.getChildren();
for (int i = 0; i < orderElements.length; i++) {
assertThat(children.get(i).getId(), equalTo(orderElements[i]
.getId()));
assertThat(children.get(i).getId(),
equalTo(orderElements[i].getId()));
}
return null;
} catch (Exception e) {
@ -181,8 +202,7 @@ public class OrderServiceTest {
@Override
public Void execute() {
try {
Order reloaded = orderService.find(order
.getId());
Order reloaded = orderService.find(order.getId());
assertFalse(order == reloaded);
assertThat(reloaded.getOrderElements().size(), equalTo(1));
OrderLineGroup containerReloaded = (OrderLineGroup) reloaded
@ -220,7 +240,8 @@ public class OrderServiceTest {
orderLine.addHoursGroup(hoursGroup2);
CriterionType criterionType = new CriterionType("test");
Criterion criterion = new Criterion("Test" + UUID.randomUUID(), criterionType);
Criterion criterion = new Criterion("Test" + UUID.randomUUID(),
criterionType);
criterionService.save(criterion);
hoursGroup.addCriterion(criterion);