blob: f75b0c5398517c851b6561b9c9652e571e130fe9 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.component.salesforce;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.salesforce.api.dto.CreateSObjectResult;
import org.apache.camel.component.salesforce.dto.generated.Account;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Test support for Salesforce compound data types.
* This test requires a custom field in the <code>Account</code> object
* called <code>"Shipping Location"</code> of type <code>Geolocation</code> in decimal units.
* @see <a href="https://www.salesforce.com/developer/docs/api/index_Left.htm#CSHID=compound_fields.htm|StartTopic=Content%2Fcompound_fields.htm|SkinName=webhelp">Compound data types</a>
*/
public class CompoundTypesIntegrationTest extends AbstractSalesforceTestBase {
private static final Logger LOG = LoggerFactory.getLogger(CompoundTypesIntegrationTest.class);
@Test
public void testTypes() throws Exception {
doTestTypes("");
doTestTypes("Xml");
}
private void doTestTypes(String suffix) {
Account account = new Account();
account.setName("Camel Test Account");
account.setBillingCity("San Francisco");
account.setBillingCountry("USA");
account.setBillingPostalCode("94105");
account.setBillingState("CA");
account.setBillingStreet("1 Market St #300");
account.setBillingLatitude(37.793779);
account.setBillingLongitude(-122.39448);
account.setShippingCity("San Francisco");
account.setShippingCountry("USA");
account.setShippingPostalCode("94105");
account.setShippingState("CA");
account.setShippingStreet("1 Market St #300");
account.setShippingLatitude(37.793779);
account.setShippingLongitude(-122.39448);
account.setShipping_Location__Latitude__s(37.793779);
account.setShipping_Location__Longitude__s(-122.39448);
CreateSObjectResult result = template().requestBody("direct:createSObject" + suffix,
account, CreateSObjectResult.class);
assertNotNull(result);
assertTrue("Create success", result.getSuccess());
LOG.debug("Create: " + result);
try {
// get account with compound fields
account = template().requestBody("direct:getSObject" + suffix, result.getId(), Account.class);
assertNotNull(account);
assertNotNull("Billing Address", account.getBillingAddress());
assertNotNull("Shipping Address", account.getShippingAddress());
assertNotNull("Shipping Location", account.getShippingAddress());
LOG.debug("Retrieved fields billing address: {}, shipping location: {}",
account.getBillingAddress(), account.getShipping_Location__c());
} finally {
// delete the test SObject
assertNull(template().requestBody("direct:deleteSObject" + suffix, result.getId()));
LOG.debug("Delete successful");
}
}
@Override
protected RouteBuilder doCreateRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
// testCreateSObject
from("direct:createSObject")
.to("salesforce:createSObject?sObjectName=Account");
from("direct:createSObjectXml")
.to("salesforce:createSObject?format=XML&sObjectName=Account");
// testGetSObject
from("direct:getSObject")
.to("salesforce:getSObject?sObjectName=Account&sObjectFields=Id,BillingAddress,ShippingAddress,Shipping_Location__c");
from("direct:getSObjectXml")
.to("salesforce:getSObject?format=XML&sObjectName=Account&sObjectFields=Id,BillingAddress,ShippingAddress,Shipping_Location__c");
// testDeleteSObject
from("direct:deleteSObject")
.to("salesforce:deleteSObject?sObjectName=Account");
from("direct:deleteSObjectXml")
.to("salesforce:deleteSObject?format=XML&sObjectName=Account");
}
};
}
}