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