diff --git a/src/test/java/NTNU/IDATT1002/repository/GeoLocationRepositoryTest.java b/src/test/java/NTNU/IDATT1002/repository/GeoLocationRepositoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..015e98b2b0150d06543381c10db5881110c23d7b --- /dev/null +++ b/src/test/java/NTNU/IDATT1002/repository/GeoLocationRepositoryTest.java @@ -0,0 +1,112 @@ +package NTNU.IDATT1002.repository; + +import static org.junit.jupiter.api.Assertions.*; + +import NTNU.IDATT1002.models.GeoLocation; +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; + +/** + * Tests for {@link GeoLocatioRepository} + * + * @author madslun + * @version 1.0 07.04.20 + */ +class GeoLocationRepositoryTest { + + private static final Long GEOLOCATION_INITIAL_ID = 1L; + private GeoLocatioRepository geoLocatioRepository; + + + /** + * Sets up necessary test data for testing + */ + @BeforeEach + void setUp() { + EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ImageApplicationTest"); + EntityManager entityManager = entityManagerFactory.createEntityManager(); + geoLocatioRepository = new GeoLocatioRepository(entityManager); + } + + /** + * Test that saves a geolocation then checks that it was saved + */ + @Test + void testSaveReturnsInstance() { + Optional<GeoLocation> savedGeolocation = geoLocatioRepository.save(new GeoLocation()); + + assertTrue(savedGeolocation.isPresent()); + assertEquals(GEOLOCATION_INITIAL_ID, savedGeolocation.get().getGeoLocationId()); + } + + /** + * Test that tries to save a geolocation with invalid input + */ + @Test + void testSavedInvalidEntityReturnsEmptyOptional() { + Optional<GeoLocation> savedGeolocation = geoLocatioRepository.save(null); + assertTrue(savedGeolocation.isEmpty()); + } + + /** + * Test that saves two geolocations then checks that both are saved + */ + @Test + void testFindAllReturnsAllSavedEntities() { + geoLocatioRepository.save(new GeoLocation()); + geoLocatioRepository.save(new GeoLocation()); + + List<GeoLocation> foundGeolocations = geoLocatioRepository.findAll(); + assertEquals(2, foundGeolocations.size()); + } + + /** + * Test that saves a new geolocation then find the geolocation by id + * When geolocation is created it uses the first number as id, we therefore search for the geolocation with this number + * We then check that the geolocation we got is the correct one + */ + @Test + void testFindByIdReturnsOptionalWithCorrectId() { + geoLocatioRepository.save(new GeoLocation()); + Optional<GeoLocation> foundGeolocation = geoLocatioRepository.findById(GEOLOCATION_INITIAL_ID); + + assertTrue(foundGeolocation.isPresent()); + assertEquals(GEOLOCATION_INITIAL_ID, foundGeolocation.get().getGeoLocationId()); + } + + /** + * Test that deletes geolocation by id then checks that the geolocation was deleted + */ + @Test + void testDeleteByIdRemovesEntity() { + geoLocatioRepository.save(new GeoLocation()); + Optional<GeoLocation> foundGeolocation = geoLocatioRepository.findById(GEOLOCATION_INITIAL_ID); + + foundGeolocation.ifPresent(geoLocation -> geoLocatioRepository.deleteById(GEOLOCATION_INITIAL_ID)); + Optional<GeoLocation> deletedGeolocation = geoLocatioRepository.findById(GEOLOCATION_INITIAL_ID); + + assertTrue(deletedGeolocation.isEmpty()); + } + + /** + * Test that deletes a geolocation then checks that the geolocation was deleted + * When geolocation is created it uses the first number as id, we therefor try to delete a geolocation with this number + * We afterwards try to list all the geolocations and checks that there is no one left + */ + @Test + void testDeleteEntityRemovesEntity() { + GeoLocation testGeolocation = new GeoLocation(); + geoLocatioRepository.save(testGeolocation); + Optional<GeoLocation> foundGeolocation = geoLocatioRepository.findById(GEOLOCATION_INITIAL_ID); + + foundGeolocation.ifPresent(geoLocation -> geoLocatioRepository.delete(testGeolocation)); + List<GeoLocation> foudGeolocations = geoLocatioRepository.findAll(); + assertEquals(0, foudGeolocations.size()); + } + +} \ No newline at end of file