use of com.commercetools.sync.integration.commons.utils.CartDiscountITUtils.CART_DISCOUNT_KEY_2 in project commercetools-sync-java by commercetools.
the class CartDiscountServiceImplIT method createCartDiscount_WithValidCartDiscount_ShouldCreateCartDiscount.
@Test
void createCartDiscount_WithValidCartDiscount_ShouldCreateCartDiscount() {
// preparation
final CartDiscountDraft newCartDiscountDraft = CartDiscountDraftBuilder.of(CART_DISCOUNT_NAME_2, CART_DISCOUNT_CART_PREDICATE_2, CART_DISCOUNT_VALUE_2, CART_DISCOUNT_TARGET_2, SORT_ORDER_2, false).key(CART_DISCOUNT_KEY_2).active(false).build();
final SphereClient spyClient = spy(CTP_TARGET_CLIENT);
final CartDiscountSyncOptions spyOptions = CartDiscountSyncOptionsBuilder.of(spyClient).errorCallback((exception, oldResource, newResource, actions) -> {
errorCallBackMessages.add(exception.getMessage());
errorCallBackExceptions.add(exception);
}).build();
final CartDiscountService spyCartDiscountService = new CartDiscountServiceImpl(spyOptions);
// test
final Optional<CartDiscount> createdCartDiscount = spyCartDiscountService.createCartDiscount(newCartDiscountDraft).toCompletableFuture().join();
final Optional<CartDiscount> queriedOptional = CTP_TARGET_CLIENT.execute(CartDiscountQuery.of().withPredicates(cartDiscountQueryModel -> cartDiscountQueryModel.key().is(CART_DISCOUNT_KEY_2))).toCompletableFuture().join().head();
assertThat(queriedOptional).hasValueSatisfying(queried -> assertThat(createdCartDiscount).hasValueSatisfying(created -> {
assertThat(created.getKey()).isEqualTo(queried.getKey());
assertThat(created.getName()).isEqualTo(queried.getName());
assertThat(created.getCartPredicate()).isEqualTo(queried.getCartPredicate());
assertThat(created.getValue()).isEqualTo(queried.getValue());
assertThat(created.getTarget()).isEqualTo(queried.getTarget());
assertThat(created.getSortOrder()).isEqualTo(queried.getSortOrder());
}));
}
use of com.commercetools.sync.integration.commons.utils.CartDiscountITUtils.CART_DISCOUNT_KEY_2 in project commercetools-sync-java by commercetools.
the class CartDiscountServiceImplIT method createCartDiscount_WithDuplicateSortOrder_ShouldHaveEmptyOptionalAsAResult.
@Test
void createCartDiscount_WithDuplicateSortOrder_ShouldHaveEmptyOptionalAsAResult() {
// preparation
final CartDiscountDraft newCartDiscountDraft = CartDiscountDraftBuilder.of(CART_DISCOUNT_NAME_2, CART_DISCOUNT_CART_PREDICATE_2, CART_DISCOUNT_VALUE_2, CART_DISCOUNT_TARGET_2, SORT_ORDER_1, false).key(CART_DISCOUNT_KEY_2).active(false).build();
final CartDiscountSyncOptions options = CartDiscountSyncOptionsBuilder.of(CTP_TARGET_CLIENT).errorCallback((exception, oldResource, newResource, actions) -> {
errorCallBackMessages.add(exception.getMessage());
errorCallBackExceptions.add(exception);
}).build();
cartDiscountService = new CartDiscountServiceImpl(options);
// test
final Optional<CartDiscount> result = cartDiscountService.createCartDiscount(newCartDiscountDraft).toCompletableFuture().join();
// assertion
assertThat(result).isEmpty();
assertThat(errorCallBackMessages).hasSize(1).singleElement(as(STRING)).contains(format("A duplicate value '\"%s\"' exists for field 'sortOrder'.", SORT_ORDER_1));
ensureErrorCallbackIsDuplicateFieldError();
}
use of com.commercetools.sync.integration.commons.utils.CartDiscountITUtils.CART_DISCOUNT_KEY_2 in project commercetools-sync-java by commercetools.
the class CartDiscountSyncIT method sync_WithConcurrentModificationExceptionAndFailedFetch_ShouldFailToReFetchAndUpdate.
@Test
void sync_WithConcurrentModificationExceptionAndFailedFetch_ShouldFailToReFetchAndUpdate() {
// preparation
final SphereClient spyClient = buildClientWithConcurrentModificationUpdateAndFailedFetchOnRetry();
final CartDiscountDraft draft2 = CartDiscountDraftBuilder.of(CART_DISCOUNT_DRAFT_2).custom(CustomFieldsDraft.ofTypeKeyAndJson(OLD_CART_DISCOUNT_TYPE_KEY, createCustomFieldsJsonMap())).build();
CTP_TARGET_CLIENT.execute(CartDiscountCreateCommand.of(draft2)).toCompletableFuture().join();
final CartDiscountDraft updatedDraft = CartDiscountDraftBuilder.of(CART_DISCOUNT_DRAFT_2).description(CART_DISCOUNT_DESC_1).build();
final List<String> errorMessages = new ArrayList<>();
final List<Throwable> exceptions = new ArrayList<>();
final CartDiscountSyncOptions cartDiscountSyncOptions = CartDiscountSyncOptionsBuilder.of(spyClient).errorCallback((exception, oldResource, newResource, actions) -> {
errorMessages.add(exception.getMessage());
exceptions.add(exception);
}).build();
final CartDiscountSync cartDiscountSync = new CartDiscountSync(cartDiscountSyncOptions);
// test
final CartDiscountSyncStatistics statistics = cartDiscountSync.sync(singletonList(updatedDraft)).toCompletableFuture().join();
// assertion
assertThat(statistics).hasValues(1, 0, 0, 1);
assertThat(errorMessages).hasSize(1);
assertThat(exceptions).hasSize(1);
assertThat(exceptions.get(0).getCause()).hasCauseExactlyInstanceOf(BadGatewayException.class);
assertThat(errorMessages.get(0)).contains(format("Failed to update cart discount with key: '%s'. Reason: Failed to fetch from CTP while retrying " + "after concurrency modification.", CART_DISCOUNT_KEY_2));
}
use of com.commercetools.sync.integration.commons.utils.CartDiscountITUtils.CART_DISCOUNT_KEY_2 in project commercetools-sync-java by commercetools.
the class CartDiscountSyncIT method sync_WithConcurrentModificationExceptionAndUnexpectedDelete_ShouldFailToReFetchAndUpdate.
@Test
void sync_WithConcurrentModificationExceptionAndUnexpectedDelete_ShouldFailToReFetchAndUpdate() {
// preparation
final SphereClient spyClient = buildClientWithConcurrentModificationUpdateAndNotFoundFetchOnRetry();
final CartDiscountDraft draft2 = CartDiscountDraftBuilder.of(CART_DISCOUNT_DRAFT_2).custom(CustomFieldsDraft.ofTypeKeyAndJson(OLD_CART_DISCOUNT_TYPE_KEY, createCustomFieldsJsonMap())).build();
CTP_TARGET_CLIENT.execute(CartDiscountCreateCommand.of(draft2)).toCompletableFuture().join();
final CartDiscountDraft updatedDraft = CartDiscountDraftBuilder.of(CART_DISCOUNT_DRAFT_2).description(CART_DISCOUNT_DESC_1).build();
final List<String> errorMessages = new ArrayList<>();
final List<Throwable> exceptions = new ArrayList<>();
final CartDiscountSyncOptions cartDiscountSyncOptions = CartDiscountSyncOptionsBuilder.of(spyClient).errorCallback((exception, oldResource, newResource, actions) -> {
errorMessages.add(exception.getMessage());
exceptions.add(exception);
}).build();
final CartDiscountSync cartDiscountSync = new CartDiscountSync(cartDiscountSyncOptions);
// test
final CartDiscountSyncStatistics statistics = cartDiscountSync.sync(singletonList(updatedDraft)).toCompletableFuture().join();
// Assertion
assertThat(statistics).hasValues(1, 0, 0, 1);
assertThat(errorMessages).hasSize(1);
assertThat(exceptions).hasSize(1);
assertThat(errorMessages.get(0)).contains(format("Failed to update cart discount with key: '%s'. Reason: Not found when attempting to fetch while " + "retrying after concurrency modification.", CART_DISCOUNT_KEY_2));
}
Aggregations