1
This commit is contained in:
+26
@@ -18,6 +18,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.inOrder;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -127,6 +128,31 @@ class OverseasStorageFeeServiceTest {
|
||||
verify(repository, never()).updateRule(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void replacesExistingTiersWhenAddingOrRemovingAGroupTier() {
|
||||
OverseasStorageFeeRuleEntity rule = rule();
|
||||
when(repository.find(10L)).thenReturn(rule);
|
||||
List<OverseasStorageFeeDtos.TierRequest> tiers = List.of(
|
||||
typedTier("STORAGE", "CBM", 1, 30),
|
||||
typedTier("STORAGE", "CBM", 31, null),
|
||||
typedTier("RETURN_STORAGE", "PALLET", 1, 60),
|
||||
typedTier("RETURN_STORAGE", "PALLET", 61, null));
|
||||
OverseasStorageFeeDtos.UpdateRequest request = new OverseasStorageFeeDtos.UpdateRequest(
|
||||
10001L, "绀轰緥瀹㈡埛", "USD", tiers, 1);
|
||||
when(repository.updateRule(any())).thenReturn(1);
|
||||
|
||||
service.update(10L, request);
|
||||
|
||||
var calls = inOrder(repository);
|
||||
calls.verify(repository).updateRule(rule);
|
||||
calls.verify(repository).deleteTiers(10L);
|
||||
calls.verify(repository).insertTiers(org.mockito.ArgumentMatchers.argThat(saved ->
|
||||
saved.size() == 4
|
||||
&& saved.stream().filter(tier -> "STORAGE".equals(tier.getFeeType())).count() == 2
|
||||
&& saved.stream().filter(tier -> "RETURN_STORAGE".equals(tier.getFeeType())).count() == 2
|
||||
&& saved.stream().anyMatch(tier -> tier.getStartDay() == 31 && tier.getEndDay() == null)));
|
||||
}
|
||||
|
||||
@Test
|
||||
void initializesNineDefaultTiersIdempotently() {
|
||||
doAnswer(invocation -> { OverseasStorageFeeRuleEntity rule = invocation.getArgument(0); rule.setId(77L); return null; })
|
||||
|
||||
Reference in New Issue
Block a user