优化
This commit is contained in:
+17
-12
@@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
class InboundPlanDispatchStatusPersistenceTest {
|
||||
private JdbcTemplate db;
|
||||
private InboundPlanQueryMapper mapper;
|
||||
private com.baiyue.lastleg.mapper.LastlegOrderMapper orders;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
@@ -31,30 +32,33 @@ class InboundPlanDispatchStatusPersistenceTest {
|
||||
db.execute("CREATE TABLE ll_order_detail(order_id BIGINT,customer_id VARCHAR(20),gross_weight_kg DECIMAL(18,3),net_weight_kg DECIMAL(18,3))");
|
||||
db.execute("CREATE TABLE ll_inbound_order(id BIGINT,customer_id VARCHAR(20),gross_weight_kg DECIMAL(18,3),net_weight_kg DECIMAL(18,3))");
|
||||
db.execute("CREATE TABLE ll_dispatch_item(id BIGINT,customer_id VARCHAR(20),dispatch_order_id BIGINT,order_id BIGINT)");
|
||||
db.execute("CREATE TABLE ll_dispatch_order(id BIGINT,customer_id VARCHAR(20),status VARCHAR(30))");
|
||||
db.execute("CREATE TABLE ll_dispatch_order(id BIGINT,status VARCHAR(30),stage VARCHAR(30))");
|
||||
db.update("INSERT INTO ll_inbound_plan VALUES(1,'LIP-1','A',90,TRUE,FALSE,FALSE,'RECEIVED',CURRENT_TIMESTAMP,0)");
|
||||
db.update("INSERT INTO ll_inbound_plan_line VALUES(2,1,3,'IN-1','91','ABE4','ABE4','ABE4',1,1,1)");
|
||||
db.update("INSERT INTO ll_order VALUES(3,'A','LX-1','FIRST_LEG','LA','洛杉矶仓','客户A')");
|
||||
var config = new MybatisConfiguration();
|
||||
config.addMapper(InboundPlanQueryMapper.class);
|
||||
config.addMapper(com.baiyue.lastleg.mapper.LastlegOrderMapper.class);
|
||||
var factory = new MybatisSqlSessionFactoryBean();
|
||||
factory.setDataSource(data);
|
||||
factory.setConfiguration(config);
|
||||
mapper = new SqlSessionTemplate(factory.getObject()).getMapper(InboundPlanQueryMapper.class);
|
||||
var session = new SqlSessionTemplate(factory.getObject());
|
||||
mapper = session.getMapper(InboundPlanQueryMapper.class);
|
||||
orders = session.getMapper(com.baiyue.lastleg.mapper.LastlegOrderMapper.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void cancelledDispatchRetainsHistoryButDoesNotMarkOrFilterTheInboundAsScheduled() {
|
||||
dispatch(10, "A", "CANCELLED", "A");
|
||||
dispatch(10, "CANCELLED", "BEFORE_LOADING", "A");
|
||||
assertStatus("UNSCHEDULED");
|
||||
assertThat(db.queryForObject("SELECT COUNT(*) FROM ll_dispatch_item", Integer.class)).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void replacementDispatchCountsOnceAndCancellingItRestoresUnscheduled() {
|
||||
dispatch(10, "A", "CANCELLED", "A");
|
||||
dispatch(11, "A", "PENDING_DEPARTURE", "A");
|
||||
dispatch(12, "A", "PICKING", "A");
|
||||
dispatch(10, "CANCELLED", "BEFORE_LOADING", "A");
|
||||
dispatch(11, "ACTIVE", "BEFORE_LOADING", "A");
|
||||
dispatch(12, "ACTIVE", "LOADING", "A");
|
||||
assertStatus("SCHEDULED");
|
||||
db.update("UPDATE ll_dispatch_order SET status='CANCELLED'");
|
||||
assertStatus("UNSCHEDULED");
|
||||
@@ -62,16 +66,15 @@ class InboundPlanDispatchStatusPersistenceTest {
|
||||
|
||||
@Test
|
||||
void departedAndCompletedDispatchesRemainScheduled() {
|
||||
dispatch(10, "A", "DEPARTED", "A");
|
||||
dispatch(10, "ACTIVE", "DELIVERING", "A");
|
||||
assertStatus("SCHEDULED");
|
||||
db.update("UPDATE ll_dispatch_order SET status='COMPLETED'");
|
||||
db.update("UPDATE ll_dispatch_order SET stage='DELIVERED'");
|
||||
assertStatus("SCHEDULED");
|
||||
}
|
||||
|
||||
@Test
|
||||
void otherCustomerOrMissingDispatchCannotMarkThisInboundScheduled() {
|
||||
dispatch(10, "B", "PENDING_DEPARTURE", "B");
|
||||
dispatch(11, "B", "PENDING_DEPARTURE", "A");
|
||||
dispatch(10, "ACTIVE", "BEFORE_LOADING", "B");
|
||||
db.update("INSERT INTO ll_dispatch_item VALUES(12,'A',999,3)");
|
||||
assertStatus("UNSCHEDULED");
|
||||
assertThat(mapper.rows("B", query(null), 0, 20)).isEmpty();
|
||||
@@ -106,12 +109,14 @@ class InboundPlanDispatchStatusPersistenceTest {
|
||||
assertThat(remaining.appointmentNo()).isEqualTo("AP-FIRST");assertThat(remaining.appointmentStatus()).isEqualTo("SUCCESS");
|
||||
}
|
||||
|
||||
private void dispatch(long id, String owner, String status, String itemOwner) {
|
||||
db.update("INSERT INTO ll_dispatch_order VALUES(?,?,?)", id, owner, status);
|
||||
private void dispatch(long id, String status, String stage, String itemOwner) {
|
||||
db.update("INSERT INTO ll_dispatch_order VALUES(?,?,?)", id, status, stage);
|
||||
db.update("INSERT INTO ll_dispatch_item VALUES(?,?,?,3)", id, itemOwner, id);
|
||||
}
|
||||
|
||||
private void assertStatus(String status) {
|
||||
assertThat(orders.findDispatchStatuses(java.util.List.of(3L)))
|
||||
.extracting(com.baiyue.lastleg.mapper.LastlegOrderMapper.DispatchStatusRow::dispatchStatus).containsExactly(status);
|
||||
for (String customer : new String[]{null, "A"}) {
|
||||
assertThat(mapper.rows(customer, query(null), 0, 20))
|
||||
.extracting(InboundPlanListResponse::dispatchStatus).containsExactly(status);
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@ import org.apache.ibatis.annotations.Select;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
|
||||
class InboundPlanQueryMapperContractTest {
|
||||
@Test
|
||||
@@ -20,7 +21,7 @@ class InboundPlanQueryMapperContractTest {
|
||||
assertTrue(sql.contains("p.overseas_warehouse_id overseasWarehouseId"));
|
||||
assertTrue(sql.contains("p.overseas_warehouse_id=#{q.overseasWarehouseId}"));
|
||||
assertTrue(sql.contains("di.customer_id=p.customer_id AND di.order_id=l.order_id"));
|
||||
assertTrue(sql.contains("dispatch.customer_id=di.customer_id"));
|
||||
assertFalse(sql.contains("dispatch.customer_id"));
|
||||
assertTrue(sql.contains("dispatch.status<>'CANCELLED'"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user