This commit is contained in:
@@ -18,7 +18,9 @@ import com.starry.common.utils.IdUtils;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
@@ -40,6 +42,12 @@ class PlayClerkUserInfoApiTest extends AbstractApiTest {
|
|||||||
private final List<String> levelIdsToCleanup = new ArrayList<>();
|
private final List<String> levelIdsToCleanup = new ArrayList<>();
|
||||||
private final List<String> clerkIdsToCleanup = new ArrayList<>();
|
private final List<String> clerkIdsToCleanup = new ArrayList<>();
|
||||||
private int scenarioSequence = 0;
|
private int scenarioSequence = 0;
|
||||||
|
private static final Comparator<ClerkScenario> BACKEND_ORDERING = Comparator
|
||||||
|
.comparing(ClerkScenario::isOnline).reversed()
|
||||||
|
.thenComparing(ClerkScenario::isPinned).reversed()
|
||||||
|
.thenComparingLong(ClerkScenario::getLevelOrder)
|
||||||
|
.thenComparingInt(ClerkScenario::getSequence)
|
||||||
|
.thenComparing(ClerkScenario::getId);
|
||||||
|
|
||||||
@AfterEach
|
@AfterEach
|
||||||
void tearDown() {
|
void tearDown() {
|
||||||
@@ -86,9 +94,10 @@ class PlayClerkUserInfoApiTest extends AbstractApiTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
assertThat(orderedIds).contains(lowOrderClerkId, highOrderClerkId);
|
assertThat(orderedIds).contains(lowOrderClerkId, highOrderClerkId);
|
||||||
assertThat(orderedIds.indexOf(lowOrderClerkId))
|
assertThat(orderedIds.indexOf(highOrderClerkId))
|
||||||
.withFailMessage("Unexpected order for token %s: %s", filterToken, orderedIds)
|
.withFailMessage("Online clerk should appear before offline regardless of level. token=%s list=%s",
|
||||||
.isLessThan(orderedIds.indexOf(highOrderClerkId));
|
filterToken, orderedIds)
|
||||||
|
.isLessThan(orderedIds.indexOf(lowOrderClerkId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -354,15 +363,27 @@ class PlayClerkUserInfoApiTest extends AbstractApiTest {
|
|||||||
orderedIds.add(record.path("id").asText());
|
orderedIds.add(record.path("id").asText());
|
||||||
}
|
}
|
||||||
|
|
||||||
assertThat(orderedIds.indexOf(pinnedOnline))
|
Map<String, ClerkScenario> expectedScenarios = new HashMap<>();
|
||||||
.isLessThan(orderedIds.indexOf(online1));
|
expectedScenarios.put(pinnedOnline, new ClerkScenario(pinnedOnline, 1L, true, true, 0));
|
||||||
assertThat(orderedIds.indexOf(online1))
|
expectedScenarios.put(online1, new ClerkScenario(online1, 1L, true, false, 1));
|
||||||
.withFailMessage("Online entries should stay ahead, list=%s", orderedIds)
|
expectedScenarios.put(online2, new ClerkScenario(online2, 1L, true, false, 2));
|
||||||
.isLessThan(orderedIds.indexOf(online2));
|
expectedScenarios.put(pinnedOffline, new ClerkScenario(pinnedOffline, 1L, false, true, 3));
|
||||||
assertThat(orderedIds.indexOf(online2))
|
expectedScenarios.put(offline, new ClerkScenario(offline, 1L, false, false, 4));
|
||||||
.isLessThan(orderedIds.indexOf(pinnedOffline));
|
|
||||||
assertThat(orderedIds.indexOf(pinnedOffline))
|
List<ClerkScenario> actualScenarios = orderedIds.stream()
|
||||||
.isLessThan(orderedIds.indexOf(offline));
|
.map(expectedScenarios::get)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
for (int i = 1; i < actualScenarios.size(); i++) {
|
||||||
|
ClerkScenario previous = actualScenarios.get(i - 1);
|
||||||
|
ClerkScenario current = actualScenarios.get(i);
|
||||||
|
assertThat(previous).isNotNull();
|
||||||
|
assertThat(current).isNotNull();
|
||||||
|
assertThat(BACKEND_ORDERING.compare(previous, current))
|
||||||
|
.withFailMessage("Ordering violation between %s and %s, list=%s", previous.getId(), current.getId(),
|
||||||
|
orderedIds)
|
||||||
|
.isLessThanOrEqualTo(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -403,15 +424,22 @@ class PlayClerkUserInfoApiTest extends AbstractApiTest {
|
|||||||
orderedIds.add(record.path("id").asText());
|
orderedIds.add(record.path("id").asText());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> expectedOrder = scenarios.stream()
|
Map<String, ClerkScenario> scenarioById = scenarios.stream()
|
||||||
.sorted(Comparator.comparing(ClerkScenario::isOnline).reversed()
|
.collect(Collectors.toMap(ClerkScenario::getId, scenario -> scenario));
|
||||||
.thenComparing(ClerkScenario::isPinned).reversed()
|
|
||||||
.thenComparingLong(ClerkScenario::getLevelOrder)
|
|
||||||
.thenComparingInt(ClerkScenario::getSequence))
|
|
||||||
.map(ClerkScenario::getId)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
assertThat(orderedIds).containsExactlyElementsOf(expectedOrder);
|
assertThat(orderedIds).containsExactlyInAnyOrderElementsOf(scenarioById.keySet());
|
||||||
|
|
||||||
|
List<ClerkScenario> orderedScenarios = orderedIds.stream()
|
||||||
|
.map(scenarioById::get)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
for (int i = 1; i < orderedScenarios.size(); i++) {
|
||||||
|
ClerkScenario previous = orderedScenarios.get(i - 1);
|
||||||
|
ClerkScenario current = orderedScenarios.get(i);
|
||||||
|
assertThat(BACKEND_ORDERING.compare(previous, current))
|
||||||
|
.withFailMessage("Ordering violation between %s and %s, list=%s",
|
||||||
|
previous.getId(), current.getId(), orderedIds)
|
||||||
|
.isLessThanOrEqualTo(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user