Java tutorial
/** * Copyright 2006 Webmedia Group Ltd. * * 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.araneaframework.tests; import java.math.BigInteger; import java.text.SimpleDateFormat; import java.util.Date; import junit.framework.TestCase; import org.apache.log4j.Logger; import org.araneaframework.servlet.core.StandardServletInputData; import org.araneaframework.tests.mock.MockEnviroment; import org.araneaframework.tests.mock.MockUiLibUtil; import org.araneaframework.uilib.form.FormElement; import org.araneaframework.uilib.form.FormWidget; import org.araneaframework.uilib.form.constraint.AfterTodayConstraint; import org.araneaframework.uilib.form.constraint.ConstraintGroupHelper; import org.araneaframework.uilib.form.constraint.NotEmptyConstraint; import org.araneaframework.uilib.form.constraint.NumberInRangeConstraint; import org.araneaframework.uilib.form.constraint.OptionalConstraint; import org.araneaframework.uilib.form.constraint.RangeConstraint; import org.araneaframework.uilib.form.control.ButtonControl; import org.araneaframework.uilib.form.control.CheckboxControl; import org.araneaframework.uilib.form.control.DateTimeControl; import org.araneaframework.uilib.form.control.TextControl; import org.araneaframework.uilib.form.data.BooleanData; import org.araneaframework.uilib.form.data.DateData; import org.araneaframework.uilib.form.data.LongData; import org.springframework.mock.web.MockHttpServletRequest; /** * @author <a href="mailto:ekabanov@webmedia.ee">Jevgeni Kabanov</a> * */ public class FormConstraintTest extends TestCase { private static Logger log = Logger.getLogger(FormConstraintTest.class); boolean eventsWork = false; public FormConstraintTest(String name) { super(name); } private FormWidget makeUsualForm() throws Exception { //Creating form :-) FormWidget testForm = new FormWidget(); testForm._getComponent().init(new MockEnviroment()); //Adding elements to form testForm.addElement("myCheckBox", "my checkbox", new CheckboxControl(), new BooleanData(), true); testForm.addElement("myLongText", "my long text", new TextControl(), new LongData(), false); testForm.addElement("myDateTime", "my date and time", new DateTimeControl(), new DateData(), false); testForm.addElement("myButton", "my button", new ButtonControl(), null, false); return testForm; } /** * Testing reading from request with a primitive constraint set. */ public void testFormPrimitiveConstraint() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "108"); request.addParameter("testForm.myDateTime", (String) null); //Testing primitive constraint testForm.getElement("myDateTime").setConstraint(new NotEmptyConstraint()); StandardServletInputData input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); assertTrue("Test form must not be valid after reading from request", !testForm.convertAndValidate()); } /** * Testing reading from request with a grouped constraint set. */ public void testFormActiveGroupedConstraintInvalidates() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "108"); request.addParameter("testForm.myDateTime", (String) null); // create helper ConstraintGroupHelper groupHelper = new ConstraintGroupHelper(); testForm.getElement("myDateTime") .setConstraint(groupHelper.createGroupedConstraint(new NotEmptyConstraint(), "active")); StandardServletInputData input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); groupHelper.setActiveGroup("active"); assertTrue("Test form must not be valid after reading from request", !testForm.convertAndValidate()); } /** * Testing reading from request with a grouped constraint set. */ public void testFormActiveGroupedConstraintValidates() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "108"); request.addParameter("testForm.myDateTime.date", "11.10.2015"); request.addParameter("testForm.myDateTime.time", "01:01"); // create helper ConstraintGroupHelper groupHelper = new ConstraintGroupHelper(); testForm.getElement("myDateTime") .setConstraint(groupHelper.createGroupedConstraint(new NotEmptyConstraint(), "active")); StandardServletInputData input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); groupHelper.setActiveGroup("active"); assertTrue("Test form must be valid after reading from request", testForm.convertAndValidate()); } /** * Testing reading from request with a grouped constraint set. */ public void testFormInactiveGroupedConstraintValidates() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "108"); request.addParameter("testForm.myDateTime.date", "11.10.2015"); request.addParameter("testForm.myDateTime.time", "01:01"); // create helper ConstraintGroupHelper groupHelper = new ConstraintGroupHelper(); testForm.getElement("myDateTime") .setConstraint(groupHelper.createGroupedConstraint(new NotEmptyConstraint(), "active")); StandardServletInputData input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); assertTrue("Test form must be valid after reading from request", testForm.convertAndValidate()); } /** * Testing reading from request with a primitive constraint set. */ public void testFormOptionalConstraint() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); //invalid request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "12345"); request.addParameter("testForm.myDateTime", (String) null); //Testing primitive constraint testForm.getElement("myLongText").setConstraint( new OptionalConstraint(new NumberInRangeConstraint(BigInteger.valueOf(20000), null))); StandardServletInputData input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must not be valid after reading from request", !testForm.convertAndValidate()); //valid request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "40000"); request.addParameter("testForm.myDateTime", (String) null); input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must be valid after reading from request", testForm.convertAndValidate()); //off request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", (String) null); request.addParameter("testForm.myDateTime", (String) null); input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must be valid after reading from request", testForm.convertAndValidate()); } public void testFormAfterTodayConstraint() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); //invalid request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myDateTime.date", "11.10.1015"); request.addParameter("testForm.myDateTime.time", "01:01"); testForm.getElement("myDateTime").setConstraint(new AfterTodayConstraint(false)); StandardServletInputData input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must not be valid after reading from request", !testForm.convertAndValidate()); request = new MockHttpServletRequest(); //invalid request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myDateTime.date", sdf.format(new Date())); request.addParameter("testForm.myDateTime.time", "00:00"); testForm.getElement("myDateTime").setConstraint(new AfterTodayConstraint(false)); input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must not be valid after reading from request", !testForm.convertAndValidate()); request = new MockHttpServletRequest(); //invalid request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myDateTime.date", "11.10.2015"); request.addParameter("testForm.myDateTime.time", "01:01"); //Testing primitive constraint testForm.getElement("myDateTime").setConstraint(new AfterTodayConstraint(true)); input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must be valid after reading from request", testForm.convertAndValidate()); request = new MockHttpServletRequest(); //valid request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myDateTime.date", sdf.format(new Date())); request.addParameter("testForm.myDateTime.time", "00:01"); //Testing primitive constraint testForm.getElement("myDateTime").setConstraint(new AfterTodayConstraint(true)); input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must be valid after reading from request", testForm.convertAndValidate()); } public void testFormRangeConstraint() throws Exception { FormWidget testForm = new FormWidget(); testForm._getComponent().init(new MockEnviroment()); //Adding elements to form FormElement lo = testForm.createElement("my date and time", new DateTimeControl(), new DateData(), false); FormElement hi = testForm.createElement("my date and time", new DateTimeControl(), new DateData(), false); FormWidget date = testForm.addSubForm("date"); date.addElement("myDateLo", lo); date.addElement("myDateHi", hi); MockHttpServletRequest request = new MockHttpServletRequest(); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); //valid request.addParameter("testForm.__present", "true"); request.addParameter("testForm.date.myDateLo.date", sdf.format(new java.sql.Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24))); request.addParameter("testForm.date.myDateHi.date", sdf.format(new java.util.Date())); testForm.getElement("date").setConstraint( new RangeConstraint((FormElement) testForm.getGenericElementByFullName("date.myDateLo"), (FormElement) testForm.getGenericElementByFullName("date.myDateHi"), true)); StandardServletInputData input = new StandardServletInputData(request); input.pushScope("testForm"); testForm._getWidget().update(input); input.popScope(); assertTrue("Test form must be valid after reading from request", testForm.convertAndValidate()); } /** * Test reading from request with a grouped constraint set, date is invalid. */ public void testFormInactiveGroupedConstraintInValidates() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "108"); request.addParameter("testForm.myDateTime.date", "11.10.20151"); request.addParameter("testForm.myDateTime.time", "01:01"); // create helper ConstraintGroupHelper groupHelper = new ConstraintGroupHelper(); testForm.getElement("myDateTime") .setConstraint(groupHelper.createGroupedConstraint(new NotEmptyConstraint(), "active")); MockUiLibUtil.emulateHandleRequest(testForm, "testForm", request); assertFalse("Test form must be invalid after reading from request", testForm.convertAndValidate()); } /** * Test reading from request with a grouped constraint set, date is invalid. */ public void anotherTestFormInactiveGroupedConstraintInValidates() throws Exception { FormWidget testForm = makeUsualForm(); MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("testForm.__present", "true"); request.addParameter("testForm.myCheckBox", "true"); request.addParameter("testForm.myLongText", "108"); request.addParameter("testForm.myDateTime.date", "11.10.20151278901"); request.addParameter("testForm.myDateTime.time", "01:01"); // create helper ConstraintGroupHelper groupHelper = new ConstraintGroupHelper(); testForm.getElement("myDateTime") .setConstraint(groupHelper.createGroupedConstraint(new NotEmptyConstraint(), "active")); MockUiLibUtil.emulateHandleRequest(testForm, "testForm", request); assertFalse("Test form must be invalid after reading from request", testForm.convertAndValidate()); } }