content: package org.agoncal.application.petstore.service;
  
  import org.agoncal.application.petstore.domain.Address;
  import org.agoncal.application.petstore.domain.Customer;
  import org.jboss.arquillian.junit.Arquillian;
  import org.junit.Test;
  import org.junit.runner.RunWith;
  
  import javax.inject.Inject;
  
  import static org.junit.Assert.assertEquals;
  import static org.junit.Assert.assertNull;
  
  /**
   * @author Antonio Goncalves
   *         http://www.antoniogoncalves.org
   */
  @RunWith(Arquillian.class)
  public class CustomerServiceIT extends AbstractServiceIT {
  
      // ======================================
      // =             Attributes             =
      // ======================================
  
      @Inject
      private CustomerService customerService;
  
      // ======================================
      // =              Unit tests            =
      // ======================================
  
      @Test
      public void shouldCRUDaCustomer() {
  
          // Finds all the objects
          int initialNumber = customerService.findAllCustomers().size();
  
          // Creates an object
          Customer customer = new Customer("Richard", "Stallman", "rich", "rich", "rich@gnu.org", new Address("78 Gnu Rd", "Texas", "666", "WWW"));
  
          // Persists the object
          customer = customerService.createCustomer(customer);
          String login = customer.getLogin();
  
          // Finds all the objects and checks there's an extra one
          assertEquals("Should have an extra object", initialNumber + 1, customerService.findAllCustomers().size());
  
          // Finds the object by login
          customer = customerService.findCustomer(login);
          assertEquals("Richard", customer.getFirstname());
  
          // Updates the object
          customer.setFirstname("Rich");
          customerService.updateCustomer(customer);
  
          // Finds the object by login
          customer = customerService.findCustomer(login);
          assertEquals("Rich", customer.getFirstname());
  
          // Deletes the object
          customerService.removeCustomer(customer);
  
          // Checks the object has been deleted
          assertNull("Should has been deleted", customerService.findCustomer(login));
  
          // Finds all the objects and checks there's one less
          assertEquals("Should have an extra object", initialNumber, customerService.findAllCustomers().size());
      }
  }
  