package com.eswaraj.domain.repo;
import static org.junit.Assert.assertEquals;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.eswaraj.domain.nodes.Category;
import com.eswaraj.domain.nodes.Complaint;
import com.eswaraj.domain.nodes.Person;
import com.eswaraj.domain.nodes.Status.Mode;
import com.eswaraj.domain.validator.exception.ValidationException;
/**
* Test for complaint repo
* @author anuj
* @data Jan 22, 2014
*/
@ContextConfiguration(locations = { "classpath:eswaraj-domain-test.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@Ignore
public class TestComplaintReposityory {
@Autowired ComplaintRepository complaintRepository;
@Autowired LocationRepository locationRepository;
@Autowired CategoryRepository categoryRepository;
@Autowired DepartmentRepository departmentRepository;
@Autowired PersonRepository personRepository;
@Test
public void shouldSaveComplaint() {
Complaint complaint = new Complaint("test complaint");
Category category = new Category("cat1");
complaint.setCategory(category);
Person person = new Person();
person.setName("Foo Bar");
person.setEmail("foo@bar.com");
person = personRepository.save(person);
complaint.setPerson(person);
complaint = complaintRepository.save(complaint);
Complaint expectedComplaint = complaintRepository.getById(complaint.getId());
assertEquals(expectedComplaint.getTitle(), complaint.getTitle());
}
@Test
public void shouldGetComplaint_ByLocation() {
Complaint complaint = new Complaint("test complaint");
Category category = new Category("cat1");
complaint.setCategory(category);
Person person = new Person();
person.setName("Foo Bar");
person.setEmail("foo@bar.com");
person = personRepository.save(person);
complaint.setPerson(person);
complaint = complaintRepository.save(complaint);
}
@Test
public void shouldGetComplaint_ByCategory() {
Complaint complaint = new Complaint("test complaint");
Category category = new Category("cat1");
category = categoryRepository.save(category);
complaint.setCategory(category);
Person person = new Person();
person.setName("Foo Bar");
person.setEmail("foo@bar.com");
person = personRepository.save(person);
complaint.setPerson(person);
complaint = complaintRepository.save(complaint);
Category category1 = categoryRepository.getById(complaint.getCategory().getId());
Complaint expectedComplaint = complaintRepository.getByCategory(category1);
assertEquals(expectedComplaint.getCategory().getName(), complaint.getCategory().getName());
assertEquals(expectedComplaint.getCategory().getId(), complaint.getCategory().getId());
}
@Test(expected=ValidationException.class)
public void shouldCheckEmpty_Title() {
Complaint complaint = new Complaint(null);
complaint = complaintRepository.save(complaint);
}
@Test(expected=ValidationException.class)
public void shouldCheck_NoCatergory() {
Complaint complaint = new Complaint("test complaint");
complaint = complaintRepository.save(complaint);
}
@Test(expected=ValidationException.class)
public void shouldCheck_NoLocation() {
Complaint complaint = new Complaint("test complaint");
Category category = new Category("cat1");
complaint.setCategory(category);
complaint = complaintRepository.save(complaint);
}
@Test(expected=ValidationException.class)
public void shouldCheck_NoPerson() {
Complaint complaint = new Complaint("test complaint");
Category category = new Category("cat1");
complaint.setCategory(category);
complaint = complaintRepository.save(complaint);
}
@Test
public void shouldLodgeComplaint_AsPending() {
Complaint complaint = new Complaint("Test Complaint");
Category category = new Category("cat1");
complaint.setCategory(category);
Person person = new Person();
person.setName("Foo Bar");
person.setEmail("foo@bar.com");
person = personRepository.save(person);
complaint.setPerson(person);
complaint = complaintRepository.save(complaint);
Complaint expectedComplaint = complaintRepository.getById(complaint.getId());
assertEquals(expectedComplaint.getStatus().getMode(), Mode.PENDING);
}
}