use of com.commercetools.sync.categories.helpers.CategorySyncStatistics in project commercetools-sync-java by commercetools.
the class CategorySyncTest method sync_WithFailOnCachingKeysToIds_ShouldTriggerErrorCallbackAndReturnProperStats.
@Test
void sync_WithFailOnCachingKeysToIds_ShouldTriggerErrorCallbackAndReturnProperStats() {
// preparation
final SphereClient mockClient = mock(SphereClient.class);
when(mockClient.execute(any(ResourceKeyIdGraphQlRequest.class))).thenReturn(supplyAsync(() -> {
throw new SphereException();
}));
final CategorySyncOptions syncOptions = CategorySyncOptionsBuilder.of(mockClient).errorCallback((exception, oldResource, newResource, updateActions) -> {
errorCallBackMessages.add(exception.getMessage());
errorCallBackExceptions.add(exception.getCause());
}).build();
final CategoryService categoryServiceSpy = spy(new CategoryServiceImpl(syncOptions));
final CategorySync mockCategorySync = new CategorySync(syncOptions, getMockTypeService(), categoryServiceSpy, mockUnresolvedReferencesService);
CategoryDraft categoryDraft = getMockCategoryDraft(Locale.ENGLISH, "name", "newKey", "parentKey", "customTypeId", new HashMap<>());
// test
final CategorySyncStatistics syncStatistics = mockCategorySync.sync(singletonList(categoryDraft)).toCompletableFuture().join();
// assertions
assertThat(syncStatistics).hasValues(1, 0, 0, 1);
assertThat(errorCallBackMessages).hasSize(1).singleElement(as(STRING)).contains("Failed to build a cache of keys to ids.");
assertThat(errorCallBackExceptions).hasSize(1).singleElement().matches(throwable -> throwable instanceof CompletionException && throwable.getCause() instanceof SphereException);
}
use of com.commercetools.sync.categories.helpers.CategorySyncStatistics in project commercetools-sync-java by commercetools.
the class CategorySyncTest method sync_WithExistingCategoryButWithEmptyCustomTypeReference_ShouldFailSync.
@Test
void sync_WithExistingCategoryButWithEmptyCustomTypeReference_ShouldFailSync() {
final Category mockCategory = getMockCategory(UUID.randomUUID().toString(), "key");
final Category mockParentCategory = getMockCategory(UUID.randomUUID().toString(), "parentKey");
Set<Category> existingCategories = new HashSet<>();
existingCategories.add(mockCategory);
existingCategories.add(mockParentCategory);
final CategoryService mockCategoryService = mockCategoryService(existingCategories, null, mockCategory);
when(mockCategoryService.fetchCachedCategoryId(Mockito.eq("parentKey"))).thenReturn(CompletableFuture.completedFuture(Optional.of("parentId")));
final CategorySync categorySync = new CategorySync(categorySyncOptions, getMockTypeService(), mockCategoryService, mockUnresolvedReferencesService);
final List<CategoryDraft> categoryDrafts = singletonList(getMockCategoryDraft(Locale.ENGLISH, "name", "key", "parentKey", "", new HashMap<>()));
final CategorySyncStatistics syncStatistics = categorySync.sync(categoryDrafts).toCompletableFuture().join();
assertThat(syncStatistics).hasValues(1, 0, 0, 1);
assertThat(errorCallBackMessages).hasSize(1);
assertThat(errorCallBackMessages.get(0)).isEqualTo(format("Failed to process the CategoryDraft with" + " key: 'key'. Reason: %s: Failed to resolve custom type reference on CategoryDraft " + "with key:'key'. Reason: %s", ReferenceResolutionException.class.getCanonicalName(), BLANK_KEY_VALUE_ON_RESOURCE_IDENTIFIER));
assertThat(errorCallBackExceptions).hasSize(1);
assertThat(errorCallBackExceptions.get(0)).isExactlyInstanceOf(CompletionException.class);
assertThat(errorCallBackExceptions.get(0).getCause()).isExactlyInstanceOf(ReferenceResolutionException.class);
}
use of com.commercetools.sync.categories.helpers.CategorySyncStatistics in project commercetools-sync-java by commercetools.
the class CategorySyncIT method syncDrafts_WithValidAndInvalidCustomTypeKeys_ShouldSyncCorrectly.
@Test
void syncDrafts_WithValidAndInvalidCustomTypeKeys_ShouldSyncCorrectly() {
final List<CategoryDraft> newCategoryDrafts = new ArrayList<>();
final String newCustomTypeKey = "newKey";
createCategoriesCustomType(newCustomTypeKey, Locale.ENGLISH, "newCustomTypeName", CTP_TARGET_CLIENT);
final CategoryDraft categoryDraft1 = CategoryDraftBuilder.of(LocalizedString.of(Locale.ENGLISH, "Modern Furniture"), LocalizedString.of(Locale.ENGLISH, "modern-furniture")).key(oldCategoryKey).custom(CustomFieldsDraft.ofTypeKeyAndJson("nonExistingKey", createCustomFieldsJsonMap())).build();
final CategoryDraft categoryDraft2 = CategoryDraftBuilder.of(LocalizedString.of(Locale.ENGLISH, "Modern Furniture-2"), LocalizedString.of(Locale.ENGLISH, "modern-furniture-2")).key("newCategoryKey").custom(CustomFieldsDraft.ofTypeKeyAndJson(newCustomTypeKey, createCustomFieldsJsonMap())).build();
newCategoryDrafts.add(categoryDraft1);
newCategoryDrafts.add(categoryDraft2);
final CategorySyncStatistics syncStatistics = categorySync.sync(newCategoryDrafts).toCompletableFuture().join();
assertThat(syncStatistics).hasValues(2, 1, 0, 1, 0);
final String expectedMessage = format(TYPE_DOES_NOT_EXIST, "nonExistingKey");
assertThat(errorCallBackMessages.get(0)).contains(expectedMessage);
}
use of com.commercetools.sync.categories.helpers.CategorySyncStatistics in project commercetools-sync-java by commercetools.
the class CategorySyncIT method syncDrafts_WithCategoryWithNoChanges_ShouldNotUpdateCategory.
@Test
void syncDrafts_WithCategoryWithNoChanges_ShouldNotUpdateCategory() {
// Category draft coming from external source.
final CategoryDraft categoryDraft = CategoryDraftBuilder.of(LocalizedString.of(Locale.ENGLISH, "furniture"), LocalizedString.of(Locale.ENGLISH, "furniture")).key(oldCategoryKey).custom(CustomFieldsDraft.ofTypeKeyAndJson(OLD_CATEGORY_CUSTOM_TYPE_KEY, createCustomFieldsJsonMap())).build();
final CategorySyncStatistics syncStatistics = categorySync.sync(Collections.singletonList(categoryDraft)).toCompletableFuture().join();
assertThat(syncStatistics).hasValues(1, 0, 0, 0, 0);
}
use of com.commercetools.sync.categories.helpers.CategorySyncStatistics in project commercetools-sync-java by commercetools.
the class CategorySyncIT method syncDrafts_WithChangedCategory_ShouldUpdateCategory.
@Test
void syncDrafts_WithChangedCategory_ShouldUpdateCategory() {
// Category draft coming from external source.
final CategoryDraft categoryDraft = CategoryDraftBuilder.of(LocalizedString.of(Locale.ENGLISH, "Modern Furniture"), LocalizedString.of(Locale.ENGLISH, "modern-furniture")).key(oldCategoryKey).custom(CustomFieldsDraft.ofTypeKeyAndJson(OLD_CATEGORY_CUSTOM_TYPE_KEY, createCustomFieldsJsonMap())).build();
final CategorySyncStatistics syncStatistics = categorySync.sync(Collections.singletonList(categoryDraft)).toCompletableFuture().join();
assertThat(syncStatistics).hasValues(1, 0, 1, 0, 0);
}
Aggregations