package com.autentia.tnt.bean.contacts; import static org.junit.Assert.assertEquals; import java.math.BigDecimal; import java.util.GregorianCalendar; import org.hibernate.SessionFactory; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.autentia.tnt.bean.billing.BillBean; import com.autentia.tnt.businessobject.BillBreakDown; import com.autentia.tnt.businessobject.OfferCost; import com.autentia.tnt.businessobject.OfferRole; import com.autentia.tnt.businessobject.User; import com.autentia.tnt.test.utils.SpringUtilsForTesting; import com.autentia.tnt.util.HibernateUtil; public class OfferBeanTest { private static User userInContext; private static SessionFactory sessionFactory; private final BigDecimal IVA16 = new BigDecimal("16"); private final BigDecimal IVA18 = new BigDecimal("18"); private final BigDecimal IVA21 = new BigDecimal("21"); @BeforeClass public static void init() throws Exception { SpringUtilsForTesting.configure(new ClassPathXmlApplicationContext("applicationContext-test.xml")); sessionFactory = HibernateUtil.getSessionFactory(); sessionFactory.openSession(); sessionFactory.getCurrentSession().beginTransaction(); userInContext = SpringUtilsForTesting.createUserInContextWithRoleAndDepartment(); sessionFactory.getCurrentSession().close(); } @Before public void beginTransaction() throws Exception { sessionFactory.getCurrentSession().beginTransaction(); } @AfterClass public static void terminate() throws Exception { SpringUtilsForTesting.removeUserFromContext(); SpringUtilsForTesting.deleteUserInContext(userInContext); if (sessionFactory.getCurrentSession().getTransaction().isActive()) { sessionFactory.getCurrentSession().getTransaction().rollback(); } sessionFactory.getCurrentSession().close(); } @Test public void createRolesIn2009Test() { final OfferBean offerBean = new OfferBean(); offerBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2009, 8, 31); offerBean.setCreationDate(calendar.getTime()); offerBean.createRoles(); for (OfferRole offerRole:offerBean.getRoles()) { assertEquals(IVA16,offerRole.getIva()); } } @Test public void createRolesInFirstDayOf18Test() { OfferBean offerBean = new OfferBean(); offerBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2010, 6, 1); offerBean.setCreationDate(calendar.getTime()); offerBean.createRoles(); for (OfferRole offerRole:offerBean.getRoles()) { assertEquals(IVA18,offerRole.getIva()); } } @Test public void createRolesInLastDayOf18Test() { OfferBean offerBean = new OfferBean(); offerBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2012, 7, 31); offerBean.setCreationDate(calendar.getTime()); offerBean.createRoles(); for (OfferRole offerRole:offerBean.getRoles()) { assertEquals(IVA18,offerRole.getIva()); } } @Test public void createRolesInFirstDayOf21Test() { BillBean billBean = new BillBean(); billBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2012, 8, 1); billBean.setCreationDate(calendar.getTime()); billBean.createBreakDown(); for (BillBreakDown billBreakDown:billBean.getBill().getBreakDown()) { assertEquals(IVA21,billBreakDown.getIva()); } } @Test public void createCostsIn2009Test() { final OfferBean offerBean = new OfferBean(); offerBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2009, 8, 31); offerBean.setCreationDate(calendar.getTime()); offerBean.createCosts(); for (OfferCost offerCost:offerBean.getCosts()) { assertEquals(IVA16,offerCost.getIva()); } } @Test public void createCostsInFirstDayOf18Test() { OfferBean offerBean = new OfferBean(); offerBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2010, 6, 1); offerBean.setCreationDate(calendar.getTime()); offerBean.createCosts(); for (OfferCost offerCost:offerBean.getCosts()) { assertEquals(IVA18,offerCost.getIva()); } } @Test public void createCostsInLastDayOf18Test() { OfferBean offerBean = new OfferBean(); offerBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2012, 7, 31); offerBean.setCreationDate(calendar.getTime()); offerBean.createCosts(); for (OfferCost offerCost:offerBean.getCosts()) { assertEquals(IVA18,offerCost.getIva()); } } @Test public void createCostsInFirstDayOf21Test() { OfferBean offerBean = new OfferBean(); offerBean.create(); final GregorianCalendar calendar = new GregorianCalendar(2012, 8, 1); offerBean.setCreationDate(calendar.getTime()); offerBean.createCosts(); for (OfferCost offerCost:offerBean.getCosts()) { assertEquals(IVA21,offerCost.getIva()); } } }