mirror of
https://github.com/valitydev/cashier.git
synced 2024-11-06 09:55:17 +00:00
BJ-847: Fix if-mess
This commit is contained in:
parent
f179026fa6
commit
7343ab9172
@ -9,7 +9,7 @@ import lombok.SneakyThrows;
|
||||
import org.apache.thrift.TException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@ -24,41 +24,68 @@ public class ClaimCommitterServerHandler implements ClaimCommitterSrv.Iface {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public void commit(String partyId, Claim claim) {
|
||||
for (ModificationUnit modificationUnit : claim.getChangeset()) {
|
||||
Modification modification = modificationUnit.getModification();
|
||||
claim.getChangeset()
|
||||
.forEach(modificationUnit -> findCashRegister(partyId, modificationUnit)
|
||||
.ifPresent(cashRegisterRepository::save));
|
||||
}
|
||||
|
||||
if (modification.isSetPartyModification()) {
|
||||
PartyModification partyModification = modification.getPartyModification();
|
||||
private Optional<CashRegister> findCashRegister(String partyId, ModificationUnit modificationUnit) {
|
||||
CashRegister.CashRegisterBuilder builder = CashRegister.builder();
|
||||
builder.partyId(partyId);
|
||||
|
||||
if (partyModification.isSetShopModification()) {
|
||||
ShopModificationUnit shopModificationUnit = partyModification.getShopModification();
|
||||
String shopId = shopModificationUnit.getId();
|
||||
ShopModification shopModification = shopModificationUnit.getModification();
|
||||
Modification modification = modificationUnit.getModification();
|
||||
return findInPartyModification(builder, modification);
|
||||
}
|
||||
|
||||
if (shopModification.isSetCashRegisterModificationUnit()) {
|
||||
CashRegisterModificationUnit cashRegisterModificationUnit = shopModification.getCashRegisterModificationUnit();
|
||||
String cashRegisterId = cashRegisterModificationUnit.getId();
|
||||
CashRegisterModification cashRegisterModification = cashRegisterModificationUnit.getModification();
|
||||
|
||||
if (cashRegisterModification.isSetCreation()) {
|
||||
CashRegisterParams cashRegisterParams = cashRegisterModification.getCreation();
|
||||
int providerId = cashRegisterParams.getCashRegisterProviderId();
|
||||
Map<String, String> providerParams = cashRegisterParams.getCashRegisterProviderParams();
|
||||
CashRegister cashRegister = CashRegister.builder()
|
||||
.id(cashRegisterId)
|
||||
.partyId(partyId)
|
||||
.shopId(shopId)
|
||||
.providerId(providerId)
|
||||
.providerParams(objectMapper.writeValueAsString(providerParams))
|
||||
.build();
|
||||
|
||||
cashRegisterRepository.save(cashRegister);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private Optional<CashRegister> findInPartyModification(
|
||||
CashRegister.CashRegisterBuilder builder,
|
||||
Modification modification) {
|
||||
if (!modification.isSetPartyModification()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return findInShopModification(modification.getPartyModification(), builder);
|
||||
}
|
||||
|
||||
private Optional<CashRegister> findInShopModification(
|
||||
PartyModification partyModification,
|
||||
CashRegister.CashRegisterBuilder builder) {
|
||||
if (!partyModification.isSetShopModification()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
ShopModificationUnit shopModificationUnit = partyModification.getShopModification();
|
||||
builder.shopId(shopModificationUnit.getId());
|
||||
|
||||
return findInCashRegisterModification(shopModificationUnit.getModification(), builder);
|
||||
}
|
||||
|
||||
private Optional<CashRegister> findInCashRegisterModification(
|
||||
ShopModification shopModification,
|
||||
CashRegister.CashRegisterBuilder builder) {
|
||||
if (!shopModification.isSetCashRegisterModificationUnit()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
CashRegisterModificationUnit cashRegisterModificationUnit = shopModification.getCashRegisterModificationUnit();
|
||||
builder.id(cashRegisterModificationUnit.getId());
|
||||
|
||||
return findInCreationModification(cashRegisterModificationUnit.getModification(), builder);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private Optional<CashRegister> findInCreationModification(
|
||||
CashRegisterModification cashRegisterModification,
|
||||
CashRegister.CashRegisterBuilder builder) {
|
||||
if (!cashRegisterModification.isSetCreation()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
CashRegisterParams cashRegisterParams = cashRegisterModification.getCreation();
|
||||
builder.providerId(cashRegisterParams.getCashRegisterProviderId());
|
||||
builder.providerParams(objectMapper.writeValueAsString(cashRegisterParams.getCashRegisterProviderParams()));
|
||||
|
||||
return Optional.ofNullable(builder.build());
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.rbkmoney.cashier.domain.CashRegister;
|
||||
import com.rbkmoney.cashier.repository.CashRegisterRepository;
|
||||
import com.rbkmoney.damsel.claim_management.*;
|
||||
import com.rbkmoney.damsel.domain.CategoryRef;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
@ -63,4 +64,54 @@ public class ClaimCommitterServerHandlerTest {
|
||||
|
||||
assertThat(cashRegister).isEqualTo(expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHandleClaimWithNoPartyModification() {
|
||||
// Given
|
||||
Claim claim = new Claim()
|
||||
.setChangeset(List.of(new ModificationUnit()
|
||||
.setModification(Modification.claim_modification(new ClaimModification()))));
|
||||
|
||||
// When
|
||||
claimCommitterServerHandler.commit("party-id", claim);
|
||||
|
||||
// Then
|
||||
verify(cashRegisterRepository, never())
|
||||
.save(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHandleClaimWithNoShopModification() {
|
||||
// Given
|
||||
Claim claim = new Claim()
|
||||
.setChangeset(List.of(new ModificationUnit()
|
||||
.setModification(Modification.party_modification(
|
||||
PartyModification.contract_modification(new ContractModificationUnit())))));
|
||||
|
||||
// When
|
||||
claimCommitterServerHandler.commit("party-id", claim);
|
||||
|
||||
// Then
|
||||
verify(cashRegisterRepository, never())
|
||||
.save(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHandleClaimWithNoCashRegisterModification() {
|
||||
// Given
|
||||
Claim claim = new Claim()
|
||||
.setChangeset(List.of(new ModificationUnit()
|
||||
.setModification(Modification.party_modification(
|
||||
PartyModification.shop_modification(new ShopModificationUnit()
|
||||
.setId("shop-id")
|
||||
.setModification(
|
||||
ShopModification.category_modification(new CategoryRef())))))));
|
||||
|
||||
// When
|
||||
claimCommitterServerHandler.commit("party-id", claim);
|
||||
|
||||
// Then
|
||||
verify(cashRegisterRepository, never())
|
||||
.save(any());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user