r462 - in jpa2-validation/trunk/jsr303-validation/src: it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate main/java/org/nuiton/sandbox/jsr303/validation/services test/java/org/nuiton/sandbox/jsr303/validation test/java/org/nuiton/sandbox/jsr303/validation/services
Author: fdesbois Date: 2011-01-14 14:52:22 +0100 (Fri, 14 Jan 2011) New Revision: 462 Url: http://nuiton.org/repositories/revision/sandbox/462 Log: - Add tests for ServiceCustomer - Add test to check Transactional rollbackFor on non runtime Exception (BusinessException) Added: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BusinessException.java jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/services/ jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImplTest.java Modified: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java Modified: jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java =================================================================== --- jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java 2011-01-14 11:20:23 UTC (rev 461) +++ jpa2-validation/trunk/jsr303-validation/src/it/hibernate/src/main/java/org/nuiton/sandbox/jsr303/validation/hibernate/TransactionTest.java 2011-01-14 13:52:22 UTC (rev 462) @@ -4,6 +4,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.sandbox.jsr303.validation.services.BusinessException; import org.nuiton.sandbox.jsr303.validation.services.ServiceCustomer; import org.nuiton.sandbox.jsr317.jpa2.entity.Customer; import org.nuiton.sandbox.jsr317.jpa2.persistence.CustomerDAO; @@ -27,10 +28,14 @@ } public void executeAll() { - testSaveAgency(); + try { + testSaveAgency(); + } catch (BusinessException ex) { + throw new RuntimeException(ex); + } } - public void testSaveAgency() { + public void testSaveAgency() throws BusinessException { ServiceCustomer serviceCustomer = context.getBean(ServiceCustomer.class); CustomerDAO customerDAO = context.getBean(CustomerDAO.class); Added: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BusinessException.java =================================================================== --- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BusinessException.java (rev 0) +++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/BusinessException.java 2011-01-14 13:52:22 UTC (rev 462) @@ -0,0 +1,26 @@ +package org.nuiton.sandbox.jsr303.validation.services; + +/** + * Created on 14/01/11 + * + * @author fdesbois <florian.desbois@wiztivi.com> + * @version $Id$ + */ +public class BusinessException extends Exception { + + public BusinessException() { + super(); + } + + public BusinessException(String message) { + super(message); + } + + public BusinessException(String message, Throwable cause) { + super(message, cause); + } + + public BusinessException(Throwable cause) { + super(cause); + } +} Modified: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java =================================================================== --- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java 2011-01-14 11:20:23 UTC (rev 461) +++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomer.java 2011-01-14 13:52:22 UTC (rev 462) @@ -12,7 +12,12 @@ */ public interface ServiceCustomer { - void saveCustomer(Customer customer) throws ConstraintViolationException; + void saveCustomer(Customer customer) throws ConstraintViolationException, BusinessException; Customer newCustomer(); + + int countCustomers(); + + void deleteCustomer(Customer customer); + } Modified: jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java =================================================================== --- jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java 2011-01-14 11:20:23 UTC (rev 461) +++ jpa2-validation/trunk/jsr303-validation/src/main/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImpl.java 2011-01-14 13:52:22 UTC (rev 462) @@ -22,17 +22,33 @@ protected CustomerDAO customerDAO; @Override - @Transactional(readOnly = false) - public void saveCustomer(Customer customer) throws ConstraintViolationException { + @Transactional(readOnly = false, rollbackFor = BusinessException.class) + public void saveCustomer(Customer customer) throws ConstraintViolationException, BusinessException { checkConstraints(customer); customerDAO.save(customer); + + if (customer.getFirstName().equals("FAKE")) { + throw new BusinessException(); + } } @Override + @Transactional(readOnly = false) + public void deleteCustomer(Customer customer) { + Customer customerToDelete = customerDAO.read(customer.getId()); + customerDAO.delete(customerToDelete); + } + + @Override public Customer newCustomer() { return customerDAO.newInstance(); } + @Override + public int countCustomers() { + return customerDAO.count(); + } + } Added: jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImplTest.java =================================================================== --- jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImplTest.java (rev 0) +++ jpa2-validation/trunk/jsr303-validation/src/test/java/org/nuiton/sandbox/jsr303/validation/services/ServiceCustomerImplTest.java 2011-01-14 13:52:22 UTC (rev 462) @@ -0,0 +1,90 @@ +package org.nuiton.sandbox.jsr303.validation.services; + +import javax.inject.Inject; +import javax.validation.ConstraintViolationException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.sandbox.jsr303.validation.test.BaseValidationTest; +import org.nuiton.sandbox.jsr317.jpa2.entity.Customer; + +/** + * Created on 14/01/11 + * + * @author fdesbois <florian.desbois@wiztivi.com> + * @version $Id$ + */ +public class ServiceCustomerImplTest extends BaseValidationTest { + + private static final Log log = LogFactory.getLog(ServiceCustomerImplTest.class); + + @Inject + private ServiceCustomer serviceCustomer; + + @Test + public void testSaveCustomerSuccess() throws Exception { + + // ---- PREPARE DATA ---- // + + Customer customer = serviceCustomer.newCustomer(); + customer.setFirstName("FIRST_NAME"); + customer.setLastName("LAST_NAME"); + + // ---- EXECUTE ---- // + + serviceCustomer.saveCustomer(customer); + + // ---- CHECK DATA ---- // + + Assert.assertEquals(1, serviceCustomer.countCustomers()); + + // ---- CLEAN DATA ---- // + + serviceCustomer.deleteCustomer(customer); + } + + @Test(expected = ConstraintViolationException.class) + public void testSaveCustomerErrorOnConstraint() throws Exception { + + // ---- PREPARE DATA ---- // + + Customer customer = serviceCustomer.newCustomer(); + + // ---- EXECUTE ---- // + + try { + serviceCustomer.saveCustomer(customer); + + } finally { + + // ---- CHECK DATA ---- // + + Assert.assertEquals(0, serviceCustomer.countCustomers()); + } + } + + @Test(expected = BusinessException.class) + public void testSaveCustomerErrorFake() throws Exception { + + // ---- PREPARE DATA ---- // + + Customer customer = serviceCustomer.newCustomer(); + customer.setFirstName("FAKE"); + customer.setLastName("TOTO"); + + // ---- EXECUTE ---- // + + try { + serviceCustomer.saveCustomer(customer); + + } finally { + + // ---- CHECK DATA ---- // + + Assert.assertEquals(0, serviceCustomer.countCustomers()); + } + } + +}
participants (1)
-
fdesbois@users.nuiton.org