mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-15 12:15:50 +00:00
migrate all JUnit Integration tests from the repo layer to the service layer (step 1)
This commit is contained in:
parent
82d6f5e870
commit
be403a3017
4 changed files with 46 additions and 53 deletions
|
@ -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;
|
||||
|
||||
|
@ -43,16 +44,12 @@ import static org.junit.Assert.assertTrue;
|
|||
public abstract class AbstractPetRepositoryTests {
|
||||
|
||||
@Autowired
|
||||
protected PetRepository petRepository;
|
||||
|
||||
@Autowired
|
||||
protected OwnerRepository ownerRepository;
|
||||
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 org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.samples.petclinic.model.Vet;
|
||||
import org.springframework.samples.petclinic.util.EntityUtils;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
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;
|
||||
|
||||
/**
|
||||
* <p> Base class for {@link OwnerRepository} integration tests. </p>
|
||||
|
@ -39,13 +39,12 @@ import static org.junit.Assert.assertEquals;
|
|||
public abstract class AbstractVetRepositoryTests {
|
||||
|
||||
@Autowired
|
||||
protected VetRepository vetRepository;
|
||||
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;
|
||||
|
@ -37,24 +38,21 @@ import static org.junit.Assert.assertEquals;
|
|||
public abstract class AbstractVisitRepositoryTests {
|
||||
|
||||
@Autowired
|
||||
protected VisitRepository visitRepository;
|
||||
|
||||
@Autowired
|
||||
protected PetRepository petRepository;
|
||||
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());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue