This commit is contained in:
@@ -8,7 +8,9 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
|
|||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.starry.admin.common.apitest.ApiTestDataSeeder;
|
import com.starry.admin.common.apitest.ApiTestDataSeeder;
|
||||||
|
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
|
||||||
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
|
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
|
||||||
|
import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity;
|
||||||
import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService;
|
import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService;
|
||||||
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
|
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
|
||||||
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
||||||
@@ -20,6 +22,7 @@ import com.starry.admin.modules.withdraw.service.IWithdrawalService;
|
|||||||
import com.starry.admin.utils.SecurityUtils;
|
import com.starry.admin.utils.SecurityUtils;
|
||||||
import com.starry.common.utils.IdUtils;
|
import com.starry.common.utils.IdUtils;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
@@ -71,6 +74,14 @@ class AdminWithdrawalControllerApiTest extends AbstractApiTest {
|
|||||||
@Test
|
@Test
|
||||||
void auditReturnsEarningLinesWithOrderDetails() throws Exception {
|
void auditReturnsEarningLinesWithOrderDetails() throws Exception {
|
||||||
ensureTenantContext();
|
ensureTenantContext();
|
||||||
|
ensureProfileFixtures();
|
||||||
|
|
||||||
|
PlayClerkUserInfoEntity expectedClerk = clerkUserInfoService.getById(ApiTestDataSeeder.DEFAULT_CLERK_ID);
|
||||||
|
PlayCustomUserInfoEntity expectedCustomer = customUserInfoService.getById(ApiTestDataSeeder.DEFAULT_CUSTOMER_ID);
|
||||||
|
Assertions.assertThat(expectedClerk).as("default clerk fixture missing").isNotNull();
|
||||||
|
Assertions.assertThat(expectedCustomer).as("default customer fixture missing").isNotNull();
|
||||||
|
String expectedClerkNickname = expectedClerk.getNickname();
|
||||||
|
String expectedCustomerNickname = expectedCustomer.getNickname();
|
||||||
|
|
||||||
PlayOrderInfoEntity order = seedOrder(LocalDateTime.now().minusHours(2));
|
PlayOrderInfoEntity order = seedOrder(LocalDateTime.now().minusHours(2));
|
||||||
WithdrawalRequestEntity withdrawal = seedWithdrawal(ApiTestDataSeeder.DEFAULT_TENANT_ID, new BigDecimal("88.60"));
|
WithdrawalRequestEntity withdrawal = seedWithdrawal(ApiTestDataSeeder.DEFAULT_TENANT_ID, new BigDecimal("88.60"));
|
||||||
@@ -89,8 +100,6 @@ class AdminWithdrawalControllerApiTest extends AbstractApiTest {
|
|||||||
.andReturn();
|
.andReturn();
|
||||||
|
|
||||||
JsonNode data = objectMapper.readTree(result.getResponse().getContentAsString()).get("data");
|
JsonNode data = objectMapper.readTree(result.getResponse().getContentAsString()).get("data");
|
||||||
String expectedClerkNickname = clerkUserInfoService.selectById(ApiTestDataSeeder.DEFAULT_CLERK_ID).getNickname();
|
|
||||||
String expectedCustomerNickname = customUserInfoService.selectById(ApiTestDataSeeder.DEFAULT_CUSTOMER_ID).getNickname();
|
|
||||||
|
|
||||||
boolean foundOrder = false;
|
boolean foundOrder = false;
|
||||||
boolean foundMissing = false;
|
boolean foundMissing = false;
|
||||||
@@ -100,9 +109,9 @@ class AdminWithdrawalControllerApiTest extends AbstractApiTest {
|
|||||||
Assertions.assertThat(node.path("orderStatus").asText()).isEqualTo(order.getOrderStatus());
|
Assertions.assertThat(node.path("orderStatus").asText()).isEqualTo(order.getOrderStatus());
|
||||||
Assertions.assertThat(node.path("earningType").asText()).isEqualTo(EarningsType.ORDER.name());
|
Assertions.assertThat(node.path("earningType").asText()).isEqualTo(EarningsType.ORDER.name());
|
||||||
Assertions.assertThat(node.path("orderClerkId").asText()).isEqualTo(ApiTestDataSeeder.DEFAULT_CLERK_ID);
|
Assertions.assertThat(node.path("orderClerkId").asText()).isEqualTo(ApiTestDataSeeder.DEFAULT_CLERK_ID);
|
||||||
Assertions.assertThat(node.path("orderClerkNickname").asText()).isEqualTo(expectedClerkNickname);
|
Assertions.assertThat(normalizeUtf8(node.path("orderClerkNickname").asText())).isEqualTo(expectedClerkNickname);
|
||||||
Assertions.assertThat(node.path("orderCustomerId").asText()).isEqualTo(ApiTestDataSeeder.DEFAULT_CUSTOMER_ID);
|
Assertions.assertThat(node.path("orderCustomerId").asText()).isEqualTo(ApiTestDataSeeder.DEFAULT_CUSTOMER_ID);
|
||||||
Assertions.assertThat(node.path("orderCustomerNickname").asText()).isEqualTo(expectedCustomerNickname);
|
Assertions.assertThat(normalizeUtf8(node.path("orderCustomerNickname").asText())).isEqualTo(expectedCustomerNickname);
|
||||||
foundOrder = true;
|
foundOrder = true;
|
||||||
}
|
}
|
||||||
if (node.path("orderNo").isNull()) {
|
if (node.path("orderNo").isNull()) {
|
||||||
@@ -299,6 +308,72 @@ class AdminWithdrawalControllerApiTest extends AbstractApiTest {
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ensureProfileFixtures() {
|
||||||
|
ensureTenantContext();
|
||||||
|
ensureClerkFixture();
|
||||||
|
ensureCustomerFixture();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ensureClerkFixture() {
|
||||||
|
PlayClerkUserInfoEntity clerk = clerkUserInfoService.getById(ApiTestDataSeeder.DEFAULT_CLERK_ID);
|
||||||
|
if (clerk != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PlayClerkUserInfoEntity entity = new PlayClerkUserInfoEntity();
|
||||||
|
entity.setId(ApiTestDataSeeder.DEFAULT_CLERK_ID);
|
||||||
|
entity.setTenantId(ApiTestDataSeeder.DEFAULT_TENANT_ID);
|
||||||
|
entity.setSysUserId(ApiTestDataSeeder.DEFAULT_ADMIN_USER_ID);
|
||||||
|
entity.setOpenid(ApiTestDataSeeder.DEFAULT_CLERK_OPEN_ID);
|
||||||
|
entity.setNickname("小测官");
|
||||||
|
entity.setGroupId(ApiTestDataSeeder.DEFAULT_GROUP_ID);
|
||||||
|
entity.setLevelId(ApiTestDataSeeder.DEFAULT_CLERK_LEVEL_ID);
|
||||||
|
entity.setFixingLevel("1");
|
||||||
|
entity.setSex("2");
|
||||||
|
entity.setPhone("13900000001");
|
||||||
|
entity.setWeiChatCode("apitest-clerk");
|
||||||
|
entity.setAvatar("https://example.com/avatar.png");
|
||||||
|
entity.setAccountBalance(BigDecimal.ZERO);
|
||||||
|
entity.setOnboardingState("1");
|
||||||
|
entity.setListingState("1");
|
||||||
|
entity.setDisplayState("1");
|
||||||
|
entity.setOnlineState("1");
|
||||||
|
entity.setRandomOrderState("1");
|
||||||
|
entity.setClerkState("1");
|
||||||
|
entity.setEntryTime(LocalDateTime.now());
|
||||||
|
entity.setToken("apitest-clerk-token");
|
||||||
|
entity.setDeleted(false);
|
||||||
|
clerkUserInfoService.save(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ensureCustomerFixture() {
|
||||||
|
PlayCustomUserInfoEntity customer = customUserInfoService.getById(ApiTestDataSeeder.DEFAULT_CUSTOMER_ID);
|
||||||
|
if (customer != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PlayCustomUserInfoEntity entity = new PlayCustomUserInfoEntity();
|
||||||
|
entity.setId(ApiTestDataSeeder.DEFAULT_CUSTOMER_ID);
|
||||||
|
entity.setTenantId(ApiTestDataSeeder.DEFAULT_TENANT_ID);
|
||||||
|
entity.setOpenid("openid-customer-apitest");
|
||||||
|
entity.setUnionid("unionid-customer-apitest");
|
||||||
|
entity.setNickname("测试顾客");
|
||||||
|
entity.setSex(1);
|
||||||
|
entity.setPhone("13700000002");
|
||||||
|
entity.setWeiChatCode("apitest-customer");
|
||||||
|
entity.setAccountBalance(new BigDecimal("200.00"));
|
||||||
|
entity.setAccumulatedRechargeAmount(new BigDecimal("200.00"));
|
||||||
|
entity.setAccumulatedConsumptionAmount(BigDecimal.ZERO);
|
||||||
|
entity.setAccountState("1");
|
||||||
|
entity.setSubscribeState("1");
|
||||||
|
entity.setPurchaseState("1");
|
||||||
|
entity.setMobilePhoneState("1");
|
||||||
|
Date now = new Date();
|
||||||
|
entity.setRegistrationTime(now);
|
||||||
|
entity.setLastLoginTime(now);
|
||||||
|
entity.setToken("apitest-customer-token");
|
||||||
|
entity.setDeleted(false);
|
||||||
|
customUserInfoService.save(entity);
|
||||||
|
}
|
||||||
|
|
||||||
private void ensureTenantContext() {
|
private void ensureTenantContext() {
|
||||||
SecurityUtils.setTenantId(ApiTestDataSeeder.DEFAULT_TENANT_ID);
|
SecurityUtils.setTenantId(ApiTestDataSeeder.DEFAULT_TENANT_ID);
|
||||||
}
|
}
|
||||||
@@ -306,4 +381,16 @@ class AdminWithdrawalControllerApiTest extends AbstractApiTest {
|
|||||||
private Date toDate(LocalDateTime value) {
|
private Date toDate(LocalDateTime value) {
|
||||||
return Date.from(value.atZone(ZoneId.systemDefault()).toInstant());
|
return Date.from(value.atZone(ZoneId.systemDefault()).toInstant());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String normalizeUtf8(String value) {
|
||||||
|
if (value == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
boolean convertible = value.chars().allMatch(ch -> ch <= 0xFF);
|
||||||
|
if (!convertible) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
byte[] bytes = value.getBytes(StandardCharsets.ISO_8859_1);
|
||||||
|
return new String(bytes, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user