use of org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch in project camel by apache.
the class DefaultCompositeApiClientTest method shouldUseCompositeApiFromVersion34Onwards.
@Test
public void shouldUseCompositeApiFromVersion34Onwards() throws SalesforceException {
final SObjectBatch batch = new SObjectBatch(V34_0);
DefaultCompositeApiClient.checkCompositeBatchVersion(V34_0, batch.getVersion());
}
use of org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch in project camel by apache.
the class DefaultCompositeApiClientTest method shouldNotAllowNewerPayloadsWhenConfiguredWithOlderVersion.
@Test(expected = SalesforceException.class)
public void shouldNotAllowNewerPayloadsWhenConfiguredWithOlderVersion() throws SalesforceException {
final SObjectBatch batch = new SObjectBatch(V35_0);
DefaultCompositeApiClient.checkCompositeBatchVersion(V34_0, batch.getVersion());
}
use of org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch in project camel by apache.
the class CompositeApiBatchIntegrationTest method shouldSupportSearch.
@Test
public void shouldSupportSearch() {
final SObjectBatch batch = new SObjectBatch(version);
// we cannot rely on search returning the `Composite API Batch` account as the search indexer runs
// asynchronously to object creation, so that account might not be indexed at this time, so we search for
// `United` Account that should be created with developer instance
batch.addSearch("FIND {United} IN Name Fields RETURNING Account (Name)");
final SObjectBatchResponse response = testBatch(batch);
final List<SObjectBatchResult> results = response.getResults();
final SObjectBatchResult batchResult = results.get(0);
final Object firstBatchResult = batchResult.getResult();
final Object searchResult;
if (firstBatchResult instanceof Map) {
// the JSON and XML responses differ, XML has a root node which can be either SearchResults or
// SearchResultWithMetadata
// furthermore version 37.0 search results are no longer array, but dictionary of {
// "searchRecords": [<array>] } and the XML output changed to <SearchResultWithMetadata><searchRecords>, so
// we have:
// @formatter:off
// | version | format | response syntax |
// | 34 | JSON | {attributes={type=Account... |
// | 34 | XML | {SearchResults={attributes={type=Account... |
// | 37 | JSON | {searchRecords=[{attributes={type=Account... |
// | 37 | XML | {SearchResultWithMetadata={searchRecords={attributes={type=Account... |
// @formatter:on
@SuppressWarnings("unchecked") final Map<String, Object> tmp = (Map<String, Object>) firstBatchResult;
@SuppressWarnings("unchecked") final Map<String, Object> nested = (Map<String, Object>) tmp.getOrDefault("SearchResultWithMetadata", tmp);
// JSON and XML structure are different, XML has `SearchResults` node, JSON does not
searchResult = nested.getOrDefault("searchRecords", nested.getOrDefault("SearchResults", nested));
} else {
searchResult = firstBatchResult;
}
final Map<String, Object> result;
if (searchResult instanceof List) {
@SuppressWarnings("unchecked") final Map<String, Object> tmp = (Map<String, Object>) ((List) searchResult).get(0);
result = tmp;
} else {
@SuppressWarnings("unchecked") final Map<String, Object> tmp = (Map<String, Object>) searchResult;
result = tmp;
}
assertNotNull(result.get("Name"));
}
use of org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch in project camel by apache.
the class CompositeApiBatchIntegrationTest method shouldSupportLimits.
@Test
public void shouldSupportLimits() {
final SObjectBatch batch = new SObjectBatch(version);
batch.addLimits();
final SObjectBatchResponse response = testBatch(batch);
final List<SObjectBatchResult> results = response.getResults();
final SObjectBatchResult batchResult = results.get(0);
@SuppressWarnings("unchecked") final Map<String, Object> result = (Map<String, Object>) batchResult.getResult();
// JSON and XML structure are different, XML has `LimitsSnapshot` node, JSON does not
@SuppressWarnings("unchecked") final Map<String, Object> limits = (Map<String, Object>) result.getOrDefault("LimitsSnapshot", result);
@SuppressWarnings("unchecked") final Map<String, String> apiRequests = (Map<String, String>) limits.get("DailyApiRequests");
// for JSON value will be Integer, for XML (no type information) it will be String
assertEquals("15000", String.valueOf(apiRequests.get("Max")));
}
use of org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch in project camel by apache.
the class CompositeApiBatchIntegrationTest method shouldSupportObjectUpdates.
@Test
public void shouldSupportObjectUpdates() {
final SObjectBatch batch = new SObjectBatch(version);
final Account updates = new Account();
updates.setName("NewName");
updates.setAccountNumber("AC12345");
batch.addUpdate("Account", accountId, updates);
testBatch(batch);
}
Aggregations