Testing with DropDowns - onChange event
I'm trying to test onChange even on one dropdown so that the value is changed in the other dropdown.When I submit the form I'm not able to get the values for any of the fields. I have seen people getting the same error but there is no solution so far. Thanks for helping in advance. @Test public void testDummyPage() throws Exception { TestPage testPage = new TestPage(id); wicketTester.startPage(testPage); // assert rendered field components wicketTester.assertComponent(form:txtName, TextField.class); wicketTester.assertComponent(form:department, DropDownChoice.class); wicketTester.assertComponent(form:employee, DropDownChoice.class); FormTester formTester1 = wicketTester.newFormTester(form); formTester1.setValue(txtName, amit); formTester1.select(department, 0); wicketTester.executeAjaxEvent(form:department, onchange); wicketTester.assertComponentOnAjaxResponse(form:employee); formTester1.select(employee, 1); formTester1.submit(submit); Assert.assertEquals(formTester1.getTextComponentValue(txtName), amit); Assert.assertNotNull(wicketTester.getTagByWicketId(department).getValue()); Assert.assertNotNull(wicketTester.getTagByWicketId(employee).getValue()); DropDownChoice dropDownChoice = (DropDownChoice) wicketTester.getComponentFromLastRenderedPage( form:department); System.out.println( department + formTester1.getForm().get(department)); Assert.assertEquals((dropDownChoice.getModelObjectAsString()), HR); } ** public class TestPage extends WebPage { private String txtName; private String department; private String deptName; private String deptId; private String employee; private DropDownChoice ddc1; public TestPage(String id) { final Form addressForm = new Form(form, new CompoundPropertyModel(this)); addressForm.setOutputMarkupId(true); add(addressForm); /*Address TextField*/ TextField addressTxtField = new TextField(txtName, new PropertyModel(this, txtName), String.class); addressTxtField.add(StringValidator.maximumLength(15)); addressForm.add(addressTxtField); ListDept depList = new ArrayList(); Dept dept = new Dept(); dept.setDeptId(1); dept.setDeptName(HR); depList.add(dept); Dept dept1 = new Dept(); dept1.setDeptName(AC); dept1.setDeptId(2); Dept dept2 = new Dept(); dept2.setDeptName(AD); dept2.setDeptId(3); depList.add(dept1); depList.add(dept2); ChoiceRenderer choiceRendererState = new ChoiceRenderer(deptName, deptId); //addressForm.add(new DropDownChoice(department, new PropertyModel(this, department), depList, //choiceRendererState)); final DropDownChoice ddc = new DropDownChoice(department, new PropertyModel(this, department), Arrays.StringasList( HR, IS, FINANCE/ACCOUNTING)); addressForm.add(ddc.setOutputMarkupId(true)); ddc1 = new DropDownChoice(employee, new PropertyModel(this, employee), Arrays.StringasList( EMP1, EMP2, EMP3)); addressForm.add(ddc1.setOutputMarkupId(true)); ddc.add(new AjaxFormComponentUpdatingBehavior(onchange) { @Override protected void onUpdate(AjaxRequestTarget target) { if (ddc.getModelObject() != null) { target.addComponent(ddc1.setChoices(Arrays.StringasList(EMP1, EMP2))); } } }); addressForm.add(new Button(submit) { protected void onSubmit(AjaxRequestTarget target, Form form) { } }); } public String getTxtName() { return txtName; } public void setTxtName(String txtName) { this.txtName = txtName; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public String getDeptId() { return deptId; } public void setDeptId(String deptId) { this.deptId = deptId; } public String getEmployee() { return employee; } public void setEmployee(String employee) { this.employee = employee; } } *** TestPage.html html head title/title meta http-equiv=Content-Type content=text/html; charset=UTF-8 /head body form wicket:id=form input type=text
Testing with DropDowns - onChange event
I'm trying to test onChange even on one dropdown so that the value is changed in the other dropdown.When I submit the form I'm not able to get the values for any of the fields. I have seen people getting the same error but there is no solution so far. Thanks for helping in advance. @Test public void testDummyPage() throws Exception { TestPage testPage = new TestPage(id); wicketTester.startPage(testPage); // assert rendered field components wicketTester.assertComponent(form:txtName, TextField.class); wicketTester.assertComponent(form:department, DropDownChoice.class); wicketTester.assertComponent(form:employee, DropDownChoice.class); FormTester formTester1 = wicketTester.newFormTester(form); formTester1.setValue(txtName, amit); formTester1.select(department, 0); wicketTester.executeAjaxEvent(form:department, onchange); wicketTester.assertComponentOnAjaxResponse(form:employee); formTester1.select(employee, 1); formTester1.submit(submit); Assert.assertEquals(formTester1.getTextComponentValue(txtName), amit); Assert.assertNotNull(wicketTester.getTagByWicketId(department).getVa lue()); Assert.assertNotNull(wicketTester.getTagByWicketId(employee).getValu e()); DropDownChoice dropDownChoice = (DropDownChoice) wicketTester.getComponentFromLastRenderedPage( form:department); System.out.println( department + formTester1.getForm().get(department)); Assert.assertEquals((dropDownChoice.getModelObjectAsString()), HR); } ** public class TestPage extends WebPage { private String txtName; private String department; private String deptName; private String deptId; private String employee; private DropDownChoice ddc1; public TestPage(String id) { final Form addressForm = new Form(form, new CompoundPropertyModel(this)); addressForm.setOutputMarkupId(true); add(addressForm); /*Address TextField*/ TextField addressTxtField = new TextField(txtName, new PropertyModel(this, txtName), String.class); addressTxtField.add(StringValidator.maximumLength(15)); addressForm.add(addressTxtField); ListDept depList = new ArrayList(); Dept dept = new Dept(); dept.setDeptId(1); dept.setDeptName(HR); depList.add(dept); Dept dept1 = new Dept(); dept1.setDeptName(AC); dept1.setDeptId(2); Dept dept2 = new Dept(); dept2.setDeptName(AD); dept2.setDeptId(3); depList.add(dept1); depList.add(dept2); ChoiceRenderer choiceRendererState = new ChoiceRenderer(deptName, deptId); //addressForm.add(new DropDownChoice(department, new PropertyModel(this, department), depList, //choiceRendererState)); final DropDownChoice ddc = new DropDownChoice(department, new PropertyModel(this, department), Arrays.StringasList( HR, IS, FINANCE/ACCOUNTING)); addressForm.add(ddc.setOutputMarkupId(true)); ddc1 = new DropDownChoice(employee, new PropertyModel(this, employee), Arrays.StringasList( EMP1, EMP2, EMP3)); addressForm.add(ddc1.setOutputMarkupId(true)); ddc.add(new AjaxFormComponentUpdatingBehavior(onchange) { @Override protected void onUpdate(AjaxRequestTarget target) { if (ddc.getModelObject() != null) { target.addComponent(ddc1.setChoices(Arrays.StringasList(EMP1, EMP2))); } } }); addressForm.add(new Button(submit) { protected void onSubmit(AjaxRequestTarget target, Form form) { } }); } public String getTxtName() { return txtName; } public void setTxtName(String txtName) { this.txtName = txtName; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public String getDeptId() { return deptId; } public void setDeptId(String deptId) { this.deptId = deptId; } public String getEmployee() { return employee; } public void setEmployee(String employee) { this.employee = employee; } } *** TestPage.html html head title/title
Testing with DropDowns - onChange event
I'm trying to test onChange even on one dropdown so that the value is changed in the other dropdown.When I submit the form I'm not able to get the values for any of the fields. I have seen people getting the same error but there is no solution so far. Thanks for helping in advance. @Test public void testDummyPage() throws Exception { TestPage testPage = new TestPage(id); wicketTester.startPage(testPage); // assert rendered field components wicketTester.assertComponent(form:txtName, TextField.class); wicketTester.assertComponent(form:department, DropDownChoice.class); wicketTester.assertComponent(form:employee, DropDownChoice.class); FormTester formTester1 = wicketTester.newFormTester(form); formTester1.setValue(txtName, amit); formTester1.select(department, 0); wicketTester.executeAjaxEvent(form:department, onchange); wicketTester.assertComponentOnAjaxResponse(form:employee); formTester1.select(employee, 1); formTester1.submit(submit); Assert.assertEquals(formTester1.getTextComponentValue(txtName), amit); Assert.assertNotNull(wicketTester.getTagByWicketId(department).getVa lue()); Assert.assertNotNull(wicketTester.getTagByWicketId(employee).getValu e()); DropDownChoice dropDownChoice = (DropDownChoice) wicketTester.getComponentFromLastRenderedPage( form:department); System.out.println( department + formTester1.getForm().get(department)); Assert.assertEquals((dropDownChoice.getModelObjectAsString()), HR); } ** public class TestPage extends WebPage { private String txtName; private String department; private String deptName; private String deptId; private String employee; private DropDownChoice ddc1; public TestPage(String id) { final Form addressForm = new Form(form, new CompoundPropertyModel(this)); addressForm.setOutputMarkupId(true); add(addressForm); /*Address TextField*/ TextField addressTxtField = new TextField(txtName, new PropertyModel(this, txtName), String.class); addressTxtField.add(StringValidator.maximumLength(15)); addressForm.add(addressTxtField); ListDept depList = new ArrayList(); Dept dept = new Dept(); dept.setDeptId(1); dept.setDeptName(HR); depList.add(dept); Dept dept1 = new Dept(); dept1.setDeptName(AC); dept1.setDeptId(2); Dept dept2 = new Dept(); dept2.setDeptName(AD); dept2.setDeptId(3); depList.add(dept1); depList.add(dept2); ChoiceRenderer choiceRendererState = new ChoiceRenderer(deptName, deptId); //addressForm.add(new DropDownChoice(department, new PropertyModel(this, department), depList, //choiceRendererState)); final DropDownChoice ddc = new DropDownChoice(department, new PropertyModel(this, department), Arrays.StringasList( HR, IS, FINANCE/ACCOUNTING)); addressForm.add(ddc.setOutputMarkupId(true)); ddc1 = new DropDownChoice(employee, new PropertyModel(this, employee), Arrays.StringasList( EMP1, EMP2, EMP3)); addressForm.add(ddc1.setOutputMarkupId(true)); ddc.add(new AjaxFormComponentUpdatingBehavior(onchange) { @Override protected void onUpdate(AjaxRequestTarget target) { if (ddc.getModelObject() != null) { target.addComponent(ddc1.setChoices(Arrays.StringasList(EMP1, EMP2))); } } }); addressForm.add(new Button(submit) { protected void onSubmit(AjaxRequestTarget target, Form form) { } }); } public String getTxtName() { return txtName; } public void setTxtName(String txtName) { this.txtName = txtName; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public String getDeptId() { return deptId; } public void setDeptId(String deptId) { this.deptId = deptId; } public String getEmployee() { return employee; } public void setEmployee(String employee) { this.employee = employee; } } *** TestPage.html html head title/title