/*
* 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.adf.engine.shared.test;
import java.util.Date;
import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.I18nHelper;
import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.layout.LayoutGenerator;
import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Address;
import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Height;
import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Person;
import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Weapon;
import org.kie.workbench.common.forms.adf.engine.shared.formGeneration.model.Weight;
import org.kie.workbench.common.forms.adf.service.definitions.FormDefinitionSettings;
import org.kie.workbench.common.forms.adf.service.definitions.elements.FieldElement;
import org.kie.workbench.common.forms.fields.test.TestFieldManager;
import org.kie.workbench.common.forms.model.FieldDefinition;
import org.kie.workbench.common.forms.model.FieldType;
import org.kie.workbench.common.forms.model.FormDefinition;
import org.kie.workbench.common.forms.model.FormLayoutComponent;
import org.kie.workbench.common.forms.service.FieldManager;
import org.uberfire.ext.layout.editor.api.editor.LayoutColumn;
import org.uberfire.ext.layout.editor.api.editor.LayoutComponent;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
public class AbstractFormGenerationTest {
protected I18nHelper i18nHelper;
protected FieldManager fieldManager = new TestFieldManager();
protected TestFormGenerator generator;
protected TestFormGenerationResourcesProvider resourcesProvider;
protected Person model = new Person();
protected void init() {
i18nHelper = spy(I18nHelper.class);
resourcesProvider = new TestFormGenerationResourcesProvider();
generator = new TestFormGenerator(new LayoutGenerator(),
i18nHelper);
generator.registerProcessor(new TestFieldElementProcessor(fieldManager,
new TestPropertyValueExtractor()));
generator.registerResources(resourcesProvider);
model.setName("John");
model.setLastName("Snow");
model.setMarried(Boolean.FALSE);
model.setBirthDay(new Date());
model.setWeight(new Weight(75));
model.setHeight(new Height(1.80));
model.setAddress(new Address("Main Street",
1,
"Winterfell"));
model.getWeapons().add(new Weapon("Sword",
10));
model.getWeapons().add(new Weapon("Axe",
15));
}
protected void testGeneratedForm(FormDefinition form,
String modelName) {
assertNotNull(form);
FormDefinitionSettings settings = resourcesProvider.getDefinitionSettings().get(modelName);
assertEquals(settings.getModelType(),
form.getId());
assertEquals(settings.getModelType(),
form.getName());
assertEquals(settings.getFormElements().size(),
form.getFields().size());
settings.getFormElements().forEach(element -> {
FieldElement fieldElement = (FieldElement) element;
FieldDefinition field = form.getFieldByBinding(fieldElement.getBinding());
assertNotNull(field);
assertEquals(fieldElement.getName(),
field.getName());
if (!fieldElement.getPreferredType().equals(FieldType.class)) {
assertEquals(fieldElement.getPreferredType(),
field.getFieldType().getClass());
}
assertEquals(fieldElement.getTypeInfo().getType(),
field.getStandaloneClassName());
assertEquals(fieldElement.isReadOnly(),
field.getReadOnly());
assertEquals(fieldElement.isRequired(),
field.getRequired());
assertEquals(fieldElement.getBinding(),
field.getBinding());
verify(i18nHelper,
atLeast(1)).getTranslation(field.getName() + ".label");
});
assertNotNull(form.getLayoutTemplate());
assertEquals(settings.getFormElements().size(),
form.getLayoutTemplate().getRows().size());
form.getLayoutTemplate().getRows().forEach(row -> {
assertNotNull(row);
assertEquals(1,
row.getLayoutColumns().size());
LayoutColumn column = row.getLayoutColumns().get(0);
assertNotNull(column);
assertEquals("12",
column.getSpan());
assertEquals(1,
column.getLayoutComponents().size());
LayoutComponent layoutComponent = column.getLayoutComponents().get(0);
String formId = layoutComponent.getProperties().get(FormLayoutComponent.FORM_ID);
assertNotNull(formId);
assertEquals(form.getId(),
formId);
String fieldId = layoutComponent.getProperties().get(FormLayoutComponent.FIELD_ID);
assertNotNull(fieldId);
FieldDefinition field = form.getFieldById(fieldId);
assertNotNull(field);
});
}
}