1
package by.andd3dfx.templateapp.persistence.dao;
3
import by.andd3dfx.templateapp.persistence.entities.Article;
4
import org.junit.jupiter.api.AfterEach;
5
import org.junit.jupiter.api.BeforeEach;
6
import org.junit.jupiter.api.Test;
7
import org.junit.jupiter.api.extension.ExtendWith;
8
import org.mockito.junit.jupiter.MockitoExtension;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
11
import org.springframework.data.domain.PageRequest;
12
import org.springframework.data.domain.Pageable;
13
import org.springframework.data.domain.Sort;
15
import java.time.LocalDateTime;
16
import java.util.Arrays;
19
import static org.hamcrest.CoreMatchers.is;
20
import static org.hamcrest.MatcherAssert.assertThat;
21
import static org.junit.jupiter.api.Assertions.*;
24
class ArticleRepositoryTest {
27
private ArticleRepository repository;
29
private Article entity;
30
private Article entity2;
31
private Article entity3;
35
repository.deleteAll();
36
entity = buildArticle("Ivan", "HD", LocalDateTime.parse("2010-12-03T10:15:30"));
37
entity2 = buildArticle("Vasily", "HD", LocalDateTime.parse("2011-12-03T10:15:30"));
38
entity3 = buildArticle("Ivan", "4K", LocalDateTime.parse("2012-12-03T10:15:30"));
39
repository.saveAll(Arrays.asList(entity, entity2, entity3));
43
public void tearDown() {
44
repository.deleteAll();
48
public void findAll() {
49
var result = repository.findAll(Pageable.ofSize(10));
51
assertThat("Wrong records amount", result.getNumberOfElements(), is(3));
52
assertTrue(result.getContent().containsAll(List.of(entity, entity2, entity3)));
56
public void findAll_withPageNSizeNSorting() {
57
var result = repository.findAll(PageRequest.of(0, 2, Sort.by("title", "summary")));
59
assertThat("Wrong records amount", result.getNumberOfElements(), is(2));
60
var articles = result.getContent();
61
assertThat(articles.get(0), is(entity3));
62
assertThat(articles.get(1), is(entity));
65
private static Article buildArticle(String title, String summary, LocalDateTime timestamp) {
66
Article article = new Article();
67
article.setTitle(title);
68
article.setSummary(summary);
69
article.setText("any text");
70
article.setTimestamp(timestamp);
71
article.setAuthor("Some author");