feat(appointments): discover external booking candidates through fleet boundary
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
||||
package com.baiyue.lastleg.fleet.business;
|
||||
|
||||
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
import com.baiyue.lastleg.appointmentplanning.AppointmentExternalSourceGateway.CandidateQuery;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.datasource.DriverManagerDataSource;
|
||||
import java.util.*;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
class FleetAppointmentCandidateMapperTest {
|
||||
@Test void pagesOriginalBookingsAcrossCustomersAndExcludesIneligibleScope() throws Exception {
|
||||
var ds=new DriverManagerDataSource("jdbc:h2:mem:"+UUID.randomUUID()+";MODE=MySQL;DB_CLOSE_DELAY=-1","sa","");
|
||||
var db=new JdbcTemplate(ds);
|
||||
db.execute("CREATE TABLE ll_fleet_trip(id BIGINT PRIMARY KEY,warehouse_id BIGINT,status VARCHAR(32))");
|
||||
db.execute("CREATE TABLE ll_fleet_external_booking(id BIGINT PRIMARY KEY,trip_id BIGINT,customer_id VARCHAR(64),customer_name VARCHAR(64),booking_no VARCHAR(64),trip_no VARCHAR(64),status VARCHAR(32),offer_id BIGINT,destination_key VARCHAR(160),incoming_no VARCHAR(64),created_at TIMESTAMP)");
|
||||
db.update("INSERT INTO ll_fleet_trip VALUES(1,100,'PLANNED'),(2,200,'PLANNED'),(3,100,'COMPLETED')");
|
||||
for(int i=1;i<=7;i++) db.update("INSERT INTO ll_fleet_external_booking VALUES(?,1,?,? ,?,'TR-1','CONFIRMED',1,'FBA:ONT8',NULL,CURRENT_TIMESTAMP)",i,"C"+i,"Customer "+i,"FB-"+i);
|
||||
db.update("UPDATE ll_fleet_external_booking SET status='CANCELLED' WHERE id=3");
|
||||
db.update("UPDATE ll_fleet_external_booking SET status='DRAFT' WHERE id=4");
|
||||
db.update("UPDATE ll_fleet_external_booking SET trip_id=2 WHERE id=5");
|
||||
db.update("UPDATE ll_fleet_external_booking SET trip_id=3 WHERE id=6");
|
||||
db.update("UPDATE ll_fleet_external_booking SET destination_key='FBA:YYZ1' WHERE id=7");
|
||||
db.update("UPDATE ll_fleet_external_booking SET status='BOUND',incoming_no='IN-2' WHERE id=2");
|
||||
var config=new MybatisConfiguration();config.addMapper(FleetAppointmentCandidateMapper.class);
|
||||
var factory=new MybatisSqlSessionFactoryBean();factory.setDataSource(ds);factory.setConfiguration(config);
|
||||
var mapper=new SqlSessionTemplate(factory.getObject()).getMapper(FleetAppointmentCandidateMapper.class);
|
||||
var query=new CandidateQuery(1,1,List.of("100"),List.of("ONT8"),null,null,null);
|
||||
assertThat(mapper.count(query)).isEqualTo(2);
|
||||
assertThat(mapper.page(query,0)).extracting(r->r.bookingNo()).containsExactly("FB-2");
|
||||
assertThat(mapper.page(query,1)).extracting(r->r.bookingNo()).containsExactly("FB-1");
|
||||
assertThat(mapper.page(new CandidateQuery(1,20,List.of("100"),List.of("ONT8"),"100","ONT8","IN-2"),0))
|
||||
.extracting(r->r.customerId()).containsExactly("C2");
|
||||
db.update("UPDATE ll_fleet_external_booking SET offer_id=NULL WHERE id=1");
|
||||
assertThat(mapper.count(query)).isEqualTo(1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user