TS18: Add a specific exception for the persistence layer

This commit is contained in:
Ivaylo Ivanov 2020-04-05 17:39:55 +02:00
parent c10bbb59af
commit 1c31939b65
13 changed files with 98 additions and 92 deletions

View File

@ -4,12 +4,12 @@ import at.ac.tuwien.sepm.assignment.individual.endpoint.dto.HorseDto;
import at.ac.tuwien.sepm.assignment.individual.endpoint.mapper.HorseMapper;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.service.HorseService;
import at.ac.tuwien.sepm.assignment.individual.util.ValidationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@ -77,7 +77,7 @@ public class HorseEndpoint {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,
"Error during adding new horse: " + e.getMessage());
} catch (DataAccessException e) {
} catch (PersistenceException e) {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY,
"Something went wrong during the communication with the database");
@ -96,7 +96,7 @@ public class HorseEndpoint {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,
"Error during updating horse with id " + id + ": " + e.getMessage());
} catch (DataAccessException e) {
} catch (PersistenceException e) {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY,
"Something went wrong during the communication with the database");
@ -117,7 +117,7 @@ public class HorseEndpoint {
LOGGER.info("DELETE " + BASE_URL + "/{}", id);
try {
horseService.deleteHorse(id);
} catch (DataAccessException e) {
} catch (PersistenceException e) {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY,
"Something went wrong during the communication with the database");

View File

@ -6,6 +6,7 @@ import at.ac.tuwien.sepm.assignment.individual.endpoint.mapper.HorseMapper;
import at.ac.tuwien.sepm.assignment.individual.endpoint.mapper.OwnerMapper;
import at.ac.tuwien.sepm.assignment.individual.entity.Owner;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.service.OwnerService;
import java.lang.invoke.MethodHandles;
@ -16,7 +17,6 @@ import at.ac.tuwien.sepm.assignment.individual.util.ValidationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
@ -92,7 +92,7 @@ public class OwnerEndpoint {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,
"Error during adding new owner: " + e.getMessage());
} catch (DataAccessException e) {
} catch (PersistenceException e) {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY,
"Something went wrong during the communication with the database");
@ -111,7 +111,7 @@ public class OwnerEndpoint {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,
"Error during updating owner with id " + id + ": " + e.getMessage());
} catch (DataAccessException e) {
} catch (PersistenceException e) {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY,
"Something went wrong during the communication with the database");
@ -132,7 +132,7 @@ public class OwnerEndpoint {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.FORBIDDEN,
"The requested owner cannot be deleted because there are horses that are assigned to him/her");
}catch (DataAccessException e) {
}catch (PersistenceException e) {
LOGGER.error(e.getMessage());
throw new ResponseStatusException(HttpStatus.UNPROCESSABLE_ENTITY,
"Something went wrong during the communication with the database");

View File

@ -0,0 +1,13 @@
package at.ac.tuwien.sepm.assignment.individual.exception;
public class PersistenceException extends RuntimeException {
public PersistenceException(String message) {
super(message);
}
public PersistenceException(String message, Exception e) {
super(message, e);
}
}

View File

@ -2,7 +2,7 @@ package at.ac.tuwien.sepm.assignment.individual.persistence;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import org.springframework.dao.DataAccessException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import java.io.IOException;
import java.util.List;
@ -13,46 +13,46 @@ public interface HorseDao {
/**
* @param id of the horse to find.
* @return the horse with the specified id.
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws PersistenceException will be thrown if something goes wrong during the database access.
* @throws NotFoundException will be thrown if the horse could not be found in the database.
*/
Horse findOneById(Long id);
Horse findOneById(Long id) throws NotFoundException, PersistenceException;
/**
* @return a list of all horses in the system
* @throws NotFoundException will be thrown if no horses are present in the database
* @throws DataAccessException will be thrown if something goes wrong during the database access
* @throws PersistenceException will be thrown if something goes wrong during the database access
*/
List<Horse> getAll() throws NotFoundException;
List<Horse> getAll() throws NotFoundException, PersistenceException;
/**
* @param filters to use for filtering the horses
* @return a list of all horses that fill the criteria
* @throws NotFoundException wil be thrown if no horses fill the criteria
* @throws DataAccessException will be thrown if something goes wrong during the database access
* @throws PersistenceException will be thrown if something goes wrong during the database access.
*/
List<Horse> getFiltered(Map<String, String> filters) throws NotFoundException;
List<Horse> getFiltered(Map<String, String> filters) throws NotFoundException, PersistenceException;
/**
* @param horse that specifies the horse to add
* @return the newly created horse
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws PersistenceException will be thrown if something goes wrong during the database access.
*/
Horse addHorse(Horse horse);
Horse addHorse(Horse horse) throws PersistenceException;
/**
* @param horse that specifies the new horse values alongside with the id of the horse to update
* @return the updated horse
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws IOException will be thrown if the old horse image could not be deleted
* @throws PersistenceException will be thrown if something goes wrong during the database access.
* @throws IOException will be thrown if the old horse image could not be deleted
*/
Horse updateHorse(Horse horse) throws DataAccessException, IOException;
Horse updateHorse(Horse horse) throws PersistenceException, IOException;
/**
* @param id of the horse to delete
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws NotFoundException will be thrown if the horse could not be found in the database.
* @throws IOException will be thrown if the horse image could not be deleted
* @throws PersistenceException will be thrown if something goes wrong during the database access.
* @throws NotFoundException will be thrown if the horse could not be found in the database.
* @throws IOException will be thrown if the horse image could not be deleted
*/
void deleteHorse(Long id) throws DataAccessException, NotFoundException, IOException;
void deleteHorse(Long id) throws PersistenceException, NotFoundException, IOException;
}

View File

@ -3,7 +3,7 @@ package at.ac.tuwien.sepm.assignment.individual.persistence;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.entity.Owner;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import org.springframework.dao.DataAccessException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import java.util.List;
import java.util.Map;
@ -13,15 +13,13 @@ public interface OwnerDao {
/**
* @param id of the owner to find.
* @return the owner with the specified id.
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws NotFoundException will be thrown if the owner could not be found in the database.
* @throws NotFoundException will be thrown if the owner could not be found in the database.
*/
Owner findOneById(Long id);
Owner findOneById(Long id) throws NotFoundException;
/**
* @return a list of all owners in the system
* @throws NotFoundException will be thrown if no owners are present in the database
* @throws DataAccessException will be thrown if something goes wrong during the database access
*/
List<Owner> getAll() throws NotFoundException;
@ -29,7 +27,6 @@ public interface OwnerDao {
* @param filters to use for filtering the owners
* @return a list of all owners that fill the criteria
* @throws NotFoundException wil be thrown if no owners fill the criteria
* @throws DataAccessException will be thrown if something goes wrong during the database access
*/
List<Owner> getFiltered(Map<String, String> filters) throws NotFoundException;
@ -37,28 +34,28 @@ public interface OwnerDao {
* @param id of the owner whose horses the database should obtain
* @return a list of all horses that the specified owner owns
* @throws NotFoundException will be thrown if the owner owns no horses or if the owner could not be found
* @throws DataAccessException will be thrown if something goes wrong during the database access
*/
List<Horse> getOwnedHorses(Long id) throws NotFoundException;
/**
* @param owner that specifies the owner to add
* @return the newly created owner
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws PersistenceException will be thrown if something goes wrong during the database access.
*/
Owner addOwner(Owner owner);
Owner addOwner(Owner owner) throws PersistenceException;
/**
* @param owner that specifies the new owner values alongside with the id of the owner to update
* @return the updated owner
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws PersistenceException will be thrown if something goes wrong during the database access.
* @throws NotFoundException wil be thrown if no owners fill the criteria
*/
Owner updateOwner(Owner owner) throws DataAccessException;
Owner updateOwner(Owner owner) throws PersistenceException, NotFoundException;
/**
* @param id of the owner to delete
* @throws DataAccessException will be thrown if something goes wrong during the database access.
* @throws NotFoundException will be thrown if the owner could not be found in the database.
* @throws PersistenceException will be thrown if something goes wrong during the database access.
* @throws NotFoundException will be thrown if the owner could not be found in the database.
*/
void deleteOwner(Long id) throws DataAccessException, NotFoundException;
void deleteOwner(Long id) throws PersistenceException, NotFoundException;
}

View File

@ -3,6 +3,7 @@ package at.ac.tuwien.sepm.assignment.individual.persistence.impl;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.enums.ERace;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.persistence.FileDao;
import at.ac.tuwien.sepm.assignment.individual.persistence.HorseDao;
import org.slf4j.Logger;
@ -149,14 +150,13 @@ public class HorseJdbcDao implements HorseDao {
}, keyHolder);
if (changes == 0)
throw new DataAccessException("Creating horse failed, no rows affected") {};
throw new PersistenceException("Creating horse failed, no rows affected");
horse.setId(((Number)keyHolder.getKeys().get("id")).longValue());
return horse;
} catch (DataAccessException e) {
// We are doing this in order to not change the exception type
throw new DataAccessException("Adding new records failed", e) {};
throw new PersistenceException("Adding new records failed", e);
}
}
@ -197,7 +197,7 @@ public class HorseJdbcDao implements HorseDao {
});
if (changes == 0)
throw new DataAccessException("Updating horse failed, no rows affected") {};
throw new PersistenceException("Updating horse failed, no rows affected");
horse.setCreatedAt(oldHorse.getCreatedAt());
@ -206,8 +206,7 @@ public class HorseJdbcDao implements HorseDao {
return horse;
} catch (DataAccessException e) {
// We are doing this in order to not change the exception type
throw new DataAccessException("Updating records failed", e) {};
throw new PersistenceException("Updating records failed", e);
}
}
@ -225,12 +224,11 @@ public class HorseJdbcDao implements HorseDao {
});
if (changes == 0)
throw new DataAccessException("Deleting horse failed, no rows affected") {};
throw new PersistenceException("Deleting horse failed, no rows affected");
fileDao.delete(horseToDelete.getImagePath());
} catch(DataAccessException e){
// We are doing this in order to not change the exception type
throw new DataAccessException("Deleting records failed", e) {};
throw new PersistenceException("Deleting records failed", e);
}
}

View File

@ -3,6 +3,7 @@ package at.ac.tuwien.sepm.assignment.individual.persistence.impl;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.entity.Owner;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.persistence.OwnerDao;
import java.lang.invoke.MethodHandles;
@ -133,15 +134,14 @@ public class OwnerJdbcDao implements OwnerDao {
}, keyHolder);
if (changes == 0)
throw new DataAccessException("Creating owner failed, no rows affected") {};
throw new PersistenceException("Creating owner failed, no rows affected");
owner.setId(((Number)keyHolder.getKeys().get("id")).longValue());
return owner;
} catch (DataAccessException e) {
// We are doing this in order to not change the exception type
throw new DataAccessException("Adding new records failed", e) {};
throw new PersistenceException("Adding new records failed", e);
}
}
@ -172,14 +172,13 @@ public class OwnerJdbcDao implements OwnerDao {
});
if (changes == 0)
throw new DataAccessException("Updating owner failed, no rows affected") {};
throw new PersistenceException("Updating owner failed, no rows affected");
owner.setCreatedAt(oldOwner.getCreatedAt());
return owner;
} catch(DataAccessException e) {
// We are doing this in order to not change the exception type
throw new DataAccessException("Updating records failed", e) {};
throw new PersistenceException("Updating records failed", e);
}
}
@ -200,11 +199,10 @@ public class OwnerJdbcDao implements OwnerDao {
});
if (changes == 0)
throw new DataAccessException("Deleting owner failed, no rows affected") {};
throw new PersistenceException("Deleting owner failed, no rows affected");
} catch(DataAccessException e){
// We are doing this in order to not change the exception type
throw new DataAccessException("Deleting records failed", e) {};
throw new PersistenceException("Deleting records failed", e);
}
}

View File

@ -2,8 +2,8 @@ package at.ac.tuwien.sepm.assignment.individual.service;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.util.ValidationException;
import org.springframework.dao.DataAccessException;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@ -37,7 +37,7 @@ public interface HorseService {
* @param horse to add.
* @return the new horse.
* @throws ValidationException will be thrown if something goes wrong during verification.
* @throws DataAccessException will be thrown if the horse could not be saved in the database.
* @throws PersistenceException will be thrown if the horse could not be saved in the database.
*/
Horse addHorse(Horse horse);
@ -45,18 +45,18 @@ public interface HorseService {
* @param horse that specifies the new horse values alongside with the id of the horse to update
* @return the updated horse
* @throws ValidationException will be thrown if something goes wrong during verification.
* @throws DataAccessException will be thrown if the horse could not be saved in the database.
* @throws PersistenceException will be thrown if the horse could not be saved in the database.
* @throws IOException will be thrown if the old horse image could not be deleted
*/
Horse updateHorse(Horse horse) throws ValidationException, DataAccessException, IOException;
Horse updateHorse(Horse horse) throws ValidationException, PersistenceException, IOException;
/**
* @param id of the horse to delete
* @throws NotFoundException will be thrown if the horse could not be found in the system
* @throws DataAccessException will be thrown if the horse could not be deleted from the database
* @throws PersistenceException will be thrown if the horse could not be deleted from the database
* @throws IOException will be thrown if the horse image could not be deleted
*/
void deleteHorse(Long id) throws NotFoundException, DataAccessException, IOException;
void deleteHorse(Long id) throws NotFoundException, PersistenceException, IOException;
/**
* @param img image to upload

View File

@ -3,8 +3,8 @@ package at.ac.tuwien.sepm.assignment.individual.service;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.entity.Owner;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.util.ValidationException;
import org.springframework.dao.DataAccessException;
import java.util.List;
import java.util.Map;
@ -38,7 +38,7 @@ public interface OwnerService {
* @param id of the owner whose horses the database should obtain
* @return a list of all horses that the specified owner owns
* @throws NotFoundException will be thrown if the owner owns no horses or if the owner could not be found
* @throws DataAccessException will be thrown if something goes wrong during the database access
* @throws PersistenceException will be thrown if something goes wrong during the database access
*/
List<Horse> getOwnedHorses(Long id) throws NotFoundException;
@ -46,22 +46,22 @@ public interface OwnerService {
* @param owner to create
* @return the new owner
* @throws ValidationException will be thrown if something goes wrong during verification.
* @throws DataAccessException will be thrown if the owner could not be saved in the database.
* @throws PersistenceException will be thrown if the owner could not be saved in the database.
*/
Owner addOwner(Owner owner) throws ValidationException, DataAccessException;
Owner addOwner(Owner owner) throws ValidationException, PersistenceException;
/**
* @param owner that specifies the new owner values alongside with the id of the owner to update
* @return the updated owner
* @throws ValidationException will be thrown if something goes wrong during verification.
* @throws DataAccessException will be thrown if the owner could not be saved in the database.
* @throws PersistenceException will be thrown if the owner could not be saved in the database.
*/
Owner updateOwner(Owner owner) throws ValidationException, DataAccessException;
Owner updateOwner(Owner owner) throws ValidationException, PersistenceException;
/**
* @param id of the owner to delete
* @throws NotFoundException will be thrown if the owner could not be found in the system
* @throws DataAccessException will be thrown if the owner could not be deleted from the database
* @throws PersistenceException will be thrown if the owner could not be deleted from the database
*/
void deleteOwner(Long id) throws NotFoundException, DataAccessException;
void deleteOwner(Long id) throws NotFoundException, PersistenceException;
}

View File

@ -2,6 +2,7 @@ package at.ac.tuwien.sepm.assignment.individual.service.impl;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.persistence.FileDao;
import at.ac.tuwien.sepm.assignment.individual.persistence.HorseDao;
import at.ac.tuwien.sepm.assignment.individual.service.HorseService;
@ -10,7 +11,6 @@ import at.ac.tuwien.sepm.assignment.individual.util.Validator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@ -53,21 +53,21 @@ public class SimpleHorseService implements HorseService {
}
@Override
public Horse addHorse(Horse horse) throws ValidationException, DataAccessException {
public Horse addHorse(Horse horse) throws ValidationException, PersistenceException {
this.validator.validateNewHorse(horse);
LOGGER.debug("addHorse({})", horse.toString());
return horseJdbcDao.addHorse(horse);
}
@Override
public Horse updateHorse(Horse horse) throws ValidationException, DataAccessException, IOException {
public Horse updateHorse(Horse horse) throws ValidationException, PersistenceException, IOException {
this.validator.validateUpdateHorse(horse);
LOGGER.debug("updateHorse({})", horse.toString());
return horseJdbcDao.updateHorse(horse);
}
@Override
public void deleteHorse(Long id) throws NotFoundException, DataAccessException, IOException {
public void deleteHorse(Long id) throws NotFoundException, PersistenceException, IOException {
LOGGER.debug("deleteHorse({})", id);
horseJdbcDao.deleteHorse(id);
}

View File

@ -3,6 +3,7 @@ package at.ac.tuwien.sepm.assignment.individual.service.impl;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.entity.Owner;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.persistence.OwnerDao;
import at.ac.tuwien.sepm.assignment.individual.service.OwnerService;
import at.ac.tuwien.sepm.assignment.individual.util.ValidationException;
@ -15,7 +16,6 @@ import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
@Service
@ -57,21 +57,21 @@ public class SimpleOwnerService implements OwnerService {
}
@Override
public Owner addOwner(Owner owner) throws ValidationException, DataAccessException {
public Owner addOwner(Owner owner) throws ValidationException, PersistenceException {
LOGGER.debug("addOwner({})", owner);
this.validator.validateNewOwner(owner);
return ownerDao.addOwner(owner);
}
@Override
public Owner updateOwner(Owner owner) throws ValidationException, DataAccessException {
public Owner updateOwner(Owner owner) throws ValidationException, PersistenceException {
LOGGER.debug("updateOwner({})", owner);
this.validator.validateUpdateOwner(owner);
return ownerDao.updateOwner(owner);
}
@Override
public void deleteOwner(Long id) throws NotFoundException, DataAccessException {
public void deleteOwner(Long id) throws NotFoundException, PersistenceException {
LOGGER.debug("deleteOwner({})", id);
ownerDao.deleteOwner(id);
}

View File

@ -5,11 +5,11 @@ import static org.junit.jupiter.api.Assertions.*;
import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.enums.ERace;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.persistence.HorseDao;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import java.io.IOException;
import java.sql.Date;
@ -81,10 +81,10 @@ public abstract class HorseDaoTestBase {
}
@Test
@DisplayName("Adding a new horse with the incorrect parameters should throw DataAccessException")
public void addingNewHorse_incorrectParameters_shouldThrowDataAccess() {
@DisplayName("Adding a new horse with the incorrect parameters should throw PersistenceException")
public void addingNewHorse_incorrectParameters_shouldThrowPersistence() {
Horse newHorse = new Horse("Zephyr", "Nice horse", (short) 80, Date.valueOf("2020-01-01"), null, null, null);
assertThrows(DataAccessException.class, () -> horseDao.addHorse(newHorse));
assertThrows(PersistenceException.class, () -> horseDao.addHorse(newHorse));
}
@Test
@ -117,8 +117,8 @@ public abstract class HorseDaoTestBase {
}
@Test
@DisplayName("Updating a horse with the incorrect parameters should throw DataAccessException")
public void updatingHorse_incorrectParameters_shouldThrowDataAccess() {
@DisplayName("Updating a horse with the incorrect parameters should throw PersistenceException")
public void updatingHorse_incorrectParameters_shouldThrowPersistence() {
// Create horse
Horse newHorse = new Horse("Zephyr", "Nice horse", (short) 4, Date.valueOf("2020-01-01"), ERace.APPALOOSA, "files/test.png", null);
Horse savedHorse = horseDao.addHorse(newHorse);
@ -132,7 +132,7 @@ public abstract class HorseDaoTestBase {
newHorse.setRace(null);
newHorse.setImagePath(null);
newHorse.setOwner(null);
assertThrows(DataAccessException.class, () -> horseDao.updateHorse(newHorse));
assertThrows(PersistenceException.class, () -> horseDao.updateHorse(newHorse));
}
@Test

View File

@ -6,12 +6,12 @@ import at.ac.tuwien.sepm.assignment.individual.entity.Horse;
import at.ac.tuwien.sepm.assignment.individual.entity.Owner;
import at.ac.tuwien.sepm.assignment.individual.enums.ERace;
import at.ac.tuwien.sepm.assignment.individual.exception.NotFoundException;
import at.ac.tuwien.sepm.assignment.individual.exception.PersistenceException;
import at.ac.tuwien.sepm.assignment.individual.persistence.HorseDao;
import at.ac.tuwien.sepm.assignment.individual.persistence.OwnerDao;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataIntegrityViolationException;
import java.io.IOException;
@ -108,10 +108,10 @@ public abstract class OwnerDaoTestBase {
}
@Test
@DisplayName("Adding a new owner with the incorrect parameters should throw DataAccessException")
public void addingNewOwner_incorrectParameters_shouldThrowDataAccess() {
@DisplayName("Adding a new owner with the incorrect parameters should throw PersistenceException")
public void addingNewOwner_incorrectParameters_shouldThrowPersistence() {
Owner newOwner = new Owner("");
assertThrows(DataAccessException.class, () -> ownerDao.addOwner(newOwner));
assertThrows(PersistenceException.class, () -> ownerDao.addOwner(newOwner));
}
@Test
@ -133,8 +133,8 @@ public abstract class OwnerDaoTestBase {
}
@Test
@DisplayName("Updating a owner with the incorrect parameters should throw DataAccessException")
public void updatingOwner_incorrectParameters_shouldThrowDataAccess() {
@DisplayName("Updating a owner with the incorrect parameters should throw PersistenceException")
public void updatingOwner_incorrectParameters_shouldThrowPersistence() {
// Create owner
Owner newOwner = new Owner("Chad");
Owner savedOwner = ownerDao.addOwner(newOwner);
@ -142,7 +142,7 @@ public abstract class OwnerDaoTestBase {
// Update owner
newOwner.setId(savedOwner.getId());
newOwner.setName("");
assertThrows(DataAccessException.class, () -> ownerDao.updateOwner(newOwner));
assertThrows(PersistenceException.class, () -> ownerDao.updateOwner(newOwner));
}
@Test