use of com.commercetools.sync.services.CartDiscountService in project commercetools-sync-java by commercetools.
the class CartDiscountServiceImplIT method setup.
/**
* Deletes types & cart discounts from the target CTP project, then it populates the project with
* test data.
*/
@BeforeEach
void setup() {
deleteCartDiscountsFromTargetAndSource();
populateTargetProject();
errorCallBackMessages = new ArrayList<>();
errorCallBackExceptions = new ArrayList<>();
final CartDiscountSyncOptions cartDiscountSyncOptions = CartDiscountSyncOptionsBuilder.of(CTP_TARGET_CLIENT).errorCallback((exception, oldResource, newResource, actions) -> {
errorCallBackMessages.add(exception.getMessage());
errorCallBackExceptions.add(exception);
}).build();
cartDiscountService = new CartDiscountServiceImpl(cartDiscountSyncOptions);
}
use of com.commercetools.sync.services.CartDiscountService in project commercetools-sync-java by commercetools.
the class CartDiscountServiceImplIT method fetchMatchingCartDiscountsByKeys_WithBadGateWayExceptionAlways_ShouldFail.
@Test
void fetchMatchingCartDiscountsByKeys_WithBadGateWayExceptionAlways_ShouldFail() {
// Mock sphere client to return BadGatewayException on any request.
final SphereClient spyClient = spy(CTP_TARGET_CLIENT);
when(spyClient.execute(any(CartDiscountQuery.class))).thenReturn(exceptionallyCompletedFuture(new BadGatewayException())).thenCallRealMethod();
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);
final Set<String> cartDiscountKeys = new HashSet<>();
cartDiscountKeys.add(CART_DISCOUNT_KEY_1);
// test and assert
assertThat(errorCallBackExceptions).isEmpty();
assertThat(errorCallBackMessages).isEmpty();
assertThat(spyCartDiscountService.fetchMatchingCartDiscountsByKeys(cartDiscountKeys)).failsWithin(10, TimeUnit.SECONDS).withThrowableOfType(ExecutionException.class).withCauseExactlyInstanceOf(BadGatewayException.class);
}
use of com.commercetools.sync.services.CartDiscountService 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.services.CartDiscountService 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.services.CartDiscountService in project commercetools-sync-java by commercetools.
the class CartDiscountServiceImplIT method createCartDiscount_WithDuplicateCartDiscountKey_ShouldHaveEmptyOptionalAsAResult.
@Test
void createCartDiscount_WithDuplicateCartDiscountKey_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_2, false).key(CART_DISCOUNT_KEY_1).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 'key'.", CART_DISCOUNT_KEY_1));
ensureErrorCallbackIsDuplicateFieldError();
}
Aggregations