Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@
import com.backbase.stream.legalentity.model.TermDeposit;
import com.backbase.stream.legalentity.model.TermUnit;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Set;
Expand All @@ -60,6 +62,7 @@ public interface ProductMapper {
@Mapping(source = "state.externalStateId", target = "state.externalId")
@Mapping(source = ProductMapperConstants.ACCOUNT_HOLDER_NAME, target = "accountHolder.names")
@Mapping(source = ProductMapperConstants.EXTERNAL_PARENT_ID, target = "parentExternalId")
@Mapping(source = "validThru", target = "validThru", qualifiedByName = "mapValidThru")
ArrangementPost toPresentation(Product product);

@Mapping(source = ProductMapperConstants.EXTERNAL_ID, target = ProductMapperConstants.EXTERNAL_ARRANGEMENT_ID)
Expand Down Expand Up @@ -98,6 +101,7 @@ public interface ProductMapper {
@Mapping(source = "creditCard", qualifiedByName = "mapCreditCardNumber", target = ProductMapperConstants.NUMBER)
@Mapping(source = "state.state", target = "state.externalId")
@Mapping(source = ProductMapperConstants.EXTERNAL_PARENT_ID, target = "parentExternalId")
@Mapping(source = "validThru", target = "validThru", qualifiedByName = "mapValidThru")
@InheritConfiguration
ArrangementPost toPresentation(CreditCard creditCard);

Expand Down Expand Up @@ -130,11 +134,13 @@ public interface ProductMapper {
@Mapping(source = "accountHolder.names", target = "accountHolderNames")
@Mapping(source = "product.externalId", target = "externalProductId")
@Mapping(source = "legalEntities", target = "legalEntityIds", qualifiedByName = "mapLegalEntitiesIdsSet")
@Mapping(source = "validThru", target = "validThru", qualifiedByName = "mapValidThru")
ArrangementItem toArrangementItem(ArrangementPost arrangementItemPost);

@Mapping(source = "externalId", target = "externalArrangementId")
@Mapping(source = "state.externalId", target = "stateId")
@Mapping(source = "accountHolder.names", target = "accountHolderNames")
@Mapping(source = "validThru", target = "validThru", qualifiedByName = "mapValidThru")
ArrangementPutItem toArrangementItemPut(ArrangementPost arrangementItemPost);

ArrangementItemBase toArrangementItemBase(ArrangementItemPostRequest arrangementItemPost);
Expand Down Expand Up @@ -479,4 +485,18 @@ default String mapCreditCardNumber(CreditCard creditCard) {
InterestPaymentFrequencyUnit mapTimeUnitV3ToInterestPaymentFrequencyUnit(com.backbase.dbs.arrangement.api.service.v3.model.TimeUnit timeUnit);

com.backbase.dbs.arrangement.api.service.v3.model.TimeUnit mapTimeUnitV2ToTimeUnitV3(TimeUnit timeUnit);

@Named("mapValidThru")
default LocalDate mapValidThru(OffsetDateTime validThru) {
if (validThru != null) {
return validThru.toLocalDate();
}
return null;
}

@Named("mapValidThru")
default OffsetDateTime mapValidThru(String validThru) {
LocalDate localDate = LocalDate.parse(validThru);
return localDate.atTime(0,0,0,0).atOffset(OffsetDateTime.now(ZoneId.of("UTC")).getOffset());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ private Product buildProduct() {
.autoRenewalIndicator(true)
.interestSettlementAccount("ISA")
.outstandingPrincipalAmount(new BigDecimal("101"))
.monthlyInstalmentAmount(new BigDecimal("250"));
.monthlyInstalmentAmount(new BigDecimal("250"))
.validThru(OffsetDateTime.parse("2050-12-23T11:20:30.000001Z"));
}

private SavingsAccount buildSavingsAccount() {
Expand Down Expand Up @@ -275,6 +276,18 @@ void map_AccountArrangementItemBase_To_AccountArrangementItem() {
Assertions.assertEquals(target.getAccountHolderNames(), source.getAccountHolder().getNames());
}

@Test
void map_AccountArrangementItemBase_To_AccountArrangementItem_when_validThruNull() {
Product product = buildProduct();
product.setValidThru(null);
ArrangementPost source = productMapper.toPresentation(product);
ArrangementItem target = productMapper.toArrangementItem(source);
Assertions.assertEquals(target.getExternalArrangementId(), source.getExternalId());
Assertions.assertNotNull(target.getState());
Assertions.assertEquals(target.getState().getState(), source.getState().getExternalId());
Assertions.assertEquals(target.getAccountHolderNames(), source.getAccountHolder().getNames());
}

@Test
void map_Product_To_AccountArrangementItem() {
Product source = buildProduct();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.backbase.stream.loan.LoansSaga;
import com.backbase.stream.loan.LoansTask;
import com.backbase.stream.product.configuration.ProductIngestionSagaConfigurationProperties;
import com.backbase.stream.product.mapping.ProductMapper;
import com.backbase.stream.product.service.ArrangementService;
import com.backbase.stream.product.task.BatchProductGroupTask;
import com.backbase.stream.product.task.ProductGroupTask;
Expand Down Expand Up @@ -59,8 +60,8 @@ public class BatchProductIngestionSaga extends ProductIngestionSaga {
public static final String BATCH_PRODUCT_GROUP = "batch-product-group";


public BatchProductIngestionSaga(ArrangementService arrangementService, AccessGroupService accessGroupService, UserService userService, ProductIngestionSagaConfigurationProperties configurationProperties, LoansSaga loansSaga) {
super(arrangementService, accessGroupService, userService, configurationProperties, loansSaga);
public BatchProductIngestionSaga(ArrangementService arrangementService, AccessGroupService accessGroupService, UserService userService, ProductIngestionSagaConfigurationProperties configurationProperties, LoansSaga loansSaga, ProductMapper productMapper) {
super(arrangementService, accessGroupService, userService, configurationProperties, loansSaga, productMapper);
}

public Mono<ProductGroupTask> process(ProductGroupTask streamTask) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public class ProductIngestionSaga {
public static final String REMOVED = "removed";
private static final String CREATED = "created";

protected final ProductMapper productMapper = Mappers.getMapper(ProductMapper.class);
protected final ProductMapper productMapper;

protected final BusinessFunctionGroupMapper businessFunctionGroupMapper = Mappers.getMapper(BusinessFunctionGroupMapper.class);

Expand All @@ -84,12 +84,13 @@ public class ProductIngestionSaga {
protected final ProductIngestionSagaConfigurationProperties configurationProperties;
protected final LoansSaga loansSaga;

public ProductIngestionSaga(ArrangementService arrangementService, AccessGroupService accessGroupService, UserService userService, ProductIngestionSagaConfigurationProperties configurationProperties, LoansSaga loansSaga) {
public ProductIngestionSaga(ArrangementService arrangementService, AccessGroupService accessGroupService, UserService userService, ProductIngestionSagaConfigurationProperties configurationProperties, LoansSaga loansSaga, ProductMapper productMapper) {
this.arrangementService = arrangementService;
this.accessGroupService = accessGroupService;
this.userService = userService;
this.configurationProperties = configurationProperties;
this.loansSaga = loansSaga;
this.productMapper = productMapper;
}

@ContinueSpan(log = "processProducts")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import com.backbase.stream.loan.LoansSaga;
import com.backbase.stream.product.configuration.ProductConfiguration;
import com.backbase.stream.product.configuration.ProductIngestionSagaConfigurationProperties;
import com.backbase.stream.product.mapping.ProductMapper;
import com.backbase.stream.product.service.ArrangementService;
import com.backbase.stream.service.AccessGroupService;
import com.backbase.stream.service.UserService;
import org.mapstruct.factory.Mappers;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -27,7 +29,8 @@ public ProductIngestionSaga productIngestionSaga(ArrangementService arrangementS
accessGroupService,
userService,
configurationProperties,
loansSaga
loansSaga,
Mappers.getMapper(ProductMapper.class)
);
}

Expand All @@ -42,7 +45,8 @@ public BatchProductIngestionSaga batchProductIngestionSaga(ArrangementService ar
accessGroupService,
userService,
configurationProperties,
loansSaga
loansSaga,
Mappers.getMapper(ProductMapper.class)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.backbase.stream.loan.LoansSaga;
import com.backbase.stream.loan.LoansTask;
import com.backbase.stream.product.configuration.ProductIngestionSagaConfigurationProperties;
import com.backbase.stream.product.mapping.ProductMapper;
import com.backbase.stream.product.service.ArrangementService;
import com.backbase.stream.product.task.BatchProductGroupTask;
import com.backbase.stream.service.AccessGroupService;
Expand All @@ -25,9 +26,11 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mapstruct.factory.Mappers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.util.ReflectionTestUtils;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
Expand All @@ -49,11 +52,14 @@ class BatchProductIngestionSagaTest {
LoansSaga loansSaga;
@Mock
LoansApi loansApi;
@Mock
ProductMapper productMapper;

BatchProductGroupTask batchProductGroupTask;

@BeforeEach
void setUp() {
ReflectionTestUtils.setField(batchProductIngestionSaga, "productMapper", Mappers.getMapper(ProductMapper.class));
batchProductGroupTask = mockBatchProductGroupTask();
BatchResponseItem batchResponseItemExtended = new BatchResponseItem();
batchResponseItemExtended.setArrangementExternalId("resource_id");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.backbase.stream.legalentity.model.ProductGroup;
import com.backbase.stream.loan.LoansSaga;
import com.backbase.stream.product.configuration.ProductIngestionSagaConfigurationProperties;
import com.backbase.stream.product.mapping.ProductMapper;
import com.backbase.stream.product.service.ArrangementService;
import com.backbase.stream.product.task.ProductGroupTask;
import com.backbase.stream.service.AccessGroupService;
Expand All @@ -18,9 +19,11 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mapstruct.factory.Mappers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.util.ReflectionTestUtils;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;

Expand All @@ -41,11 +44,14 @@ class ProductIngestionSagaTest {
LoansSaga loansSaga;
@Mock
LoansApi loansApi;
@Mock
ProductMapper productMapper;

ProductGroupTask productGroupTask;

@BeforeEach
void setUp() {
ReflectionTestUtils.setField(productIngestionSaga, "productMapper", Mappers.getMapper(ProductMapper.class));
productGroupTask = mockProductGroupTask();
when(arrangementService.getArrangementInternalId(anyString()))
.thenReturn(Mono.just("internal_id"));
Expand Down