package com.baiyue.lastleg.delivery; import com.baiyue.lastleg.delivery.entity.DeliveryOrder; import com.baiyue.lastleg.delivery.entity.OutboundOrder; import com.baiyue.lastleg.delivery.entity.OutboundPalletItem; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; class DeliverySchemaContractTest { @Test void baselineDefinesOutboundPalletsAndDeliveryContracts() throws Exception { String schema = Files.readString(Path.of("src/main/resources/db/lastleg.sql"), StandardCharsets.UTF_8) .toLowerCase(); assertTrue(schema.contains("create table if not exists ll_outbound_order")); assertTrue(schema.contains("status varchar(32) not null default 'wait_outbound'")); assertTrue(schema.contains("unique key uk_ll_outbound_idempotency (customer_id,idempotency_key)")); assertTrue(schema.contains("unique key uk_ll_outbound_dispatch (customer_id,dispatch_order_id)")); assertTrue(schema.contains("create table if not exists ll_outbound_pallet_item")); assertTrue(schema.contains("unique key uk_ll_outbound_pallet (customer_id,outbound_order_id,warehouse_pallet_id)")); assertTrue(schema.contains("destination_warehouse_code varchar(128) null")); assertTrue(schema.contains("order_refs varchar(2000) null")); assertTrue(schema.contains("inbound_code varchar(128) null")); assertTrue(schema.contains("create table if not exists ll_delivery_order")); assertTrue(schema.contains("status varchar(32) not null default 'wait_delivery'")); assertTrue(schema.contains("unique key uk_ll_delivery_idempotency (customer_id,idempotency_key)")); assertTrue(schema.contains("unique key uk_ll_delivery_outbound (customer_id,outbound_order_id)")); } @Test void deliveryPersistenceEntitiesUseSnowflakeIds() throws Exception { for (Class type : new Class[] { OutboundOrder.class, OutboundPalletItem.class, DeliveryOrder.class }) { TableId id = type.getDeclaredField("id").getAnnotation(TableId.class); assertNotNull(id, type.getSimpleName()); assertEquals(IdType.ASSIGN_ID, id.type(), type.getSimpleName()); } } @Test void incrementalMigrationAddsTransferTablesAndIsRerunnable() throws Exception { String migration = Files.readString(Path.of("..", "scripts", "db", "incremental.sql"), StandardCharsets.UTF_8) .toLowerCase(); assertTrue(migration.contains("2026-08-17 / 014")); assertTrue(migration.contains("create table if not exists ll_outbound_order")); assertTrue(migration.contains("create table if not exists ll_outbound_pallet_item")); assertTrue(migration.contains("create table if not exists ll_delivery_order")); } }