Search in sources :

Example 6 with SObjectBatch

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());
}
Also used : SObjectBatch(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch) Test(org.junit.Test)

Example 7 with SObjectBatch

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());
}
Also used : SObjectBatch(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch) Test(org.junit.Test)

Example 8 with SObjectBatch

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"));
}
Also used : SObjectBatchResponse(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatchResponse) SObjectBatch(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch) SObjectBatchResult(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatchResult) List(java.util.List) Map(java.util.Map) Test(org.junit.Test)

Example 9 with SObjectBatch

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")));
}
Also used : SObjectBatchResponse(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatchResponse) SObjectBatch(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch) SObjectBatchResult(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatchResult) Map(java.util.Map) Test(org.junit.Test)

Example 10 with SObjectBatch

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);
}
Also used : Account(org.apache.camel.component.salesforce.dto.generated.Account) SObjectBatch(org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch) Test(org.junit.Test)

Aggregations

SObjectBatch (org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch)14 Test (org.junit.Test)14 SObjectBatchResponse (org.apache.camel.component.salesforce.api.dto.composite.SObjectBatchResponse)8 Map (java.util.Map)7 SObjectBatchResult (org.apache.camel.component.salesforce.api.dto.composite.SObjectBatchResult)7 Account (org.apache.camel.component.salesforce.dto.generated.Account)3 List (java.util.List)1