/*
* Copyright 2017 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.kie.workbench.common.forms.jbpm.server.service.formGeneration.impl.authoring;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.workbench.common.forms.jbpm.server.service.formGeneration.model.Client;
import org.kie.workbench.common.forms.jbpm.server.service.formGeneration.model.Expense;
import org.kie.workbench.common.forms.jbpm.server.service.formGeneration.model.Line;
import org.kie.workbench.common.services.datamodeller.core.DataObject;
import org.kie.workbench.common.services.datamodeller.core.impl.DataObjectImpl;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class NestedFormsBPMNVFSFormDefinitionGeneratorServiceTest extends BPMNVFSFormDefinitionGeneratorServiceTest {
@Override
public void setup() {
super.setup();
when(dataObjectFinderService.getDataObject(anyString(),
any())).then(new Answer<DataObject>() {
@Override
public DataObject answer(InvocationOnMock invocationOnMock) throws Throwable {
String className = invocationOnMock.getArguments()[0].toString();
if (Expense.class.getName().equals(className)) {
return getExpenseDataObject();
}
if (Client.class.getName().equals(className)) {
return getClientDataObject();
}
if (Line.class.getName().equals(className)) {
return getLineDataObject();
}
return null;
}
});
}
@Test
public void testCreateNewProcessFormNestedForms() {
when(ioService.exists(any())).thenReturn(false);
launchNestedFormsTest();
verify(ioService,
times(3)).write(any(),
anyString(),
any());
}
protected DataObject getExpenseDataObject() {
DataObject expense = new DataObjectImpl(Expense.class.getPackage().toString(),
Expense.class.getSimpleName());
expense.addProperty("id",
Long.class.getName(),
false,
null);
expense.addProperty("date",
Date.class.getName(),
false,
null);
expense.addProperty("client",
Client.class.getName(),
false,
null);
expense.addProperty("lines",
Line.class.getName(),
true,
List.class.getName());
return expense;
}
protected DataObject getLineDataObject() {
DataObject expense = new DataObjectImpl(Line.class.getPackage().toString(),
Line.class.getSimpleName());
expense.addProperty("id",
Long.class.getName(),
false,
null);
expense.addProperty("date",
Date.class.getName(),
false,
null);
expense.addProperty("product",
String.class.getName(),
false,
null);
expense.addProperty("price",
Double.class.getName(),
false,
null);
return expense;
}
protected DataObject getClientDataObject() {
DataObject client = new DataObjectImpl(Client.class.getPackage().toString(),
Client.class.getSimpleName());
client.addProperty("id",
Long.class.getName(),
false,
null);
client.addProperty("name",
String.class.getName(),
false,
null);
client.addProperty("lastName",
String.class.getName(),
false,
null);
return client;
}
}