diff --git a/src/main/java/io/pakland/mdas/githubstats/application/SaveAllRepositories.java b/src/main/java/io/pakland/mdas/githubstats/application/SaveAllRepositories.java new file mode 100644 index 00000000..b8240646 --- /dev/null +++ b/src/main/java/io/pakland/mdas/githubstats/application/SaveAllRepositories.java @@ -0,0 +1,24 @@ +package io.pakland.mdas.githubstats.application; + +import io.pakland.mdas.githubstats.domain.Repository; +import io.pakland.mdas.githubstats.domain.repository.RepositoryRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class SaveAllRepositories { + + public final RepositoryRepository repositoryRepository; + + public SaveAllRepositories(RepositoryRepository repositoryRepository) { + this.repositoryRepository = repositoryRepository; + } + + @Transactional + public void execute(List repositories) { + repositoryRepository.saveAll(repositories); + } + +} \ No newline at end of file diff --git a/src/test/java/io/pakland/mdas/githubstats/application/SaveAllRepositoriesTest.java b/src/test/java/io/pakland/mdas/githubstats/application/SaveAllRepositoriesTest.java new file mode 100644 index 00000000..ac1b5128 --- /dev/null +++ b/src/test/java/io/pakland/mdas/githubstats/application/SaveAllRepositoriesTest.java @@ -0,0 +1,23 @@ +package io.pakland.mdas.githubstats.application; + +import io.pakland.mdas.githubstats.domain.Repository; +import io.pakland.mdas.githubstats.domain.repository.RepositoryRepository; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.util.ArrayList; +import java.util.List; + +public class SaveAllRepositoriesTest { + + @Test + public void savingRepositories_shouldCallRepositoryMethods() { + List repositories = new ArrayList<>(); + RepositoryRepository repositoryRepositoryMock = Mockito.mock(RepositoryRepository.class); + + SaveAllRepositories useCase = new SaveAllRepositories(repositoryRepositoryMock); + useCase.execute(repositories); + + Mockito.verify(repositoryRepositoryMock, Mockito.times(1)).saveAll(Mockito.anyList()); + } +}