test: 修復店員排序測試與收益扣回即時解鎖
This commit is contained in:
@@ -319,4 +319,63 @@ class PlayClerkUserInfoApiTest extends AbstractApiTest {
|
||||
clerkIdsToCleanup.add(clerkId);
|
||||
return clerkId;
|
||||
}
|
||||
@Test
|
||||
void listOrderingStableWithMultipleCriteria() throws Exception {
|
||||
ensureTenantContext();
|
||||
PlayClerkLevelInfoEntity level = createClerkLevel("stable", 10L, 80);
|
||||
|
||||
String filterToken = "stable-" + IdUtils.getUuid().substring(0, 6);
|
||||
String pinnedOnline = createClerk(filterToken + "-pinned-online", level.getId(), "1");
|
||||
togglePin(pinnedOnline, "1");
|
||||
String pinnedOffline = createClerk(filterToken + "-pinned-offline", level.getId(), "0");
|
||||
togglePin(pinnedOffline, "1");
|
||||
String online1 = createClerk(filterToken + "-online-one", level.getId(), "1");
|
||||
pause(50);
|
||||
String online2 = createClerk(filterToken + "-online-two", level.getId(), "1");
|
||||
String offline = createClerk(filterToken + "-offline", level.getId(), "0");
|
||||
|
||||
MvcResult result = mockMvc.perform(get("/clerk/user/list")
|
||||
.param("pageNum", "1")
|
||||
.param("pageSize", "20")
|
||||
.param("nickname", filterToken)
|
||||
.header(TENANT_HEADER, DEFAULT_TENANT)
|
||||
.header(USER_HEADER, DEFAULT_USER))
|
||||
.andExpect(status().isOk())
|
||||
.andReturn();
|
||||
|
||||
JsonNode root = objectMapper.readTree(result.getResponse().getContentAsString());
|
||||
JsonNode records = root.path("data");
|
||||
assertThat(records.isArray()).isTrue();
|
||||
List<String> orderedIds = new ArrayList<>();
|
||||
for (JsonNode record : records) {
|
||||
orderedIds.add(record.path("id").asText());
|
||||
}
|
||||
|
||||
assertThat(orderedIds.indexOf(pinnedOnline))
|
||||
.isLessThan(orderedIds.indexOf(pinnedOffline));
|
||||
assertThat(orderedIds.indexOf(pinnedOffline))
|
||||
.isLessThan(orderedIds.indexOf(online1));
|
||||
assertThat(orderedIds.indexOf(online1))
|
||||
.isLessThan(orderedIds.indexOf(offline));
|
||||
assertThat(orderedIds.indexOf(online1))
|
||||
.withFailMessage("Created time fallback should maintain order, list=%s", orderedIds)
|
||||
.isLessThan(orderedIds.indexOf(online2));
|
||||
}
|
||||
|
||||
|
||||
private void togglePin(String clerkId, String pinState) {
|
||||
ensureTenantContext();
|
||||
PlayClerkUserInfoEntity update = new PlayClerkUserInfoEntity();
|
||||
update.setId(clerkId);
|
||||
update.setPinToTopState(pinState);
|
||||
clerkUserInfoService.update(update);
|
||||
}
|
||||
|
||||
private void pause(long millis) {
|
||||
try {
|
||||
Thread.sleep(millis);
|
||||
} catch (InterruptedException ex) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user