ItEr36S08CUAsignacionCalendarioLaboralRecursoItEr35S08: Fixed tests adding default calendars to new orders.

This commit is contained in:
Manuel Rego Casasnovas 2009-11-24 13:28:53 +01:00 committed by Javier Moran Rua
parent 5d5a71b990
commit 50d579b5f7
8 changed files with 215 additions and 40 deletions

View file

@ -0,0 +1,78 @@
/*
* This file is part of ###PROJECT_NAME###
*
* Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e
* Desenvolvemento Tecnolóxico de Galicia
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.navalplanner.business.common.entities;
import java.util.List;
import org.navalplanner.business.calendars.daos.IBaseCalendarDAO;
import org.navalplanner.business.calendars.entities.BaseCalendar;
import org.navalplanner.business.calendars.entities.CalendarData.Days;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* Creates a default {@link Configuration} with a default {@link BaseCalendar}.
*
* @author Manuel Rego Casasnovas <mrego@igalia.com>
*/
@Component
@Scope("singleton")
public class ConfigurationBootstrap implements IConfigurationBootstrap {
@Autowired
private IConfigurationDAO configurationDAO;
@Autowired
private IBaseCalendarDAO baseCalendarDAO;
@Override
@Transactional
public void loadRequiredData() {
List<Configuration> list = configurationDAO.list(Configuration.class);
if (list.isEmpty()) {
Configuration configuration = Configuration.create();
configuration.setDefaultCalendar(getDefaultCalendar());
configurationDAO.save(configuration);
}
}
private BaseCalendar getDefaultCalendar() {
BaseCalendar calendar = BaseCalendar.create();
calendar.setName("Default");
calendar.setHours(Days.MONDAY, 8);
calendar.setHours(Days.TUESDAY, 8);
calendar.setHours(Days.WEDNESDAY, 8);
calendar.setHours(Days.THURSDAY, 8);
calendar.setHours(Days.FRIDAY, 8);
calendar.setHours(Days.SATURDAY, 0);
calendar.setHours(Days.SUNDAY, 0);
baseCalendarDAO.save(calendar);
return calendar;
}
}

View file

@ -0,0 +1,34 @@
/*
* This file is part of ###PROJECT_NAME###
*
* Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e
* Desenvolvemento Tecnolóxico de Galicia
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.navalplanner.business.common.entities;
import org.navalplanner.business.IDataBootstrap;
/**
* Contract for {@link ConfigurationBootstrap}.
*
* @author Manuel Rego Casasnovas <mrego@igalia.com>
*/
public interface IConfigurationBootstrap extends IDataBootstrap {
void loadRequiredData();
}

View file

@ -21,7 +21,6 @@
package org.navalplanner.business.test.calendars.daos;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@ -259,6 +258,9 @@ public class BaseCalendarDAOTest {
@Test
public void getBaseCalendarsAndNotResourceCalendars() {
List<BaseCalendar> baseCalendars = baseCalendarDAO.getBaseCalendars();
int previous = baseCalendars.size();
BaseCalendar calendar1 = BaseCalendarTest.createBasicCalendar();
calendar1.setName("Test1");
BaseCalendar calendar2 = BaseCalendarTest.createBasicCalendar();
@ -273,10 +275,8 @@ public class BaseCalendarDAOTest {
baseCalendarDAO.save(resourceCalendar);
baseCalendarDAO.flush();
List<BaseCalendar> baseCalendars = baseCalendarDAO.getBaseCalendars();
assertThat(baseCalendars.size(), equalTo(2));
assertThat(baseCalendars.get(0).getId(), not(resourceCalendar.getId()));
assertThat(baseCalendars.get(1).getId(), not(resourceCalendar.getId()));
baseCalendars = baseCalendarDAO.getBaseCalendars();
assertThat(baseCalendars.size(), equalTo(previous + 2));
}
}

View file

@ -47,6 +47,7 @@ import org.navalplanner.business.advance.entities.AdvanceType;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.orders.daos.IOrderDAO;
import org.navalplanner.business.orders.daos.IOrderElementDAO;
@ -74,9 +75,13 @@ public class AddAdvanceAssignmentsToOrderElementTest {
@Resource
private IDataBootstrap defaultAdvanceTypesBootstrapListener;
@Resource
private IDataBootstrap configurationBootstrap;
@Before
public void loadRequiredaData() {
defaultAdvanceTypesBootstrapListener.loadRequiredData();
configurationBootstrap.loadRequiredData();
}
@Autowired
@ -94,11 +99,14 @@ public class AddAdvanceAssignmentsToOrderElementTest {
@Autowired
private IAdvanceTypeDAO advanceTypeDao;
@Autowired
private IConfigurationDAO configurationDAO;
private Session getSession() {
return sessionFactory.getCurrentSession();
}
private static Order createValidOrder() {
private Order createValidOrder() {
Order order = Order.create();
order.setDescription("description");
order.setCustomer("blabla");
@ -106,6 +114,8 @@ public class AddAdvanceAssignmentsToOrderElementTest {
order.setName("name");
order.setResponsible("responsible");
order.setCode("code");
order.setCalendar(configurationDAO.getConfiguration()
.getDefaultCalendar());
return order;
}

View file

@ -43,6 +43,7 @@ import org.junit.runner.RunWith;
import org.navalplanner.business.IDataBootstrap;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.orders.daos.IOrderDAO;
@ -81,9 +82,13 @@ public class TaskElementDAOTest {
@Resource
private IDataBootstrap defaultAdvanceTypesBootstrapListener;
@Resource
private IDataBootstrap configurationBootstrap;
@Before
public void loadRequiredaData() {
defaultAdvanceTypesBootstrapListener.loadRequiredData();
configurationBootstrap.loadRequiredData();
}
@Autowired
@ -101,6 +106,9 @@ public class TaskElementDAOTest {
@Autowired
private IAdHocTransactionService transactionService;
@Autowired
private IConfigurationDAO configurationDAO;
private HoursGroup associatedHoursGroup;
private Task createValidTask() {
@ -126,6 +134,8 @@ public class TaskElementDAOTest {
order.setInitDate(new Date());
order.setCode("code");
order.add(orderLine);
order.setCalendar(configurationDAO.getConfiguration()
.getDefaultCalendar());
try {
orderDAO.save(order);
sessionFactory.getCurrentSession().flush();

View file

@ -59,7 +59,7 @@ public class BaseCalendarModelTest {
@Test
public void testCreateAndSave() {
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(0));
int previous = baseCalendarModel.getBaseCalendars().size();
baseCalendarModel.initCreate();
BaseCalendar baseCalendar = baseCalendarModel.getBaseCalendar();
baseCalendar.setName("Test");
@ -67,10 +67,13 @@ public class BaseCalendarModelTest {
try {
baseCalendarModel.confirmSave();
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(1));
assertThat(baseCalendarModel.getBaseCalendars().get(0).getId(),
assertThat(baseCalendarModel.getBaseCalendars().size(),
equalTo(previous + 1));
assertThat(baseCalendarModel.getBaseCalendars().get(previous)
.getId(),
equalTo(baseCalendar.getId()));
assertThat(baseCalendarModel.getBaseCalendars().get(0).getHours(
assertThat(baseCalendarModel.getBaseCalendars().get(previous)
.getHours(
new Date(), Days.MONDAY), equalTo(8));
} catch (ValidationException e) {
fail("It should not throw an exception");
@ -89,28 +92,31 @@ public class BaseCalendarModelTest {
@Test
public void testEditAndSave() throws ValidationException {
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(0));
int previous = baseCalendarModel.getBaseCalendars().size();
saveOneCalendar();
BaseCalendar baseCalendar = baseCalendarModel.getBaseCalendars().get(0);
BaseCalendar baseCalendar = baseCalendarModel.getBaseCalendars().get(
previous);
baseCalendarModel.initEdit(baseCalendar);
setHours(baseCalendarModel.getBaseCalendar(), 4);
baseCalendarModel.confirmSave();
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(1));
assertThat(baseCalendarModel.getBaseCalendars().get(0).getId(),
assertThat(baseCalendarModel.getBaseCalendars().size(),
equalTo(previous + 1));
assertThat(baseCalendarModel.getBaseCalendars().get(previous).getId(),
equalTo(baseCalendar.getId()));
assertThat(baseCalendarModel.getBaseCalendars().get(0).getHours(
assertThat(baseCalendarModel.getBaseCalendars().get(previous).getHours(
new Date(), Days.MONDAY), equalTo(4));
}
@Test
public void testEditAndNewVersion() {
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(0));
int previous = baseCalendarModel.getBaseCalendars().size();
saveOneCalendar();
BaseCalendar baseCalendar = baseCalendarModel.getBaseCalendars().get(0);
BaseCalendar baseCalendar = baseCalendarModel.getBaseCalendars().get(
previous);
baseCalendarModel.initEdit(baseCalendar);
Date date = (new LocalDate()).plusWeeks(1)
.toDateTimeAtStartOfDay().toDate();
@ -119,10 +125,12 @@ public class BaseCalendarModelTest {
try {
baseCalendarModel.confirmSave();
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(1));
assertThat(baseCalendarModel.getBaseCalendars().get(0).getHours(
assertThat(baseCalendarModel.getBaseCalendars().size(),
equalTo(previous + 1));
assertThat(baseCalendarModel.getBaseCalendars().get(previous)
.getHours(
date, Days.MONDAY), equalTo(4));
assertThat(baseCalendarModel.getBaseCalendars().get(0)
assertThat(baseCalendarModel.getBaseCalendars().get(previous)
.getCalendarDataVersions().size(), equalTo(2));
} catch (ValidationException e) {
fail("It should not throw an exception");
@ -142,17 +150,21 @@ public class BaseCalendarModelTest {
@Test
public void testRemove() {
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(0));
int previous = baseCalendarModel.getBaseCalendars().size();
saveOneCalendar();
BaseCalendar baseCalendar = baseCalendarModel.getBaseCalendars().get(0);
BaseCalendar baseCalendar = baseCalendarModel.getBaseCalendars().get(
previous);
baseCalendarModel.initRemove(baseCalendar);
baseCalendarModel.confirmRemove();
assertThat(baseCalendarModel.getBaseCalendars().size(), equalTo(0));
assertThat(baseCalendarModel.getBaseCalendars().size(),
equalTo(previous));
}
@Test
public void testPossibleParentCalendars() throws ValidationException {
int previous = baseCalendarModel.getPossibleParentCalendars().size();
baseCalendarModel.initCreate();
baseCalendarModel.getBaseCalendar().setName("Test");
setHours(baseCalendarModel.getBaseCalendar(), 8);
@ -171,11 +183,12 @@ public class BaseCalendarModelTest {
List<BaseCalendar> possibleParentCalendars = baseCalendarModel
.getPossibleParentCalendars();
assertThat(possibleParentCalendars.size(), equalTo(1));
assertThat(possibleParentCalendars.get(0).getId(),
assertThat(possibleParentCalendars.size(), equalTo(previous + 1));
assertThat(possibleParentCalendars.get(previous).getId(),
equalTo(parentNewVersion.getId()));
assertThat(
possibleParentCalendars.get(0).getCalendarDataVersions()
possibleParentCalendars.get(previous)
.getCalendarDataVersions()
.size(), equalTo(2));
}

View file

@ -45,6 +45,7 @@ import org.junit.runner.RunWith;
import org.navalplanner.business.IDataBootstrap;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.orders.daos.IOrderDAO;
@ -80,9 +81,13 @@ public class OrderModelTest {
@Resource
private IDataBootstrap defaultAdvanceTypesBootstrapListener;
@Resource
private IDataBootstrap configurationBootstrap;
@Before
public void loadRequiredaData() {
defaultAdvanceTypesBootstrapListener.loadRequiredData();
configurationBootstrap.loadRequiredData();
}
public static Date year(int year) {
@ -92,17 +97,6 @@ public class OrderModelTest {
return calendar.getTime();
}
private static Order createValidOrder() {
Order order = Order.create();
order.setDescription("description");
order.setCustomer("blabla");
order.setInitDate(year(2000));
order.setName("name");
order.setResponsible("responsible");
order.setCode("code");
return order;
}
@Autowired
private IOrderModel orderModel;
@ -121,12 +115,28 @@ public class OrderModelTest {
@Autowired
private ICriterionsModel criterionModel;
@Autowired
private IConfigurationDAO configurationDAO;
private Criterion criterion;
private Session getSession() {
return sessionFactory.getCurrentSession();
}
private Order createValidOrder() {
Order order = Order.create();
order.setDescription("description");
order.setCustomer("blabla");
order.setInitDate(year(2000));
order.setName("name");
order.setResponsible("responsible");
order.setCode("code");
order.setCalendar(configurationDAO.getConfiguration()
.getDefaultCalendar());
return order;
}
@Test
public void testCreation() throws ValidationException {
Order order = createValidOrder();
@ -187,7 +197,12 @@ public class OrderModelTest {
@NotTransactional
public void testOrderPreserved() throws ValidationException,
InstanceNotFoundException {
final Order order = createValidOrder();
final Order order = adHocTransaction.runOnReadOnlyTransaction(new IOnTransaction<Order>() {
@Override
public Order execute() {
return createValidOrder();
}
});
final OrderElement[] containers = new OrderLineGroup[10];
for (int i = 0; i < containers.length; i++) {
containers[i] = adHocTransaction
@ -272,7 +287,13 @@ public class OrderModelTest {
@Test
@NotTransactional
public void testAddingOrderElement() throws Exception {
final Order order = createValidOrder();
final Order order = adHocTransaction
.runOnReadOnlyTransaction(new IOnTransaction<Order>() {
@Override
public Order execute() {
return createValidOrder();
}
});
OrderLineGroup container = adHocTransaction
.runOnTransaction(new IOnTransaction<OrderLineGroup>() {
@Override
@ -321,7 +342,13 @@ public class OrderModelTest {
@NotTransactional
public void testManyToManyHoursGroupCriterionMapping() throws Exception {
givenCriterion();
final Order order = createValidOrder();
final Order order = adHocTransaction
.runOnReadOnlyTransaction(new IOnTransaction<Order>() {
@Override
public Order execute() {
return createValidOrder();
}
});
OrderLine orderLine = OrderLine.create();
orderLine.setName("Order element");

View file

@ -57,6 +57,9 @@
<value>
org/navalplanner/business/requirements/entities/Requirements.hbm.xml
</value>
<value>
org/navalplanner/business/common/entities/Configuration.hbm.xml
</value>
</list>
</property>