/** * 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 java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import com.googlecode.junittoolbox.ParallelParameterized; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalRequest; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalRequest.Action; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult; import org.apache.camel.component.salesforce.api.dto.approval.Approvals; import org.apache.camel.component.salesforce.api.dto.approval.Approvals.Info; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized.Parameters; @RunWith(ParallelParameterized.class) public class ApprovalIntegrationTest extends AbstractApprovalIntegrationTest { private final String format; public ApprovalIntegrationTest(final String format) { super(5); this.format = format; } @Test public void shouldSubmitAndFetchApprovals() { final ApprovalResult approvalResult = template.requestBody( String.format("salesforce:approval?"// + "format=%s"// + "&approvalActionType=Submit"// + "&approvalContextId=%s"// + "&approvalNextApproverIds=%s"// + "&approvalComments=Integration test"// + "&approvalProcessDefinitionNameOrId=Test_Account_Process", format, accountIds.get(0), userId), NOT_USED, ApprovalResult.class); assertNotNull("Approval should have resulted in value", approvalResult); assertEquals("There should be one Account waiting approval", 1, approvalResult.size()); assertEquals("Instance status of the item in approval result should be `Pending`", "Pending", approvalResult.iterator().next().getInstanceStatus()); // as it stands on 18.11.2016. the GET method on /vXX.X/process/approvals/ with Accept other than // `application/json` results in HTTP status 500, so only JSON is supported final Approvals approvals = template.requestBody("salesforce:approvals", NOT_USED, Approvals.class); assertNotNull("Approvals should be fetched", approvals); final List<Info> accountApprovals = approvals.approvalsFor("Account"); assertEquals("There should be one Account waiting approval", 1, accountApprovals.size()); } @Test public void shouldSubmitBulkApprovals() { final List<ApprovalRequest> approvalRequests = accountIds.stream().map(id -> { final ApprovalRequest request = new ApprovalRequest(); request.setContextId(id); request.setComments("Approval for " + id); request.setActionType(Action.Submit); return request; }).collect(Collectors.toList()); final ApprovalResult approvalResult = template.requestBody( String.format("salesforce:approval?"// + "format=%s"// + "&approvalActionType=Submit"// + "&approvalNextApproverIds=%s"// + "&approvalProcessDefinitionNameOrId=Test_Account_Process", format, userId), approvalRequests, ApprovalResult.class); assertEquals("Should have same number of approval results as requests", approvalRequests.size(), approvalResult.size()); } @Parameters(name = "format = {0}") public static Iterable<String> formats() { return Arrays.asList("JSON", "XML"); } }