|
@@ -4,8 +4,10 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|
|
import static org.mockito.Mockito.mock;
|
|
|
import static org.mockito.Mockito.when;
|
|
|
|
|
|
+import com.provectus.kafka.ui.model.SortOrderDTO;
|
|
|
import com.provectus.kafka.ui.model.TopicColumnsToSortDTO;
|
|
|
import java.util.Collection;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.Optional;
|
|
@@ -46,12 +48,35 @@ class TopicsServicePaginationTest {
|
|
|
|
|
|
var topics = pagination.getPage(
|
|
|
Optional.empty(), Optional.empty(), Optional.empty(),
|
|
|
- Optional.empty(), Optional.empty()).block();
|
|
|
+ Optional.empty(), Optional.empty(), Optional.empty()).block();
|
|
|
assertThat(topics.getTotalPages()).isEqualTo(4);
|
|
|
assertThat(topics.getTopics()).hasSize(25);
|
|
|
assertThat(topics.getTopics()).isSorted();
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void shouldListFirst25TopicsSortedByNameDescendingOrder() {
|
|
|
+ var topicDescriptions = IntStream.rangeClosed(1, 100).boxed()
|
|
|
+ .map(Objects::toString)
|
|
|
+ .map(name -> new TopicDescription(name, false, List.of()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ init(topicDescriptions);
|
|
|
+
|
|
|
+ var topics = pagination.getPage(
|
|
|
+ Optional.empty(), Optional.empty(), Optional.empty(),
|
|
|
+ Optional.empty(), Optional.of(TopicColumnsToSortDTO.NAME), Optional.of(SortOrderDTO.DESC)).block();
|
|
|
+ assertThat(topics.getTotalPages()).isEqualTo(4);
|
|
|
+ assertThat(topics.getTopics()).hasSize(25);
|
|
|
+ assertThat(topics.getTopics()).isSortedAccordingTo(Comparator.reverseOrder());
|
|
|
+ assertThat(topics.getTopics()).containsExactlyElementsOf(
|
|
|
+ topicDescriptions.stream()
|
|
|
+ .map(TopicDescription::name)
|
|
|
+ .sorted(Comparator.reverseOrder())
|
|
|
+ .limit(25)
|
|
|
+ .collect(Collectors.toList())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void shouldCalculateCorrectPageCountForNonDivisiblePageSize() {
|
|
|
init(
|
|
@@ -62,7 +87,7 @@ class TopicsServicePaginationTest {
|
|
|
);
|
|
|
|
|
|
var topics = pagination.getPage(Optional.of(4), Optional.of(33),
|
|
|
- Optional.empty(), Optional.empty(), Optional.empty()).block();
|
|
|
+ Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()).block();
|
|
|
assertThat(topics.getTotalPages()).isEqualTo(4);
|
|
|
assertThat(topics.getTopics()).hasSize(1)
|
|
|
.first().isEqualTo("99");
|
|
@@ -78,7 +103,7 @@ class TopicsServicePaginationTest {
|
|
|
);
|
|
|
|
|
|
var topics = pagination.getPage(Optional.of(0), Optional.of(-1),
|
|
|
- Optional.empty(), Optional.empty(), Optional.empty()).block();
|
|
|
+ Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()).block();
|
|
|
assertThat(topics.getTotalPages()).isEqualTo(4);
|
|
|
assertThat(topics.getTopics()).hasSize(25);
|
|
|
assertThat(topics.getTopics()).isSorted();
|
|
@@ -95,7 +120,7 @@ class TopicsServicePaginationTest {
|
|
|
|
|
|
var topics = pagination.getPage(
|
|
|
Optional.empty(), Optional.empty(), Optional.of(true),
|
|
|
- Optional.empty(), Optional.empty()).block();
|
|
|
+ Optional.empty(), Optional.empty(), Optional.empty()).block();
|
|
|
assertThat(topics.getTotalPages()).isEqualTo(4);
|
|
|
assertThat(topics.getTopics()).hasSize(25);
|
|
|
assertThat(topics.getTopics()).isSorted();
|
|
@@ -113,7 +138,7 @@ class TopicsServicePaginationTest {
|
|
|
|
|
|
var topics = pagination.getPage(
|
|
|
Optional.empty(), Optional.empty(), Optional.of(true),
|
|
|
- Optional.empty(), Optional.empty()).block();
|
|
|
+ Optional.empty(), Optional.empty(), Optional.empty()).block();
|
|
|
assertThat(topics.getTotalPages()).isEqualTo(4);
|
|
|
assertThat(topics.getTopics()).hasSize(25);
|
|
|
assertThat(topics.getTopics()).isSorted();
|
|
@@ -131,7 +156,7 @@ class TopicsServicePaginationTest {
|
|
|
|
|
|
var topics = pagination.getPage(
|
|
|
Optional.empty(), Optional.empty(), Optional.empty(),
|
|
|
- Optional.of("1"), Optional.empty()).block();
|
|
|
+ Optional.of("1"), Optional.empty(), Optional.empty()).block();
|
|
|
assertThat(topics.getTotalPages()).isEqualTo(1);
|
|
|
assertThat(topics.getTopics()).hasSize(20);
|
|
|
assertThat(topics.getTopics()).isSorted();
|
|
@@ -151,7 +176,7 @@ class TopicsServicePaginationTest {
|
|
|
|
|
|
var topics = pagination.getPage(
|
|
|
Optional.empty(), Optional.empty(), Optional.empty(),
|
|
|
- Optional.empty(), Optional.of(TopicColumnsToSortDTO.TOTAL_PARTITIONS)).block();
|
|
|
+ Optional.empty(), Optional.of(TopicColumnsToSortDTO.TOTAL_PARTITIONS), Optional.empty()).block();
|
|
|
assertThat(topics.getTotalPages()).isEqualTo(4);
|
|
|
assertThat(topics.getTopics()).hasSize(25);
|
|
|
assertThat(topics.getTopics()).containsExactlyElementsOf(
|
|
@@ -159,6 +184,18 @@ class TopicsServicePaginationTest {
|
|
|
.map(TopicDescription::name)
|
|
|
.limit(25)
|
|
|
.collect(Collectors.toList()));
|
|
|
+
|
|
|
+ var topicsSortedDesc = pagination.getPage(
|
|
|
+ Optional.empty(), Optional.empty(), Optional.empty(),
|
|
|
+ Optional.empty(), Optional.of(TopicColumnsToSortDTO.TOTAL_PARTITIONS), Optional.of(SortOrderDTO.DESC)).block();
|
|
|
+ assertThat(topicsSortedDesc.getTotalPages()).isEqualTo(4);
|
|
|
+ assertThat(topicsSortedDesc.getTopics()).hasSize(25);
|
|
|
+ assertThat(topicsSortedDesc.getTopics()).containsExactlyElementsOf(
|
|
|
+ topicDescriptions.stream()
|
|
|
+ .sorted((a, b) -> b.partitions().size() - a.partitions().size())
|
|
|
+ .map(TopicDescription::name)
|
|
|
+ .limit(25)
|
|
|
+ .collect(Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
}
|