use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventorySyncIT method sync_WithCustomErrorCallback_ShouldExecuteCallbackOnError.
@Test
void sync_WithCustomErrorCallback_ShouldExecuteCallbackOnError() {
// Fetch new inventories from source project. Convert them to drafts.
final List<InventoryEntry> inventoryEntries = CTP_SOURCE_CLIENT.execute(InventoryEntryQuery.of().withExpansionPaths(InventoryEntryExpansionModel::supplyChannel).plusExpansionPaths(ExpansionPath.of("custom.type"))).toCompletableFuture().join().getResults();
final List<InventoryEntryDraft> newInventories = InventoryTransformUtils.toInventoryEntryDrafts(CTP_SOURCE_CLIENT, REFERENCE_ID_TO_KEY_CACHE, inventoryEntries).join();
// Prepare sync options and perform sync of draft to target project.
final AtomicInteger invocationCounter = new AtomicInteger(0);
QuadConsumer<SyncException, Optional<InventoryEntryDraft>, Optional<InventoryEntry>, List<UpdateAction<InventoryEntry>>> countingErrorCallback = (exception, newResource, oldResource, updateActions) -> invocationCounter.incrementAndGet();
final InventorySyncOptions inventorySyncOptions = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).errorCallback(countingErrorCallback).ensureChannels(false).build();
final InventorySync inventorySync = new InventorySync(inventorySyncOptions);
final InventorySyncStatistics inventorySyncStatistics = inventorySync.sync(newInventories).toCompletableFuture().join();
assertThat(inventorySyncStatistics).hasValues(3, 0, 1, 1);
assertThat(invocationCounter.get()).isEqualTo(1);
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventorySyncIT method sync_ShouldReturnProperStatisticsObject.
@Test
void sync_ShouldReturnProperStatisticsObject() {
// Fetch new inventories from source project. Convert them to drafts.
final List<InventoryEntry> inventoryEntries = CTP_SOURCE_CLIENT.execute(InventoryEntryQuery.of().withExpansionPaths(InventoryEntryExpansionModel::supplyChannel).plusExpansionPaths(ExpansionPath.of("custom.type"))).toCompletableFuture().join().getResults();
final List<InventoryEntryDraft> newInventories = InventoryTransformUtils.toInventoryEntryDrafts(CTP_SOURCE_CLIENT, REFERENCE_ID_TO_KEY_CACHE, inventoryEntries).join();
// Prepare sync options and perform sync of draft to target project.
final InventorySyncOptions inventorySyncOptions = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).ensureChannels(true).build();
final InventorySync inventorySync = new InventorySync(inventorySyncOptions);
final InventorySyncStatistics inventorySyncStatistics = inventorySync.sync(newInventories).toCompletableFuture().join();
assertThat(inventorySyncStatistics).hasValues(3, 1, 1, 0);
assertThat(inventorySyncStatistics.getLatestBatchProcessingTimeInMillis()).isGreaterThan(0L);
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventorySyncIT method sync_WithNewSupplyChannelAndChannelsEnsured_ShouldCreateNewSupplyChannel.
@Test
void sync_WithNewSupplyChannelAndChannelsEnsured_ShouldCreateNewSupplyChannel() {
// Ensure that supply channel doesn't exist before sync.
final Optional<Channel> oldSupplyChannelBeforeSync = getChannelByKey(CTP_TARGET_CLIENT, SUPPLY_CHANNEL_KEY_2);
assertThat(oldSupplyChannelBeforeSync).isEmpty();
// Prepare sync data.
final ResourceIdentifier<Channel> newSupplyChannelReference = ResourceIdentifier.ofKey(SUPPLY_CHANNEL_KEY_2);
final InventoryEntryDraft newInventoryDraft = InventoryEntryDraftBuilder.of(SKU_1, QUANTITY_ON_STOCK_2, EXPECTED_DELIVERY_2, RESTOCKABLE_IN_DAYS_2, newSupplyChannelReference).build();
final InventorySyncOptions inventorySyncOptions = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).ensureChannels(true).build();
final InventorySync inventorySync = new InventorySync(inventorySyncOptions);
// Sync and ensure that proper statistics were returned.
final InventorySyncStatistics inventorySyncStatistics = inventorySync.sync(singletonList(newInventoryDraft)).toCompletableFuture().join();
assertThat(inventorySyncStatistics).hasValues(1, 1, 0, 0);
// Ensure that supply channel exists before sync.
final Optional<Channel> oldSupplyChannelAfterSync = getChannelByKey(CTP_TARGET_CLIENT, SUPPLY_CHANNEL_KEY_2);
assertThat(oldSupplyChannelAfterSync).isNotEmpty();
assertThat(oldSupplyChannelAfterSync.get().getKey()).isEqualTo(SUPPLY_CHANNEL_KEY_2);
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventorySyncIT method sync_FromSourceToTargetWithoutChannelsEnsured_ShouldReturnProperStatistics.
@Test
void sync_FromSourceToTargetWithoutChannelsEnsured_ShouldReturnProperStatistics() {
// Fetch new inventories from source project. Convert them to drafts.
final List<InventoryEntry> inventoryEntries = CTP_SOURCE_CLIENT.execute(InventoryEntryQuery.of().withExpansionPaths(InventoryEntryExpansionModel::supplyChannel).plusExpansionPaths(ExpansionPath.of("custom.type"))).toCompletableFuture().join().getResults();
final List<InventoryEntryDraft> newInventories = InventoryTransformUtils.toInventoryEntryDrafts(CTP_SOURCE_CLIENT, REFERENCE_ID_TO_KEY_CACHE, inventoryEntries).join();
// Prepare sync options and perform sync of draft to target project.
final InventorySyncOptions inventorySyncOptions = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).ensureChannels(false).build();
final InventorySync inventorySync = new InventorySync(inventorySyncOptions);
final InventorySyncStatistics inventorySyncStatistics = inventorySync.sync(newInventories).toCompletableFuture().join();
assertThat(inventorySyncStatistics).hasValues(3, 0, 1, 1);
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventorySyncIT method sync_WithNewInventory_ShouldCreateInventory.
@Test
void sync_WithNewInventory_ShouldCreateInventory() {
// Ensure that old entry has correct values before sync.
final Optional<InventoryEntry> oldInventoryBeforeSync = getInventoryEntryBySkuAndSupplyChannel(CTP_TARGET_CLIENT, SKU_2, null);
assertThat(oldInventoryBeforeSync).isEmpty();
// Prepare sync data.
final InventoryEntryDraft newInventoryDraft = InventoryEntryDraftBuilder.of(SKU_2, QUANTITY_ON_STOCK_2, EXPECTED_DELIVERY_2, RESTOCKABLE_IN_DAYS_2, null).build();
final InventorySyncOptions inventorySyncOptions = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).build();
final InventorySync inventorySync = new InventorySync(inventorySyncOptions);
// Sync and ensure that proper statistics were returned.
final InventorySyncStatistics inventorySyncStatistics = inventorySync.sync(singletonList(newInventoryDraft)).toCompletableFuture().join();
assertThat(inventorySyncStatistics).hasValues(1, 1, 0, 0);
// Ensure that old entry has correct values after sync.
final Optional<InventoryEntry> oldInventoryAfterSync = getInventoryEntryBySkuAndSupplyChannel(CTP_TARGET_CLIENT, SKU_2, null);
assertThat(oldInventoryAfterSync).isNotEmpty();
assertValues(oldInventoryAfterSync.get(), QUANTITY_ON_STOCK_2, EXPECTED_DELIVERY_2, RESTOCKABLE_IN_DAYS_2);
}
Aggregations