/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.dynamic.data.mapping.form.evaluator.test; import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian; import com.liferay.dynamic.data.mapping.form.evaluator.DDMFormEvaluationResult; import com.liferay.dynamic.data.mapping.form.evaluator.DDMFormEvaluator; import com.liferay.dynamic.data.mapping.form.evaluator.DDMFormEvaluatorContext; import com.liferay.dynamic.data.mapping.form.evaluator.DDMFormFieldEvaluationResult; import com.liferay.dynamic.data.mapping.io.DDMFormJSONDeserializer; import com.liferay.dynamic.data.mapping.io.DDMFormValuesJSONDeserializer; import com.liferay.dynamic.data.mapping.model.DDMForm; import com.liferay.dynamic.data.mapping.service.test.BaseDDMServiceTestCase; import com.liferay.dynamic.data.mapping.storage.DDMFormValues; import com.liferay.portal.kernel.json.JSONFactoryUtil; import com.liferay.portal.kernel.json.JSONSerializer; import com.liferay.portal.kernel.util.LocaleUtil; import com.liferay.portal.test.rule.LiferayIntegrationTestRule; import com.liferay.registry.Registry; import com.liferay.registry.RegistryUtil; import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.skyscreamer.jsonassert.JSONAssert; /** * @author Pablo Carvalho */ @RunWith(Arquillian.class) public class DDMFormEvaluatorTest extends BaseDDMServiceTestCase { @ClassRule @Rule public static final LiferayIntegrationTestRule liferayIntegrationTestRule = new LiferayIntegrationTestRule(); @Before @Override public void setUp() throws Exception { super.setUp(); setUpDDMFormJSONDeserializer(); setUpDDMFormValuesJSONDeserializer(); } @Test public void testSumValuesForRepeatableField() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-sum-values-repeatable-field.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-sum-values-repeatable-field-test-data.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); JSONSerializer jsonSerializer = JSONFactoryUtil.createJSONSerializer(); String actualResult = jsonSerializer.serializeDeep( ddmFormEvaluationResult); String expectedResult = read( "ddm-form-evaluator-result-sum-values-repeatable-field.json"); JSONAssert.assertEquals(expectedResult, actualResult, false); } @Test public void testValidFields() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-form-valid-fields-test-data.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-form-values-valid-fields-test-data.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); JSONSerializer jsonSerializer = JSONFactoryUtil.createJSONSerializer(); String expectedResult = read( "ddm-form-evaluator-result-valid-fields-data.json"); String actualResult = jsonSerializer.serializeDeep( ddmFormEvaluationResult); JSONAssert.assertEquals(expectedResult, actualResult, false); } @Test public void testVisibleFields1() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-form-visible-fields-test-data-1.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-form-values-visible-fields-test-data-1.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); DDMFormFieldEvaluationResult checkboxDDMFormFieldEvaluationResult = ddmFormEvaluationResult.geDDMFormFieldEvaluationResult( "Confirmation", "hany"); Assert.assertFalse(checkboxDDMFormFieldEvaluationResult.isVisible()); } @Test public void testVisibleFields2() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-form-visible-fields-test-data-1.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-form-values-visible-fields-test-data-2.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); DDMFormFieldEvaluationResult checkboxDDMFormFieldEvaluationResult = ddmFormEvaluationResult.geDDMFormFieldEvaluationResult( "Confirmation", "hany"); Assert.assertTrue(checkboxDDMFormFieldEvaluationResult.isVisible()); } @Test public void testVisibleFields3() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-form-visible-fields-test-data-2.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-form-values-visible-fields-test-data-3.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); DDMFormFieldEvaluationResult phoneDDMFormFieldEvaluationResult = ddmFormEvaluationResult.geDDMFormFieldEvaluationResult( "Phone", "hany"); Assert.assertFalse(phoneDDMFormFieldEvaluationResult.isVisible()); } @Test public void testVisibleFields4() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-form-visible-fields-test-data-2.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-form-values-visible-fields-test-data-4.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); DDMFormFieldEvaluationResult phoneDDMFormFieldEvaluationResult = ddmFormEvaluationResult.geDDMFormFieldEvaluationResult( "Phone", "hany"); Assert.assertTrue(phoneDDMFormFieldEvaluationResult.isVisible()); } @Test public void testVisibleFields5() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-form-visible-fields-test-data-3.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-form-values-visible-fields-test-data-3.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); DDMFormFieldEvaluationResult phoneDDMFormFieldEvaluationResult = ddmFormEvaluationResult.geDDMFormFieldEvaluationResult( "Phone", "hany"); Assert.assertFalse(phoneDDMFormFieldEvaluationResult.isVisible()); } @Test public void testVisibleFields6() throws Exception { String serializedDDMForm = read( "ddm-form-evaluator-form-visible-fields-test-data-3.json"); DDMForm ddmForm = _ddmFormJSONDeserializer.deserialize( serializedDDMForm); String serializedDDMFormValues = read( "ddm-form-evaluator-form-values-visible-fields-test-data-4.json"); DDMFormValues ddmFormValues = _ddmFormValuesJSONDeserializer.deserialize( ddmForm, serializedDDMFormValues); Registry registry = RegistryUtil.getRegistry(); DDMFormEvaluator ddmFormEvaluator = registry.getService( DDMFormEvaluator.class); DDMFormEvaluatorContext ddmFormEvaluatorContext = new DDMFormEvaluatorContext(ddmForm, ddmFormValues, LocaleUtil.US); ddmFormEvaluatorContext.addProperty("groupId", 1L); DDMFormEvaluationResult ddmFormEvaluationResult = ddmFormEvaluator.evaluate(ddmFormEvaluatorContext); DDMFormFieldEvaluationResult phoneDDMFormFieldEvaluationResult = ddmFormEvaluationResult.geDDMFormFieldEvaluationResult( "Phone", "hany"); Assert.assertTrue(phoneDDMFormFieldEvaluationResult.isVisible()); } protected void setUpDDMFormJSONDeserializer() { Registry registry = RegistryUtil.getRegistry(); _ddmFormJSONDeserializer = registry.getService( DDMFormJSONDeserializer.class); } protected void setUpDDMFormValuesJSONDeserializer() { Registry registry = RegistryUtil.getRegistry(); _ddmFormValuesJSONDeserializer = registry.getService( DDMFormValuesJSONDeserializer.class); } private DDMFormJSONDeserializer _ddmFormJSONDeserializer; private DDMFormValuesJSONDeserializer _ddmFormValuesJSONDeserializer; }