Skip to content
Snippets Groups Projects
Commit be403a30 authored by Mic's avatar Mic
Browse files

migrate all JUnit Integration tests from the repo layer to the service layer (step 1)

parent 82d6f5e8
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,7 @@ package org.springframework.samples.petclinic.repository;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.samples.petclinic.model.Owner;
import org.springframework.samples.petclinic.service.ClinicService;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
......@@ -27,13 +28,13 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
* <p> Base class for {@link OwnerRepository} integration tests. </p> <p> Subclasses should specify Spring context
* <p> Base class for {@link clinicService} integration tests. </p> <p> Subclasses should specify Spring context
* configuration using {@link ContextConfiguration @ContextConfiguration} annotation </p> <p>
* AbstractOwnerRepositoryTests and its subclasses benefit from the following services provided by the Spring
* AbstractclinicServiceTests and its subclasses benefit from the following services provided by the Spring
* TestContext Framework: </p> <ul> <li><strong>Spring IoC container caching</strong> which spares us unnecessary set up
* time between test execution.</li> <li><strong>Dependency Injection</strong> of test fixture instances, meaning that
* we don't need to perform application context lookups. See the use of {@link Autowired @Autowired} on the <code>{@link
* AbstractOwnerRepositoryTests#ownerRepository ownerRepository}</code> instance variable, which uses autowiring <em>by
* AbstractclinicServiceTests#clinicService clinicService}</code> instance variable, which uses autowiring <em>by
* type</em>. <li><strong>Transaction management</strong>, meaning each test method is executed in its own transaction,
* which is automatically rolled back by default. Thus, even if tests insert or otherwise change database state, there
* is no need for a teardown or cleanup script. <li> An {@link org.springframework.context.ApplicationContext
......@@ -48,23 +49,22 @@ import static org.junit.Assert.assertTrue;
public abstract class AbstractOwnerRepositoryTests {
@Autowired
protected OwnerRepository ownerRepository;
protected ClinicService clinicService;
@Test
@Transactional
public void findOwners() {
Collection<Owner> owners = this.ownerRepository.findByLastName("Davis");
Collection<Owner> owners = this.clinicService.findOwnerByLastName("Davis");
assertEquals(2, owners.size());
owners = this.ownerRepository.findByLastName("Daviss");
owners = this.clinicService.findOwnerByLastName("Daviss");
assertEquals(0, owners.size());
}
@Test
@Transactional
public void findSingleOwner() {
Owner owner1 = this.ownerRepository.findById(1);
Owner owner1 = this.clinicService.findOwnerById(1);
assertTrue(owner1.getLastName().startsWith("Franklin"));
Owner owner10 = this.ownerRepository.findById(10);
Owner owner10 = this.clinicService.findOwnerById(10);
assertEquals("Carlos", owner10.getFirstName());
assertEquals(owner1.getPets().size(), 1);
......@@ -73,7 +73,7 @@ public abstract class AbstractOwnerRepositoryTests {
@Test
@Transactional
public void insertOwner() {
Collection<Owner> owners = this.ownerRepository.findByLastName("Schultz");
Collection<Owner> owners = this.clinicService.findOwnerByLastName("Schultz");
int found = owners.size();
Owner owner = new Owner();
owner.setFirstName("Sam");
......@@ -81,19 +81,19 @@ public abstract class AbstractOwnerRepositoryTests {
owner.setAddress("4, Evans Street");
owner.setCity("Wollongong");
owner.setTelephone("4444444444");
this.ownerRepository.save(owner);
owners = this.ownerRepository.findByLastName("Schultz");
this.clinicService.saveOwner(owner);
owners = this.clinicService.findOwnerByLastName("Schultz");
assertEquals("Verifying number of owners after inserting a new one.", found + 1, owners.size());
}
@Test
@Transactional
public void updateOwner() throws Exception {
Owner o1 = this.ownerRepository.findById(1);
Owner o1 = this.clinicService.findOwnerById(1);
String old = o1.getLastName();
o1.setLastName(old + "X");
this.ownerRepository.save(o1);
o1 = this.ownerRepository.findById(1);
this.clinicService.saveOwner(o1);
o1 = this.clinicService.findOwnerById(1);
assertEquals(old + "X", o1.getLastName());
}
......
......@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.samples.petclinic.model.Owner;
import org.springframework.samples.petclinic.model.Pet;
import org.springframework.samples.petclinic.model.PetType;
import org.springframework.samples.petclinic.service.ClinicService;
import org.springframework.samples.petclinic.util.EntityUtils;
import org.springframework.transaction.annotation.Transactional;
......@@ -42,17 +43,13 @@ import static org.junit.Assert.assertTrue;
*/
public abstract class AbstractPetRepositoryTests {
@Autowired
protected PetRepository petRepository;
@Autowired
protected OwnerRepository ownerRepository;
@Autowired
protected ClinicService clinicService;
@Test
@Transactional
public void getPetTypes() {
Collection<PetType> petTypes = this.petRepository.findPetTypes();
Collection<PetType> petTypes = this.clinicService.findPetTypes();
PetType petType1 = EntityUtils.getById(petTypes, PetType.class, 1);
assertEquals("cat", petType1.getName());
......@@ -61,14 +58,13 @@ public abstract class AbstractPetRepositoryTests {
}
@Test
@Transactional
public void findPet() {
Collection<PetType> types = this.petRepository.findPetTypes();
Pet pet7 = this.petRepository.findById(7);
Collection<PetType> types = this.clinicService.findPetTypes();
Pet pet7 = this.clinicService.findPetById(7);
assertTrue(pet7.getName().startsWith("Samantha"));
assertEquals(EntityUtils.getById(types, PetType.class, 1).getId(), pet7.getType().getId());
assertEquals("Jean", pet7.getOwner().getFirstName());
Pet pet6 = this.petRepository.findById(6);
Pet pet6 = this.clinicService.findPetById(6);
assertEquals("George", pet6.getName());
assertEquals(EntityUtils.getById(types, PetType.class, 4).getId(), pet6.getType().getId());
assertEquals("Peter", pet6.getOwner().getFirstName());
......@@ -77,30 +73,30 @@ public abstract class AbstractPetRepositoryTests {
@Test
@Transactional
public void insertPet() {
Owner owner6 = this.ownerRepository.findById(6);
Owner owner6 = this.clinicService.findOwnerById(6);
int found = owner6.getPets().size();
Pet pet = new Pet();
pet.setName("bowser");
Collection<PetType> types = this.petRepository.findPetTypes();
Collection<PetType> types = this.clinicService.findPetTypes();
pet.setType(EntityUtils.getById(types, PetType.class, 2));
pet.setBirthDate(new DateTime());
owner6.addPet(pet);
assertEquals(found + 1, owner6.getPets().size());
// both storePet and storeOwner are necessary to cover all ORM tools
this.petRepository.save(pet);
this.ownerRepository.save(owner6);
owner6 = this.ownerRepository.findById(6);
this.clinicService.savePet(pet);
this.clinicService.saveOwner(owner6);
owner6 = this.clinicService.findOwnerById(6);
assertEquals(found + 1, owner6.getPets().size());
}
@Test
@Transactional
public void updatePet() throws Exception {
Pet pet7 = this.petRepository.findById(7);
Pet pet7 = this.clinicService.findPetById(7);
String old = pet7.getName();
pet7.setName(old + "X");
this.petRepository.save(pet7);
pet7 = this.petRepository.findById(7);
this.clinicService.savePet(pet7);
pet7 = this.clinicService.findPetById(7);
assertEquals(old + "X", pet7.getName());
}
......
......@@ -15,15 +15,15 @@
*/
package org.springframework.samples.petclinic.repository;
import static org.junit.Assert.assertEquals;
import java.util.Collection;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.samples.petclinic.model.Vet;
import org.springframework.samples.petclinic.service.ClinicService;
import org.springframework.samples.petclinic.util.EntityUtils;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import static org.junit.Assert.assertEquals;
/**
* <p> Base class for {@link OwnerRepository} integration tests. </p>
......@@ -38,14 +38,13 @@ import static org.junit.Assert.assertEquals;
*/
public abstract class AbstractVetRepositoryTests {
@Autowired
protected VetRepository vetRepository;
@Autowired
protected ClinicService clinicService;
@Test
@Transactional
public void findVets() {
Collection<Vet> vets = this.vetRepository.findAll();
Collection<Vet> vets = this.clinicService.findVets();
Vet v1 = EntityUtils.getById(vets, Vet.class, 2);
assertEquals("Leary", v1.getLastName());
......
......@@ -19,6 +19,7 @@ import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.samples.petclinic.model.Pet;
import org.springframework.samples.petclinic.model.Visit;
import org.springframework.samples.petclinic.service.ClinicService;
import org.springframework.transaction.annotation.Transactional;
import static org.junit.Assert.assertEquals;
......@@ -36,25 +37,22 @@ import static org.junit.Assert.assertEquals;
*/
public abstract class AbstractVisitRepositoryTests {
@Autowired
protected VisitRepository visitRepository;
@Autowired
protected PetRepository petRepository;
@Autowired
protected ClinicService clinicService;
@Test
@Transactional
public void insertVisit() {
Pet pet7 = this.petRepository.findById(7);
Pet pet7 = this.clinicService.findPetById(7);
int found = pet7.getVisits().size();
Visit visit = new Visit();
pet7.addVisit(visit);
visit.setDescription("test");
// both storeVisit and storePet are necessary to cover all ORM tools
this.visitRepository.save(visit);
this.petRepository.save(pet7);
pet7 = this.petRepository.findById(7);
this.clinicService.saveVisit(visit);
this.clinicService.savePet(pet7);
pet7 = this.clinicService.findPetById(7);
assertEquals(found + 1, pet7.getVisits().size());
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment