Skip to content
Snippets Groups Projects

Added ImageRepositoryTest

Merged Mads Lundegaard requested to merge testImageRepositoy into dev
1 file
+ 135
0
Compare changes
  • Side-by-side
  • Inline
package NTNU.IDATT1002.repository;
import static org.junit.jupiter.api.Assertions.*;
import NTNU.IDATT1002.models.Image;
import NTNU.IDATT1002.models.User;
import java.util.List;
import java.util.Optional;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestTemplate;
/**
* Test for {@link ImageRepository}
*/
class ImageRepositoryTest {
private ImageRepository imageRepository;
private UserRepository userRepository;
private static final Long IMAGE_INITIAL_ID = 1L;
private User user;
private String username;
/**
* Sets up necessary test data for testing
* For testing a method in the repository it is necessary to include userRepository
* This test then unfortunately relies on userRepostiory working
*/
@BeforeEach
void setUp() {
username = "test123";
user = new User();
user.setUsername(username);
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ImageApplicationTest");
EntityManager entityManager = entityManagerFactory.createEntityManager();
imageRepository = new ImageRepository(entityManager);
userRepository = new UserRepository(entityManager);
userRepository.save(user);
}
/**
* Test that tries to save a image and makes sure the image was saved
*/
@Test
void testSaveReturnsInstance() {
Optional<Image> savedImage = imageRepository.save(new Image());
assertTrue(savedImage.isPresent());
assertEquals(IMAGE_INITIAL_ID, savedImage.get().getId());
}
/**
* Test that tries to save a Image with invalid entity and makes sure the Image was not saved
*/
@Test
void testSaveInvalidEntityReturnsEmptyOptional() {
Optional<Image> savedImage = imageRepository.save(null);
assertTrue(savedImage.isEmpty());
}
/**
* Test that tries to save two images and make sure both are returned
*/
@Test
void testFindAllReturnsAllSavedEntities() {
imageRepository.save(new Image());
imageRepository.save(new Image());
List<?> foundImages = imageRepository.findAll();
assertEquals(2, foundImages.size());
}
/**
* Test that tries to save two images to a user and makes sure both are returned
*/
@Test
void testFindAllByUserReturnsCorrectAmount() { ;
Image testImage = new Image();
testImage.setUser(user);
Image testImage2 = new Image();
testImage2.setUser(user);
imageRepository.save(testImage);
imageRepository.save(testImage2);
List<?> foundImages = imageRepository.findAllByUsername(username);
assertEquals(2, foundImages.size());
}
/**
* Test that save a image and finds the image by id
*/
@Test
void testFindByIdReturnsOptionalWithCorrectId() {
imageRepository.save(new Image());
Optional<Image> foundImage = imageRepository.findById(IMAGE_INITIAL_ID);
assertTrue(foundImage.isPresent());
assertEquals(IMAGE_INITIAL_ID, foundImage.get().getId());
}
/**
* Test that deletes image by id and makes sure image was deleted
*/
@Test
void testDeleteByIdRemovesEntity() {
imageRepository.save(new Image());
Optional<Image> foundImage = imageRepository.findById(IMAGE_INITIAL_ID);
foundImage.ifPresent(image -> imageRepository.deleteById(IMAGE_INITIAL_ID));
Optional<Image> deletedImage = imageRepository.findById(IMAGE_INITIAL_ID);
assertTrue(deletedImage.isEmpty());
}
/**
* Test that deletes Image object and makes sure the image was deleted
*/
@Test
void testDeleteRemovesEntity() {
imageRepository.save(new Image());
Optional<Image> foundImage = imageRepository.findById(IMAGE_INITIAL_ID);
foundImage.ifPresent(imageRepository::delete);
Optional<Image> deletedImage = imageRepository.findById(IMAGE_INITIAL_ID);
assertTrue(deletedImage.isEmpty());
}
}
\ No newline at end of file
Loading