use of com.commercetools.sync.states.helpers.StateSyncStatistics in project commercetools-sync-java by commercetools.
the class StateSyncTest method sync_WithErrorFetchingExistingKeys_ShouldExecuteCallbackOnErrorAndIncreaseFailedCounter.
@Test
void sync_WithErrorFetchingExistingKeys_ShouldExecuteCallbackOnErrorAndIncreaseFailedCounter() {
// preparation
final StateDraft stateDraft = StateDraftBuilder.of("state-1", StateType.LINE_ITEM_STATE).build();
final List<String> errorMessages = new ArrayList<>();
final List<Throwable> exceptions = new ArrayList<>();
final SphereClient mockClient = mock(SphereClient.class);
when(mockClient.execute(any(StateQuery.class))).thenReturn(supplyAsync(() -> {
throw new SphereException();
}));
final StateSyncOptions syncOptions = StateSyncOptionsBuilder.of(mockClient).errorCallback((exception, oldResource, newResource, updateActions) -> {
errorMessages.add(exception.getMessage());
exceptions.add(exception.getCause());
}).build();
final StateService stateService = spy(new StateServiceImpl(syncOptions));
final Map<String, String> keyToIds = new HashMap<>();
keyToIds.put(stateDraft.getKey(), UUID.randomUUID().toString());
when(stateService.cacheKeysToIds(anySet())).thenReturn(completedFuture(keyToIds));
final StateSync stateSync = new StateSync(syncOptions, stateService);
// test
final StateSyncStatistics stateSyncStatistics = stateSync.sync(singletonList(stateDraft)).toCompletableFuture().join();
// assertions
assertThat(errorMessages).hasSize(1).singleElement(as(STRING)).contains("Failed to fetch existing states");
assertThat(exceptions).hasSize(1).singleElement(as(THROWABLE)).isExactlyInstanceOf(CompletionException.class).hasCauseExactlyInstanceOf(SphereException.class);
assertThat(stateSyncStatistics).hasValues(1, 0, 0, 1);
}
use of com.commercetools.sync.states.helpers.StateSyncStatistics in project commercetools-sync-java by commercetools.
the class StateSyncIT method sync_WithExceptionOnResolvingTransition_ShouldUpdateTransitions.
@Test
void sync_WithExceptionOnResolvingTransition_ShouldUpdateTransitions() {
final StateDraft stateCDraft = createStateDraft(keyC);
final State stateC = createStateInSource(stateCDraft);
final StateDraft stateBDraft = createStateDraft(keyB, stateC);
final State stateB = createStateInSource(stateBDraft);
final SphereClient spyClient = spy(CTP_TARGET_CLIENT);
when(spyClient.execute(any())).thenCallRealMethod().thenReturn(exceptionallyCompletedFuture(new BadGatewayException()));
final StateSyncOptions stateSyncOptions = StateSyncOptionsBuilder.of(spyClient).batchSize(3).errorCallback((exception, oldResource, newResource, updateActions) -> {
errorCallBackMessages.add(exception.getMessage());
errorCallBackExceptions.add(exception.getCause());
}).warningCallback((exception, newResource, oldResource) -> warningCallBackMessages.add(exception.getMessage())).build();
final StateSync stateSync = new StateSync(stateSyncOptions);
final List<StateDraft> stateDrafts = StateTransformUtils.toStateDrafts(CTP_SOURCE_CLIENT, referenceIdToKeyCache, Arrays.asList(stateB, stateC)).join();
// test
final StateSyncStatistics stateSyncStatistics = stateSync.sync(stateDrafts).toCompletableFuture().join();
assertThat(stateSyncStatistics).hasValues(2, 0, 0, 2, 0);
Assertions.assertThat(errorCallBackExceptions).isNotEmpty();
Assertions.assertThat(errorCallBackMessages).isNotEmpty();
Assertions.assertThat(errorCallBackMessages.get(0)).contains("Failed to fetch existing states with keys");
Assertions.assertThat(warningCallBackMessages).isEmpty();
}
use of com.commercetools.sync.states.helpers.StateSyncStatistics in project commercetools-sync-java by commercetools.
the class StateSyncIT method sync_withNewStateWithNewRole_shouldAddRole.
@Test
void sync_withNewStateWithNewRole_shouldAddRole() {
final StateDraft stateDraft = StateDraftBuilder.of(keyA, StateType.REVIEW_STATE).roles(asSet(StateRole.REVIEW_INCLUDED_IN_STATISTICS)).build();
final StateDraft stateDraftTarget = StateDraftBuilder.of(keyA, StateType.REVIEW_STATE).roles(Collections.emptySet()).build();
createStateInTarget(stateDraftTarget);
final StateSyncOptions stateSyncOptions = StateSyncOptionsBuilder.of(CTP_TARGET_CLIENT).build();
final StateSync stateSync = new StateSync(stateSyncOptions);
// test
final StateSyncStatistics stateSyncStatistics = stateSync.sync(singletonList(stateDraft)).toCompletableFuture().join();
assertThat(stateSyncStatistics).hasValues(1, 0, 1, 0, 0);
CtpQueryUtils.queryAll(CTP_TARGET_CLIENT, StateQueryBuilder.of().plusPredicates(q -> q.key().is(keyA)).build(), Function.identity()).thenApply(fetchedCategories -> fetchedCategories.stream().flatMap(List::stream).collect(Collectors.toList())).thenAccept(resultStates -> {
Assertions.assertThat(resultStates.size()).isEqualTo(1);
Assertions.assertThat(resultStates.get(0).getRoles().size()).isEqualTo(1);
}).toCompletableFuture().join();
}
use of com.commercetools.sync.states.helpers.StateSyncStatistics in project commercetools-sync-java by commercetools.
the class StateSyncTest method sync_WithInvalidDrafts_ShouldCompleteWithoutAnyProcessing.
@Test
void sync_WithInvalidDrafts_ShouldCompleteWithoutAnyProcessing() {
// preparation
final SphereClient ctpClient = mock(SphereClient.class);
final List<String> errors = new ArrayList<>();
final StateSyncOptions stateSyncOptions = StateSyncOptionsBuilder.of(ctpClient).errorCallback((exception, oldResource, newResource, updateActions) -> {
errors.add(exception.getMessage());
}).build();
final StateService stateService = mock(StateService.class);
final StateSync stateSync = new StateSync(stateSyncOptions, stateService);
final StateDraft stateDraftWithoutKey = StateDraftBuilder.of(null, StateType.LINE_ITEM_STATE).name(LocalizedString.ofEnglish("state-name")).build();
// test
final StateSyncStatistics statistics = stateSync.sync(asList(stateDraftWithoutKey, null)).toCompletableFuture().join();
// assertion
verifyNoMoreInteractions(ctpClient);
verifyNoMoreInteractions(stateService);
assertThat(errors).hasSize(2);
assertThat(errors).containsExactly("StateDraft with name: LocalizedString(en -> state-name) doesn't have a key. " + "Please make sure all state drafts have keys.", "StateDraft is null.");
assertThat(statistics).hasValues(2, 0, 0, 2, 0);
}
use of com.commercetools.sync.states.helpers.StateSyncStatistics in project commercetools-sync-java by commercetools.
the class StateSyncIT method sync_WithUpdatedState_ShouldUpdateState.
@Test
void sync_WithUpdatedState_ShouldUpdateState() {
// preparation
String key = this.key;
final StateDraft stateDraft = StateDraftBuilder.of(key, StateType.REVIEW_STATE).name(ofEnglish("state-name-updated")).description(ofEnglish("state-desc-updated")).roles(Collections.singleton(StateRole.REVIEW_INCLUDED_IN_STATISTICS)).initial(true).build();
final StateSyncOptions stateSyncOptions = StateSyncOptionsBuilder.of(CTP_TARGET_CLIENT).build();
final StateSync stateSync = new StateSync(stateSyncOptions);
// test
final StateSyncStatistics stateSyncStatistics = stateSync.sync(singletonList(stateDraft)).toCompletableFuture().join();
// assertion
assertThat(stateSyncStatistics).hasValues(1, 0, 1, 0, 0);
final Optional<State> oldStateAfter = getStateByKey(CTP_TARGET_CLIENT, key);
Assertions.assertThat(oldStateAfter).hasValueSatisfying(state -> {
Assertions.assertThat(state.getType()).isEqualTo(StateType.REVIEW_STATE);
Assertions.assertThat(state.getName()).isEqualTo(ofEnglish("state-name-updated"));
Assertions.assertThat(state.getDescription()).isEqualTo(ofEnglish("state-desc-updated"));
Assertions.assertThat(state.getRoles()).isEqualTo(Collections.singleton(StateRole.REVIEW_INCLUDED_IN_STATISTICS));
Assertions.assertThat(state.isInitial()).isEqualTo(true);
});
deleteStates(CTP_TARGET_CLIENT, Optional.empty());
}
Aggregations