diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateRepositoryTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateRepositoryTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..34ca57badbed1ae6a79c31b20ef4f810e40fc14c
--- /dev/null
+++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateRepositoryTests.java
@@ -0,0 +1,101 @@
+package org.fuseri.modulecertificate;
+
+import org.fuseri.modulecertificate.service.CertificateRepository;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+
+import java.util.Arrays;
+import java.util.List;
+
+@DataJpaTest
+class CertificateRepositoryTests {
+
+    @Autowired
+    private TestEntityManager entityManager;
+
+    @Autowired
+    private CertificateRepository certificateRepository;
+
+    @Test
+    void saveCertificate() {
+        Certificate certificate = new Certificate();
+        certificate.setUserId(1L);
+        certificate.setCourseId(2L);
+
+        Certificate saved = certificateRepository.save(certificate);
+
+        Assertions.assertNotNull(saved);
+        Assertions.assertEquals(certificate, saved);
+    }
+
+    @Test
+    void findCertificate() {
+        Certificate certificate = new Certificate();
+        certificate.setUserId(1L);
+        entityManager.persist(certificate);
+        entityManager.flush();
+
+        Certificate found = certificateRepository.findById(certificate.getId()).orElse(null);
+
+        Assertions.assertNotNull(found);
+        Assertions.assertEquals(found, certificate);
+    }
+
+    @Test
+    void findCertificateByUserId() {
+        Certificate certificate = new Certificate();
+        certificate.setUserId(1L);
+        entityManager.persist(certificate);
+        entityManager.flush();
+
+        List<Certificate> found = certificateRepository.findCertificateByUserId(1L);
+
+        Assertions.assertEquals(1, found.size());
+        Assertions.assertEquals(found.get(0), certificate);
+    }
+
+    @Test
+    void findCertificateByUserIdAndCourseId() {
+        Certificate certificate = new Certificate();
+        certificate.setUserId(1L);
+        certificate.setCourseId(2L);
+        entityManager.persist(certificate);
+        entityManager.flush();
+
+        List<Certificate> found = certificateRepository.findCertificateByUserIdAndCourseId(1L, 2L);
+
+        Assertions.assertEquals(1, found.size());
+        Assertions.assertEquals(found.get(0), certificate);
+    }
+
+    @Test
+    public void testFindAllCertificates() {
+        Certificate certificate1 = new Certificate();
+        Certificate certificate2 = new Certificate();
+
+        certificateRepository.save(certificate1);
+        certificateRepository.save(certificate2);
+
+        Page<Certificate> certificatePage = certificateRepository.findAll(PageRequest.of(0, 42));
+
+        Assertions.assertEquals(2, certificatePage.getTotalElements());
+        Assertions.assertEquals(certificatePage.getContent(), Arrays.asList(certificate1, certificate2));
+    }
+
+    @Test
+    public void testDeleteCertificate() {
+        Long certificateId = entityManager.persist(new Certificate()).getId();
+        entityManager.flush();
+
+        certificateRepository.deleteById(certificateId);
+
+        Assertions.assertTrue(certificateRepository.findById(certificateId).isEmpty());
+    }
+
+
+}