Package org.geoserver.web.wicket

Source Code of org.geoserver.web.wicket.GeoServerTablePanelTest$IntegerTable

package org.geoserver.web.wicket;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import junit.framework.TestCase;

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.FormTester;
import org.apache.wicket.util.tester.WicketTester;
import org.geoserver.web.ComponentBuilder;
import org.geoserver.web.FormTestPage;
import org.geoserver.web.wicket.GeoServerDataProvider.Property;

public class GeoServerTablePanelTest extends TestCase {
    WicketTester tester;

    @Override
    protected void setUp() throws Exception {
        tester = new WicketTester();
    }
   
    public void testBasicTable() throws Exception {
        tester.startPage(new FormTestPage(new ComponentBuilder() {
       
            public Component buildComponent(String id) {
                return new IntegerTable(id, false);
            }
        }));
        tester.assertComponent("form:panel", IntegerTable.class);
       
        // check the contents are as expected
        String firstLabelPath = "form:panel:listContainer:items:1:itemProperties:0:component";
        tester.assertComponent(firstLabelPath, Label.class);
        assertEquals(new Integer(0), tester.getComponentFromLastRenderedPage(firstLabelPath).getModelObject());
       
        // check we actually rendered 10 rows
        DataView dv = (DataView) tester.getComponentFromLastRenderedPage("form:panel:listContainer:items");
        assertEquals(10, dv.size());
    }
   
    public void testFullSelection() throws Exception {
        tester.startPage(new FormTestPage(new ComponentBuilder() {
           
            public Component buildComponent(String id) {
                return new IntegerTable(id, true);
            }
        }));
        tester.assertComponent("form:panel", IntegerTable.class);
        IntegerTable table = (IntegerTable) tester.getComponentFromLastRenderedPage("form:panel");
       
        // check the select all check and the row check are there
        String selectAllPath = "form:panel:listContainer:selectAllContainer:selectAll";
        String selectFirstPath = "form:panel:listContainer:items:1:selectItemContainer:selectItem";
        tester.assertComponent(selectAllPath, CheckBox.class);
        tester.assertComponent(selectFirstPath, CheckBox.class);
       
        // test full selection
        assertEquals(0, table.getSelection().size());
        FormTester ft = tester.newFormTester("form");
        ft.setValue("panel:listContainer:selectAllContainer:selectAll", "true");
        tester.executeAjaxEvent(selectAllPath, "onclick");
        assertEquals(10, table.getSelection().size());
        assertEquals(new Integer(0), table.getSelection().get(0));
       
        // reset selection
        table.setSelection(false);
        assertEquals(0, table.getSelection().size());
    }
   
    public void testSingleSelection() throws Exception {
        tester.startPage(new FormTestPage(new ComponentBuilder() {
           
            public Component buildComponent(String id) {
                return new IntegerTable(id, true);
            }
        }));
        tester.assertComponent("form:panel", IntegerTable.class);
        IntegerTable table = (IntegerTable) tester.getComponentFromLastRenderedPage("form:panel");
        assertEquals(0, table.getSelection().size());
       
        // select just one
        FormTester ft = tester.newFormTester("form");
        ft.setValue("panel:listContainer:items:1:selectItemContainer:selectItem", "true");
        ft.setValue("panel:listContainer:items:7:selectItemContainer:selectItem", "true");
        ft.submit();
        assertEquals(2, table.getSelection().size());
        assertEquals(new Integer(0), table.getSelection().get(0));
        assertEquals(new Integer(6), table.getSelection().get(1));
    }
   
    static class IntegerTable extends GeoServerTablePanel<Integer> {
       
        public IntegerTable(String id, boolean selectable) {
            super(id, new IntegerProvider(), selectable);
        }

        @Override
        protected Component getComponentForProperty(String id, IModel itemModel,
                Property<Integer> property) {
            if(property == IntegerProvider.IDX) {
                return new Label(id, itemModel);
            }
            return null;
        }
       
        @Override
        IModel getPropertyTitle(Property<Integer> property) {
            return new Model(property.getName());
        }
       
        @Override
        IModel showingAllRecords(int first, int last, int size) {
            return new Model(first + " -> " + last + " of " + size);
        }
       
        @Override
        IModel matchedXOutOfY(int first, int last, int size, int fullSize) {
            return new Model(first + " -> " + last + " of " + size + "/" + fullSize);
        }
    }
   
    static class IntegerProvider extends GeoServerDataProvider<Integer> {
       
        static final Property<Integer> IDX = new PropertyPlaceholder<Integer>("idx");

        @Override
        protected List<Integer> getItems() {
            List<Integer> result = new ArrayList<Integer>();
            for (int i = 0; i < 10; i++) {
                result.add(i);
            }
            return result;
        }

        @Override
        protected List<org.geoserver.web.wicket.GeoServerDataProvider.Property<Integer>> getProperties() {
            return Collections.singletonList(IDX);
        }

        public IModel model(Object object) {
            return new Model((Integer) object);
        }
       
    }
}
TOP

Related Classes of org.geoserver.web.wicket.GeoServerTablePanelTest$IntegerTable

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.