diff --git a/src/test/java/NTNU/IDATT1002/repository/ImageRepositoryTest.java b/src/test/java/NTNU/IDATT1002/repository/ImageRepositoryTest.java index f897ed80cd26203c445eee5abadb89b766341a10..a71f6afebf1b37d854a6b99a5509b427ec5b27ca 100644 --- a/src/test/java/NTNU/IDATT1002/repository/ImageRepositoryTest.java +++ b/src/test/java/NTNU/IDATT1002/repository/ImageRepositoryTest.java @@ -15,6 +15,9 @@ import org.junit.jupiter.api.TestTemplate; /** * Test for {@link ImageRepository} + * + * @author madslun + * @version 1.0 13.04.20 */ class ImageRepositoryTest { diff --git a/src/test/java/NTNU/IDATT1002/repository/MetadataRepositoryTest.java b/src/test/java/NTNU/IDATT1002/repository/MetadataRepositoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..2145560aaac54691d9cf5f55629288560fd193b9 --- /dev/null +++ b/src/test/java/NTNU/IDATT1002/repository/MetadataRepositoryTest.java @@ -0,0 +1,105 @@ +package NTNU.IDATT1002.repository; + +import static org.junit.jupiter.api.Assertions.*; + +import NTNU.IDATT1002.models.Metadata; +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; + + +/** + * Test for {@link MetadataRepository} + * + * @author madslun + * @version 1.0 13.04.20 + */ +class MetadataRepositoryTest { + + private static final Long INITIAL_ID = 1L; + private MetadataRepository metadataRepository; + + /** + * Sets up necessary test data for testing + */ + @BeforeEach + void setUp() { + EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ImageApplicationTest"); + EntityManager entityManager = entityManagerFactory.createEntityManager(); + metadataRepository = new MetadataRepository(entityManager); + } + + /** + * Test that tries to save metadata and makes sure the image was saved + */ + @Test + void testSaveReturnsInstance() { + Optional<Metadata> savedMetadata = metadataRepository.save(new Metadata()); + assertTrue(savedMetadata.isPresent()); + assertEquals(INITIAL_ID, savedMetadata.get().getMetadataId()); + } + + /** + * Test that tries to save a metadata with invalid entity and makes sure the Image was not saved + */ + @Test + void testSaveInvalidEntityReturnsEmptyOptional() { + Optional<Metadata> savedMetadata = metadataRepository.save(null); + assertTrue(savedMetadata.isEmpty()); + } + + /** + * Test that tries to save two metadata and make sure both are returned + */ + @Test + void testFindAllReturnsAllSavedEntities() { + metadataRepository.save(new Metadata()); + metadataRepository.save(new Metadata()); + + List<Metadata> foundMetadata = metadataRepository.findAll(); + assertEquals(2, foundMetadata.size()); + } + + /** + * Test that save a metadata and finds the metadata by id + */ + @Test + void testFindByIdReturnsOptionalWithEntityWithId() { + metadataRepository.save(new Metadata()); + Optional<Metadata> foundMetadata = metadataRepository.findById(INITIAL_ID); + assertTrue(foundMetadata.isPresent()); + assertEquals(INITIAL_ID, foundMetadata.get().getMetadataId()); + } + + /** + * Test that deletes metadata by id and makes sure metadata was deleted + */ + @Test + void testDeleteByIdRemovesEntity() { + metadataRepository.save(new Metadata()); + Optional<Metadata> foundMetadata = metadataRepository.findById(INITIAL_ID); + + foundMetadata.ifPresent(metadata -> metadataRepository.deleteById(INITIAL_ID)); + Optional<Metadata> deletedMetadata = metadataRepository.findById(INITIAL_ID); + + assertTrue(deletedMetadata.isEmpty()); + } + + /** + * Test that deletes metadata object and makes sure the metadata was deleted + */ + @Test + void testDeleteRemovesEntitiy() { + metadataRepository.save(new Metadata()); + Optional<Metadata> foundMetadata = metadataRepository.findById(INITIAL_ID); + + foundMetadata.ifPresent(metadataRepository::delete); + Optional<Metadata> deletedMetada = metadataRepository.findById(INITIAL_ID); + + assertTrue(deletedMetada.isEmpty()); + } +} \ No newline at end of file