/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed 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.jbpm.kie.services.impl.form;
import java.util.Collections;
import org.jbpm.services.api.DefinitionService;
import org.jbpm.services.api.RuntimeDataService;
import org.jbpm.services.api.model.ProcessDefinition;
import org.jbpm.services.task.impl.model.TaskDataImpl;
import org.jbpm.services.task.impl.model.TaskImpl;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.api.task.TaskService;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.junit.Assert.*;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.anyMap;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.isNull;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class FormProviderServiceImplTest {
@Mock
TaskService taskService;
@Mock
RuntimeDataService dataService;
@Mock
FormProvider formProvider;
@Mock
DefinitionService bpmn2Service;
@InjectMocks
FormProviderServiceImpl formProviderService;
@Before
public void init() {
formProviderService.setProviders(Collections.singleton(formProvider));
}
@Test
public void testGetFormDisplayTaskWithoutProcess() {
long taskId = 1;
final TaskImpl task = new TaskImpl();
task.setId(taskId);
task.setName("TaskName");
task.setTaskData(new TaskDataImpl());
when(taskService.getTaskById(taskId)).thenReturn(task);
final String form = formProviderService.getFormDisplayTask(1);
assertEquals("", form);
verify(dataService, never()).getProcessesByDeploymentIdProcessId(anyString(), anyString());
verify(formProvider).render(eq(task.getName()), eq(task), isNull(ProcessDefinition.class), anyMap());
}
@Test
public void testGetFormDisplayTask() {
long taskId = 1;
final TaskImpl task = new TaskImpl();
task.setId(taskId);
task.setName("TaskName");
final TaskDataImpl taskData = new TaskDataImpl();
final String deploymentId = "org.jbpm";
taskData.setDeploymentId(deploymentId);
final String processId = "org.jbpm.evaluation";
taskData.setProcessId(processId);
task.setTaskData(taskData);
when(taskService.getTaskById(taskId)).thenReturn(task);
final ProcessDefinition processDefinition = mock(ProcessDefinition.class);
when(dataService.getProcessesByDeploymentIdProcessId(deploymentId, processId)).thenReturn(processDefinition);
final String form = formProviderService.getFormDisplayTask(1);
assertEquals("", form);
verify(dataService).getProcessesByDeploymentIdProcessId(deploymentId, processId);
verify(formProvider).render(eq(task.getName()), eq(task), eq(processDefinition), anyMap());
}
}