This commit is contained in:
2026-08-11 20:39:28 +08:00
parent 86488da6d0
commit b2af5739c8
15 changed files with 247 additions and 7 deletions
@@ -13,6 +13,7 @@ class PlatformLoadingPdaControllerContractTest {
@Test
void exposesAssignmentWorkAndReviewWithDedicatedAuthorities() throws Exception {
authority("task", "platform:firstleg:pda:view", AuthenticatedUser.class, String.class, long.class);
authority("pendingTasks", "platform:firstleg:pda:view", AuthenticatedUser.class, String.class);
authority("inventorySnapshot", "platform:firstleg:pda:view", AuthenticatedUser.class, long.class, long.class);
authority("claim", "platform:firstleg:pda:work", AuthenticatedUser.class, long.class, ClaimRequest.class);
authority("assign", "platform:firstleg:pda:assign", AuthenticatedUser.class, long.class, AssignRequest.class);
@@ -0,0 +1,37 @@
package com.baiyue.firstleg.repository;
import com.baiyue.firstleg.mapper.LoadingPickItemMapper;
import com.baiyue.firstleg.mapper.LoadingPickTaskMapper;
import org.apache.ibatis.annotations.Select;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
class LoadingPickPdaTaskSqlContractTest {
@Test
void pendingTasksAreLimitedToUnassignedOrCurrentOperatorWithoutCustomerInput() throws Exception {
String sql = LoadingPickTaskMapper.class
.getDeclaredMethod("selectPendingForOperator", long.class, String.class)
.getAnnotation(Select.class).value()[0];
assertThat(sql)
.contains("task.task_status = 'LOADING'")
.contains("assignment.pick_task_id IS NULL OR assignment.assignee_id = #{operatorId}")
.contains("booking.warehouse_id AS warehouseId")
.doesNotContain("tenantId");
}
@Test
void taskDetailsExposeStableCartonCodesBoundToThePlannedInboundDetail() throws Exception {
String sql = LoadingPickItemMapper.class
.getDeclaredMethod("selectTaskCartonLabels", long.class)
.getAnnotation(Select.class).value()[0];
assertThat(sql)
.contains("fl_inbound_carton_label")
.contains("label.tenant_id = plan_item.account_id")
.contains("label.inbound_id = plan_item.inbound_id")
.contains("label.inbound_detail_id = plan_item.inbound_detail_id")
.contains("label.box_code AS boxCode");
}
}