use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventorySyncIT method sync_WithBatchProcessing_ShouldCreateAllGivenInventories.
@Disabled
@Test
void sync_WithBatchProcessing_ShouldCreateAllGivenInventories() {
// Ensure inventory entries amount in target project before sync.
final List<InventoryEntry> oldEntriesBeforeSync = CTP_TARGET_CLIENT.execute(InventoryEntryQuery.of()).toCompletableFuture().join().getResults();
assertThat(oldEntriesBeforeSync).hasSize(2);
// Create 10 drafts of new inventories.
final List<InventoryEntryDraft> newInventories = LongStream.range(0, 10).mapToObj(l -> InventoryEntryDraftBuilder.of(String.valueOf(l), l).build()).collect(toList());
// Set batch size of number less that new inventories size.
final InventorySyncOptions inventorySyncOptions = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).batchSize(3).build();
final InventorySync inventorySync = new InventorySync(inventorySyncOptions);
// Perform sync and ensure its results.
final InventorySyncStatistics inventorySyncStatistics = inventorySync.sync(newInventories).toCompletableFuture().join();
assertThat(inventorySyncStatistics).hasValues(10, 10, 0, 0);
// Ensure inventory entries amount in target project after sync.
final List<InventoryEntry> oldEntriesAfterSync = CTP_TARGET_CLIENT.execute(InventoryEntryQuery.of()).toCompletableFuture().join().getResults();
assertThat(oldEntriesAfterSync).hasSize(12);
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventorySyncIT method sync_WithUpdatedInventory_ShouldUpdateInventory.
@Test
void sync_WithUpdatedInventory_ShouldUpdateInventory() {
// Ensure that old entry has correct values before sync.
final Optional<InventoryEntry> oldInventoryBeforeSync = getInventoryEntryBySkuAndSupplyChannel(CTP_TARGET_CLIENT, SKU_1, null);
assertThat(oldInventoryBeforeSync).isNotEmpty();
assertValues(oldInventoryBeforeSync.get(), QUANTITY_ON_STOCK_1, EXPECTED_DELIVERY_1, RESTOCKABLE_IN_DAYS_1);
// Prepare sync data.
final InventoryEntryDraft newInventoryDraft = InventoryEntryDraftBuilder.of(SKU_1, 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, 0, 1, 0);
// Ensure that old entry has correct values after sync.
final Optional<InventoryEntry> oldInventoryAfterSync = getInventoryEntryBySkuAndSupplyChannel(CTP_TARGET_CLIENT, SKU_1, null);
assertThat(oldInventoryAfterSync).isNotEmpty();
assertValues(oldInventoryAfterSync.get(), QUANTITY_ON_STOCK_2, EXPECTED_DELIVERY_2, RESTOCKABLE_IN_DAYS_2);
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventoryUpdateActionUtilsIT method buildCustomUpdateActions_ShouldBuildActionThatSetCustomField.
@Test
void buildCustomUpdateActions_ShouldBuildActionThatSetCustomField() {
// Fetch old inventory and ensure it has custom fields.
final Optional<InventoryEntry> oldInventoryOptional = getInventoryEntryBySkuAndSupplyChannel(CTP_TARGET_CLIENT, SKU_1, null);
assertThat(oldInventoryOptional).isNotEmpty();
final InventoryEntry oldInventoryBeforeSync = oldInventoryOptional.get();
assertThat(oldInventoryBeforeSync.getCustom()).isNotNull();
assertThat(oldInventoryBeforeSync.getCustom().getType().getObj()).isNotNull();
assertThat(oldInventoryBeforeSync.getCustom().getType().getObj().getKey()).isEqualTo(CUSTOM_TYPE);
// Prepare draft with updated data.
final CustomFieldsDraft customFieldsDraft = CustomFieldsDraftBuilder.ofTypeId(oldInventoryBeforeSync.getCustom().getType().getId()).addObject(CUSTOM_FIELD_NAME, CUSTOM_FIELD_VALUE).build();
final InventoryEntryDraft newInventory = InventoryEntryDraft.of(SKU_1, QUANTITY_ON_STOCK_2, EXPECTED_DELIVERY_2, RESTOCKABLE_IN_DAYS_2, null).withCustom(customFieldsDraft);
// Build update actions.
final InventorySyncOptions options = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).build();
final List<UpdateAction<InventoryEntry>> updateActions = buildPrimaryResourceCustomUpdateActions(oldInventoryBeforeSync, newInventory, new InventoryCustomActionBuilder(), options);
assertThat(updateActions).isNotEmpty();
// Execute update command and ensure returned entry is properly updated.
final InventoryEntry oldEntryAfterSync = CTP_TARGET_CLIENT.execute(InventoryEntryUpdateCommand.of(oldInventoryBeforeSync, updateActions)).toCompletableFuture().join();
assertThat(oldEntryAfterSync.getCustom()).isNotNull();
assertThat(oldEntryAfterSync.getCustom().getFieldAsString(CUSTOM_FIELD_NAME)).isEqualTo(CUSTOM_FIELD_VALUE);
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class ChannelServiceImplIT method setup.
/**
* Deletes inventories and supply channels from source and target CTP projects. Populates target
* CTP project with test data.
*/
@BeforeEach
void setup() {
deleteInventoryEntriesFromTargetAndSource();
deleteTypesFromTargetAndSource();
deleteChannelsFromTargetAndSource();
populateTargetProject();
final InventorySyncOptions inventorySyncOptions = InventorySyncOptionsBuilder.of(CTP_TARGET_CLIENT).build();
channelService = new ChannelServiceImpl(inventorySyncOptions, singleton(ChannelRole.INVENTORY_SUPPLY));
}
use of com.commercetools.sync.inventories.InventorySyncOptions in project commercetools-sync-java by commercetools.
the class InventoryReferenceResolverTest method resolveSupplyChannelReference_WithNonExistingChannelAndEnsureChannel_ShouldResolveSupplyChannelReference.
@Test
void resolveSupplyChannelReference_WithNonExistingChannelAndEnsureChannel_ShouldResolveSupplyChannelReference() {
final InventorySyncOptions optionsWithEnsureChannels = InventorySyncOptionsBuilder.of(mock(SphereClient.class)).ensureChannels(true).build();
when(channelService.fetchCachedChannelId(anyString())).thenReturn(CompletableFuture.completedFuture(Optional.empty()));
final InventoryEntryDraft draft = InventoryEntryDraftBuilder.of(SKU, QUANTITY, DATE_1, RESTOCKABLE_IN_DAYS, ResourceIdentifier.ofKey(CHANNEL_KEY)).custom(CustomFieldsDraft.ofTypeKeyAndJson(CUSTOM_TYPE_KEY, new HashMap<>())).build();
final InventoryReferenceResolver referenceResolver = new InventoryReferenceResolver(optionsWithEnsureChannels, typeService, channelService);
referenceResolver.resolveSupplyChannelReference(InventoryEntryDraftBuilder.of(draft)).thenApply(InventoryEntryDraftBuilder::build).thenAccept(resolvedDraft -> {
assertThat(resolvedDraft.getSupplyChannel()).isNotNull();
assertThat(resolvedDraft.getSupplyChannel().getId()).isEqualTo(CHANNEL_ID);
}).toCompletableFuture().join();
}
Aggregations