Package org.vaelen.contactmanager.test

Source Code of org.vaelen.contactmanager.test.TestContactRepository

package org.vaelen.contactmanager.test;

import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;

import javax.annotation.Resource;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.vaelen.contactmanager.ContactRepository;
import org.vaelen.contactmanager.model.Contact;
import org.vaelen.contactmanager.model.EmailAddress;
import org.vaelen.contactmanager.model.PhoneNumber;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext-test.xml")   
public class TestContactRepository {

  protected ContactRepository repository;
 
  protected String contactId;
  protected String lastName;
  protected int lastNameCount;
  protected String firstName;
  protected int firstNameCount;
  protected String phoneNumber;
  protected int phoneNumberCount;
  protected String emailAddress;
  protected int emailAddressCount;

  protected AtomicBoolean initialized = new AtomicBoolean(false);
 
  @Resource
  public void setRepository(ContactRepository repository) {
    this.repository = repository;
  }
 
  @Before
  public void init() {
    if(initialized.compareAndSet(false, true)) {
      List<Contact> contacts = repository.listContacts();
      Assert.assertNotNull("Contact List Was Null", contacts);
      Assert.assertFalse("Contact List Was Empty", contacts.isEmpty());
     
      for(Contact contact: contacts) {
        // Find a contact id to use for loadContact()
        if(contactId == null) {
          contactId = contact.getContactId();
        }
        // Find a last name to use for findContactsByLastName()
        if(lastName == null) {
          lastName = contact.getLastName();
          lastNameCount = 0;
        }
        if(lastName != null) {
          if(lastName.equals(contact.getLastName())) {
            lastNameCount++;
          }
        }
        // Find a first name to use for findContactsByFirstName()
        if(firstName == null) {
          firstName = contact.getFirstName();
          firstNameCount = 0;
        }
        if(firstName != null) {
          if(firstName.equals(contact.getFirstName())) {
            firstNameCount++;
          }
        }
        // Find an email address to use for findContactsByEmailAddress()
        if(emailAddress == null) {
          for(EmailAddress email: contact.getEmailAddresses()) {
            if(email.getEmailAddress() != null) {
              emailAddress = email.getEmailAddress();
              emailAddressCount = 0;
              break;
            }
          }
        }
        if(emailAddress != null) {
          for(EmailAddress email: contact.getEmailAddresses()) {
            if(emailAddress.equals(email.getEmailAddress())) {
              emailAddressCount++;
              break;
            }
          }
        }
        // Find a phone number to use for findContactsByPhoneNumber()
        if(phoneNumber == null) {
          for(PhoneNumber phone: contact.getPhoneNumbers()) {
            if(phone.getPhoneNumber() != null) {
              phoneNumber = phone.getPhoneNumber();
              phoneNumberCount = 0;
              break;
            }
          }
        }
        if(phoneNumber != null) {
          for(PhoneNumber phone: contact.getPhoneNumbers()) {
            if(phoneNumber.equals(phone.getPhoneNumber())) {
              phoneNumberCount++;
              break;
            }
          }
        }
      }
    }
  }
 
  @Test
  public void listContacts() {
    List<Contact> contacts = repository.listContacts();
    Assert.assertNotNull("Contact List Was Null", contacts);
    Assert.assertFalse("Contact List Was Empty", contacts.isEmpty());
  }
 
  @Test
  public void findContactsByLastName() {
    List<Contact> contacts = repository.findContactsByLastName(lastName);
    Assert.assertNotNull("Contact List Was Null", contacts);
    Assert.assertFalse("Contact List Was Empty", contacts.isEmpty());
    Assert.assertEquals("Contact List Is The Wrong Size", lastNameCount, contacts.size());
  }
 
  @Test
  public void findContactsByFirstName() {
    List<Contact> contacts = repository.findContactsByFirstName(firstName);
    Assert.assertNotNull("Contact List Was Null", contacts);
    Assert.assertFalse("Contact List Was Empty", contacts.isEmpty());
    Assert.assertEquals("Contact List Is The Wrong Size", firstNameCount, contacts.size());
  }
 
  @Test
  public void findContactsByPhoneNumber() {
    List<Contact> contacts = repository.findContactsByPhoneNumber(phoneNumber);
    Assert.assertNotNull("Contact List Was Null", contacts);
    Assert.assertFalse("Contact List Was Empty", contacts.isEmpty());
    Assert.assertEquals("Contact List Is The Wrong Size", phoneNumberCount, contacts.size());
  }
 
  @Test
  public void findContactsByEmailAddress() {
    List<Contact> contacts = repository.findContactsByEmailAddress(emailAddress);
    Assert.assertNotNull("Contact List Was Null", contacts);
    Assert.assertFalse("Contact List Was Empty", contacts.isEmpty());
    Assert.assertEquals("Contact List Is The Wrong Size", emailAddressCount, contacts.size());
  }
 
  @Test
  public void loadContact() {
    Contact contact = repository.loadContact(contactId);
    Assert.assertNotNull("Contact Was Null", contact);
  }
 
  @Test
  public void saveContact() {
    String note = String.format("Updated Last: %tc", new Date());
   
    Contact contact = repository.loadContact(contactId);
    Assert.assertNotNull("Contact Was Null Before Save", contact);
   
    contact.setNotes(note);
    repository.saveContact(contact);
   
    contact = repository.loadContact(contactId);
    Assert.assertNotNull("Contact Was Null After Save", contact);
    Assert.assertNotNull("Contact Was Not Saved, Notes Are Not There", contact.getNotes());
    Assert.assertEquals("Contact Was Not Saved, Notes Are Different", note, contact.getNotes());
  }
 
}
TOP

Related Classes of org.vaelen.contactmanager.test.TestContactRepository

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.