FIXME changed into proper wicket component test
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/34d61f7f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/34d61f7f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/34d61f7f Branch: refs/heads/master Commit: 34d61f7f02dae699d77da42c43f1948b02d74ac2 Parents: be10b5a Author: svenmeier <[email protected]> Authored: Fri Jun 15 18:05:40 2012 +0200 Committer: svenmeier <[email protected]> Committed: Fri Jun 15 22:22:25 2012 +0200 ---------------------------------------------------------------------- .../html/form/AbstractCheckGroupTestPage.java | 16 +- .../html/form/CheckGroupProcessingTestPage.html | 13 ++ .../html/form/CheckGroupProcessingTestPage.java | 37 ++++ .../wicket/markup/html/form/CheckGroupTest.java | 155 ++------------- 4 files changed, 82 insertions(+), 139 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/34d61f7f/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractCheckGroupTestPage.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractCheckGroupTestPage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractCheckGroupTestPage.java index d1745de..fbb8567 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractCheckGroupTestPage.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/AbstractCheckGroupTestPage.java @@ -36,6 +36,13 @@ public abstract class AbstractCheckGroupTestPage extends WebPage */ private static final long serialVersionUID = 1L; + public Form<?> form; + + public CheckGroup<String> group; + + public Check<String> check1; + + public Check<String> check2; /** * Constructor @@ -45,12 +52,11 @@ public abstract class AbstractCheckGroupTestPage extends WebPage public AbstractCheckGroupTestPage(List<String> list) { - Form<?> form = new Form<Void>("form"); - CheckGroup<String> group = new CheckGroup<String>("group", - new CollectionModel<String>(list)); + form = new Form<Void>("form"); + group = new CheckGroup<String>("group", new CollectionModel<String>(list)); WebMarkupContainer container = new WebMarkupContainer("container"); - Check<String> check1 = new Check<String>("check1", new Model<String>("check1")); - Check<String> check2 = new Check<String>("check2", new Model<String>("check2")); + check1 = new Check<String>("check1", new Model<String>("check1")); + check2 = new Check<String>("check2", new Model<String>("check2")); add(form); http://git-wip-us.apache.org/repos/asf/wicket/blob/34d61f7f/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.html new file mode 100644 index 0000000..f8268f3 --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.html @@ -0,0 +1,13 @@ +<html> +<head><title>CheckGroupTestPage1</title></head> +<body> + <form wicket:id="form"> + <span wicket:id="group"> + <input type="checkbox" wicket:id="check1">check1</input> + <span wicket:id="container"> + <input type="checkbox" wicket:id="check2">check2</input> + </span> + </span> + </form> +</body> +</html> http://git-wip-us.apache.org/repos/asf/wicket/blob/34d61f7f/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.java new file mode 100644 index 0000000..11eb26f --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupProcessingTestPage.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.wicket.markup.html.form; + +import java.util.List; + +/** + * test processing + * + * @author svenmeier + */ +public class CheckGroupProcessingTestPage extends AbstractCheckGroupTestPage +{ + private static final long serialVersionUID = 1L; + + /** + * constructor + */ + public CheckGroupProcessingTestPage(List<String> list) + { + super(list); + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/34d61f7f/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java index 93c8731..e88e30c 100644 --- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/CheckGroupTest.java @@ -16,19 +16,11 @@ */ package org.apache.wicket.markup.html.form; -import java.io.Serializable; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.WicketTestCase; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.model.CompoundPropertyModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.util.CollectionModel; -import org.apache.wicket.protocol.http.MockPage; import org.junit.Test; @@ -44,171 +36,66 @@ import org.junit.Test; public class CheckGroupTest extends WicketTestCase { /** - * mock model object with an embedded property used to test compound property model - * - * @author igor - * - */ - public static class MockModelObject implements Serializable - { - private static final long serialVersionUID = 1L; - - private Set<Object> prop1 = new HashSet<Object>(); - private String prop2; - - /** - * @return prop1 - */ - public Set<Object> getProp1() - { - return prop1; - } - - /** - * @param prop1 - */ - public void setProp1(Set<Object> prop1) - { - this.prop1 = prop1; - } - - /** - * @return prop2 - */ - public String getProp2() - { - return prop2; - } - - /** - * @param prop2 - */ - public void setProp2(String prop2) - { - this.prop2 = prop2; - } - - - } - - /** * test component form processing */ - // TODO (Eelco) This is an awful test. Why is 'mock page' (which isn't a - // real mock, but just some arbitrary page) used rather than a page with - // markup that corresponds to the component structure that is build up? - // Components and markup go together in Wicket, period. @Test public void formProcessing() { - // setup some values we will use for testing as well as a test model - final String check1 = "check1-selection"; - final String check2 = "check2-selection"; - - MockModelObject modelObject = new MockModelObject(); - modelObject.setProp2(check2); // test model constructors - List<Object> list = new ArrayList<Object>(); - CollectionModel<Object> model = new CollectionModel<Object>(list); - - final CheckGroup<Object> group2 = new CheckGroup<Object>("group2", model); - assertTrue(group2.getDefaultModelObject() == list); - - final CheckGroup<Object> group3 = new CheckGroup<Object>("group3", list); - assertTrue(group3.getDefaultModelObject() == list); - - - // set up necessary objects to emulate a form submission + List<String> list = new ArrayList<String>(); + list.add("check2"); - // this could have been any page it seems. see comment at method - MockPage page = new MockPage(); + CheckGroupProcessingTestPage page = new CheckGroupProcessingTestPage(list); - // create component hierarchy - - final Form<MockModelObject> form = new Form<MockModelObject>("form", - new CompoundPropertyModel<MockModelObject>(modelObject)) - { - private static final long serialVersionUID = 1L; - - @Override - public String getMarkupId() - { - // hack for the fact that this test doesn't relate to any markup - return "foo"; - } - }; + tester.startPage(page); - final CheckGroup<Object> group = new CheckGroup<Object>("prop1"); + tester.submitForm(page.form); - final WebMarkupContainer container = new WebMarkupContainer("container"); - - final Check<Serializable> choice1 = new Check<Serializable>("check1", - new Model<Serializable>(check1)); - final Check<String> choice2 = new Check<String>("prop2"); - - page.add(form); - form.add(group); - group.add(container); - container.add(choice1); - group.add(choice2); - - // test mock form submissions - - modelObject.getProp1().add(check1); - - form.onFormSubmitted(); - assertTrue("running with nothing selected - model must be empty", modelObject.getProp1() - .size() == 0); + assertTrue("running with nothing selected - model must be empty", list.size() == 0); tester.getRequest() .getPostParameters() - .setParameterValue(group.getInputName(), String.valueOf(choice1.getValue())); - tester.applyRequest(); - form.onFormSubmitted(); + .setParameterValue(page.group.getInputName(), page.check1.getValue()); + tester.submitForm(page.form); + assertTrue("running with choice1 selected - model must only contain value of check1", - modelObject.getProp1().size() == 1 && modelObject.getProp1().contains(check1)); + list.size() == 1 && list.contains("check1")); tester.getRequest() .getPostParameters() - .setParameterValue(group.getInputName(), String.valueOf(choice2.getValue())); - tester.applyRequest(); - form.onFormSubmitted(); + .setParameterValue(page.group.getInputName(), page.check2.getValue()); + tester.submitForm(page.form); + assertTrue("running with choice2 selected - model must only contain value of check2", - modelObject.getProp1().size() == 1 && modelObject.getProp1().contains(check2)); + list.size() == 1 && list.contains("check2")); // throw in some nulls into the request param to make sure they are // ignored - tester.getRequest().getPostParameters().addParameterValue(group.getInputName(), null); + tester.getRequest().getPostParameters().addParameterValue(page.group.getInputName(), null); tester.getRequest() .getPostParameters() - .addParameterValue(group.getInputName(), String.valueOf(choice1.getValue())); + .addParameterValue(page.group.getInputName(), page.check1.getValue()); tester.getRequest() .getPostParameters() - .addParameterValue(group.getInputName(), String.valueOf(choice2.getValue())); - tester.applyRequest(); - form.onFormSubmitted(); + .addParameterValue(page.group.getInputName(), page.check2.getValue()); + tester.submitForm(page.form); assertTrue( "running with choice1 and choice2 selected - model must only contain values of check1 and check2", - modelObject.getProp1().size() == 2 && modelObject.getProp1().contains(check2) && - modelObject.getProp1().contains(check1)); + list.size() == 2 && list.contains("check1") && list.contains("check2")); tester.getRequest() .getPostParameters() - .setParameterValue(group.getInputName(), "some weird choice uuid to test error"); - tester.applyRequest(); + .setParameterValue(page.group.getInputName(), "some weird choice uuid to test error"); try { - form.onFormSubmitted(); + tester.submitForm(page.form); fail("running with an invalid choice value in the request param, should fail"); } catch (WicketRuntimeException e) { - } - - } /**
