mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-02-11 09:30:56 +08:00
71 lines
2.2 KiB
Java
71 lines
2.2 KiB
Java
package com.openisle.service;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
import com.openisle.model.Post;
|
|
import com.openisle.model.PostStatus;
|
|
import com.openisle.repository.CategoryRepository;
|
|
import com.openisle.repository.CommentRepository;
|
|
import com.openisle.repository.PostRepository;
|
|
import com.openisle.repository.TagRepository;
|
|
import com.openisle.repository.UserRepository;
|
|
import com.openisle.search.OpenSearchProperties;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.mockito.Mockito;
|
|
|
|
class SearchServiceTest {
|
|
|
|
@Test
|
|
void globalSearchDeduplicatesPosts() {
|
|
UserRepository userRepo = Mockito.mock(UserRepository.class);
|
|
PostRepository postRepo = Mockito.mock(PostRepository.class);
|
|
CommentRepository commentRepo = Mockito.mock(CommentRepository.class);
|
|
CategoryRepository categoryRepo = Mockito.mock(CategoryRepository.class);
|
|
TagRepository tagRepo = Mockito.mock(TagRepository.class);
|
|
SearchService service = new SearchService(
|
|
userRepo,
|
|
postRepo,
|
|
commentRepo,
|
|
categoryRepo,
|
|
tagRepo,
|
|
Optional.empty(),
|
|
new OpenSearchProperties()
|
|
);
|
|
|
|
Post post1 = new Post();
|
|
post1.setId(1L);
|
|
post1.setTitle("hello");
|
|
Post post2 = new Post();
|
|
post2.setId(2L);
|
|
post2.setTitle("world");
|
|
|
|
Mockito.when(
|
|
postRepo.findByTitleContainingIgnoreCaseOrContentContainingIgnoreCaseAndStatus(
|
|
Mockito.anyString(),
|
|
Mockito.anyString(),
|
|
Mockito.eq(PostStatus.PUBLISHED)
|
|
)
|
|
).thenReturn(List.of(post1));
|
|
Mockito.when(
|
|
postRepo.findByTitleContainingIgnoreCaseAndStatus(
|
|
Mockito.anyString(),
|
|
Mockito.eq(PostStatus.PUBLISHED)
|
|
)
|
|
).thenReturn(List.of(post1, post2));
|
|
Mockito.when(commentRepo.findByContentContainingIgnoreCase(Mockito.anyString())).thenReturn(
|
|
List.of()
|
|
);
|
|
Mockito.when(userRepo.findByUsernameContainingIgnoreCase(Mockito.anyString())).thenReturn(
|
|
List.of()
|
|
);
|
|
|
|
List<SearchService.SearchResult> results = service.globalSearch("h");
|
|
|
|
assertEquals(2, results.size());
|
|
assertEquals(1L, results.get(0).id());
|
|
assertEquals(2L, results.get(1).id());
|
|
}
|
|
}
|