费用提交

This commit is contained in:
2026-10-26 13:41:43 +08:00
parent 0fe1d10566
commit 761fe3686e
171 changed files with 8750 additions and 386 deletions
@@ -0,0 +1,45 @@
package com.baiyue.firstleg.service;
import com.baiyue.common.core.exception.BizException;
import com.baiyue.firstleg.controller.InternalFeeCatalogController;
import com.baiyue.firstleg.entity.FeeItemEntity;
import com.baiyue.firstleg.repository.FeeItemRepository;
import org.junit.jupiter.api.Test;
import java.math.BigDecimal;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
class SharedFeeCatalogServiceTest {
/** 已停用、方向变更或非海外项目不能沿用页面旧选项。 */
@Test void currentEligibilityIsCheckedBeforeUse() {
FeeItemRepository repository = mock(FeeItemRepository.class);
SharedFeeCatalogService service = new SharedFeeCatalogService(repository);
FeeItemEntity item = new FeeItemEntity();
item.setFeeCode("FEE-1"); item.setFeeTypeName("操作费");
item.setStatus("ACTIVE"); item.setTradeScope("INTERNATIONAL");
item.setWarehouseReceivable(true); item.setDefaultPrice(new BigDecimal("2.50"));
when(repository.findItemByCode("FEE-1")).thenReturn(item);
when(repository.listActiveInternationalWarehouseItems("RECEIVABLE")).thenReturn(List.of(item));
assertEquals(new BigDecimal("2.50"), service.list("RECEIVABLE").get(0).defaultPrice());
assertEquals("操作费", service.requireActive("FEE-1", "RECEIVABLE").name());
assertThrows(BizException.class, () -> service.requireActive("FEE-1", "PAYABLE"));
item.setStatus("INACTIVE");
assertThrows(BizException.class, () -> service.requireActive("FEE-1", "RECEIVABLE"));
item.setStatus("ACTIVE"); item.setTradeScope("DOMESTIC");
assertThrows(BizException.class, () -> service.requireActive("FEE-1", "RECEIVABLE"));
assertThrows(BizException.class, () -> service.list(null));
}
/** 内部入口未配置、缺少或错误凭证均不得读取目录。 */
@Test void internalCatalogRequiresExplicitServiceIdentity() {
SharedFeeCatalogService service = mock(SharedFeeCatalogService.class);
InternalFeeCatalogController controller = new InternalFeeCatalogController(service, "configured-token");
assertThrows(BizException.class, () -> controller.list(null, "RECEIVABLE"));
assertThrows(BizException.class, () -> controller.detail("wrong", "FEE-1", "RECEIVABLE"));
assertThrows(BizException.class, () -> new InternalFeeCatalogController(service, "").list("", "RECEIVABLE"));
verifyNoInteractions(service);
when(service.list("RECEIVABLE")).thenReturn(List.of());
assertTrue(controller.list("configured-token", "RECEIVABLE").successful());
}
}