Package org.apache.tapestry.internal.event

Source Code of org.apache.tapestry.internal.event.ComponentEventPropertyTest

// Copyright Jun 3, 2006 The Apache Software Foundation
//
// 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.apache.tapestry.internal.event;

import org.apache.tapestry.TestBase;
import org.apache.tapestry.event.BrowserEvent;
import org.testng.annotations.Test;

import java.util.Iterator;
import java.util.List;
import java.util.Set;


/**
* Tests for {@link ComponentEventProperty} and {@link EventBoundListener}.
*
* @author jkuhnert
*/
@Test
public class ComponentEventPropertyTest extends TestBase {

    public void test_Add_Event_Listener()
    {
        String[] events = {"onClick", "onFoo"};
        ComponentEventProperty prop = new ComponentEventProperty("compid");
       
        prop.addListener(events, "doFoo", null, false, false, false);
       
        assertEquals("compid", prop.getComponentId());
        assertEquals(2, prop.getEvents().size());
        assertEquals(0, prop.getFormEvents().size());
       
        assertNotNull(prop.getEventListeners("onClick"));
       
        List listeners = prop.getEventListeners("onClick");
        assertEquals(1, listeners.size());
       
        EventBoundListener listener = (EventBoundListener)listeners.get(0);
        assertEquals("compid", listener.getComponentId());
        assertNull(listener.getFormId());
        assertEquals("doFoo", listener.getMethodName());
        assert listener.isAutoSubmit();
    }

    public void test_Disabled_Async_Property()
    {
        String[] events = { "onchange" };
        ComponentEventProperty p = new ComponentEventProperty("compid");

        p.addListener(events, "submitForm", null, false, false, false, true);

        List listeners = p.getEventListeners("onchange");
        assertEquals(1, listeners.size());

        EventBoundListener l = (EventBoundListener) listeners.get(0);
        assert !l.isAsync();
    }

    public void test_Add_Form_Event_Listener()
    {
        String[] events = {"onFoo"};
        ComponentEventProperty prop = new ComponentEventProperty("compid");
       
        prop.addListener(events, "doFoo", "formid", false, true, false);
       
        assertEquals("compid", prop.getComponentId());
        assertEquals(0, prop.getEvents().size());
        assertEquals(1, prop.getFormEvents().size());
       
        assertNotNull(prop.getFormEventListeners("onFoo"));
       
        List listeners = prop.getFormEventListeners("onFoo");
        assertEquals(1, listeners.size());
       
        EventBoundListener listener = (EventBoundListener)listeners.get(0);
        assertEquals("compid", listener.getComponentId());
        assertEquals("formid", listener.getFormId());
        assertFalse(listener.isValidateForm());
        assertTrue(listener.isAsync());
       
        assertEquals(1, prop.getFormEvents().size());
       
        assertEquals("doFoo", listener.getMethodName());
        assert listener.isAutoSubmit();
    }

    /**
     * tests regression of TAPESTRY-2003
     * */
    public void test_Add_Form_Event_Listener_no_autoSubmit()
    {
        String[] events = {"onFoo"};
        ComponentEventProperty prop = new ComponentEventProperty("compid");

        prop.addListener(events, "doFoo", "", false, true, false, false);
        prop.connectAutoSubmitEvents("fooForm");

        assertEquals("compid", prop.getComponentId());
        assertEquals(1, prop.getEvents().size());
        assertEquals(0, prop.getFormEvents().size());

        List listeners = prop.getEventListeners("onFoo");
        assertEquals(1, listeners.size());

        EventBoundListener listener = (EventBoundListener)listeners.get(0);
       
        assertEquals("doFoo", listener.getMethodName());
        assert ! listener.isAutoSubmit();
    }
   
    public void test_Add_Multiple_Event_Listener()
    {
        String[] events = {"onClick", "onFoo"};
        ComponentEventProperty prop = new ComponentEventProperty("compid");
       
        prop.addListener(events, "doFoo", "form1", false, false, false);
        prop.addListener(new String[]{"onchange"}, "doBar", "form2", false, false, false);
        prop.addListener(new String[]{"onchange"}, "secondForm", "form1", false, false, false);
       
        assertEquals("compid", prop.getComponentId());
        assertEquals(prop.getEvents().size(), 0);
        assertEquals(prop.getFormEvents().size(), 3);
       
        Set s = prop.getFormEvents();
        String[] fevents = (String[])s.toArray(new String[s.size()]);
       
        assertEquals(fevents.length, 3);
       
        List listeners = prop.getFormEventListeners("onchange");
        assertEquals(listeners.size(), 2);
       
        listeners = prop.getFormEventListeners("onClick");
        assertEquals(listeners.size(), 1);
       
        EventBoundListener listener = (EventBoundListener)listeners.get(0);
        assertEquals("compid", listener.getComponentId());
        assertEquals("form1", listener.getFormId());
        assertEquals("doFoo", listener.getMethodName());
       
    }
   
    public void test_Get_Form_Events()
    {
        String[] events = {"onFoo"};
        ComponentEventProperty prop = new ComponentEventProperty("compid");
        BrowserEvent event = new BrowserEvent("onFoo", null);
       
        prop.addListener(events, "doFoo", "formid", false, false, true);
       
        List listeners = prop.getFormEventListeners("formid", event, null);
        assertEquals(1, listeners.size());
       
        EventBoundListener listener = (EventBoundListener)listeners.get(0);
        assertEquals("compid", listener.getComponentId());
        assertEquals("formid", listener.getFormId());
        assertFalse(listener.isValidateForm());
       
        assertEquals("doFoo", listener.getMethodName());
        assertTrue(listener.shouldFocusForm());
    }

    public void test_Connect_Auto_Submit_Events()
    {
        String[] events = {"onClick"};
        ComponentEventProperty prop = new ComponentEventProperty("compid");
       
        prop.addListener(events, "doFoo", null, false, false, false, true);

        assertEquals("compid", prop.getComponentId());
        assertEquals(prop.getEvents().size(), 1);
        assertEquals(prop.getFormEvents().size(), 0);
       
        assertNotNull(prop.getEventListeners("onClick"));

        List listeners = prop.getEventListeners("onClick");
        assertEquals(listeners.size(), 1);
       
        EventBoundListener listener = (EventBoundListener)listeners.get(0);
        assertEquals(listener.getComponentId(), "compid");
        assertNull(listener.getFormId());
        assertEquals(listener.getMethodName(), "doFoo");
        assert listener.isAutoSubmit();

        prop.connectAutoSubmitEvents("form");

        assertEquals(prop.getEvents().size(), 0);
        assertEquals(prop.getFormEvents().size(), 1);

        listeners = prop.getFormEventListeners("onClick");
        assertEquals(listeners.size(), 1);

        listener = (EventBoundListener)listeners.get(0);
        assertEquals(listener.getComponentId(), "compid");
        assertEquals(listener.getFormId(), "form");
        assertEquals(listener.getMethodName(), "doFoo");
    }

    public void test_ReWire_Component_Id()
    {
        String[] events = {"onClick", "onFoo"};
        ComponentEventProperty prop = new ComponentEventProperty("compid");

        prop.addListener(events, "doFoo", null, false, false, false);
        prop.addListener(new String[]{"onchange"}, "doBar", "form2", false, false, false);
        prop.addListener(new String[]{"onchange"}, "secondForm", "form1", false, false, false);
       
        assertEquals("compid", prop.getComponentId());
        assertEquals(prop.getEvents().size(), 2);
        assertEquals(prop.getFormEvents().size(), 1);
       
        String path = "new/Path/Id";
        String idPath = "Home/" + path;
        prop.rewireComponentId(path, idPath);

        assertEquals(prop.getComponentId(), path);


        Iterator it = prop.getEvents().iterator();
        while (it.hasNext())
        {
            String key = (String) it.next();

            List listeners = prop.getEventListeners(key);
            for (int i=0; i < listeners.size(); i++) {

                EventBoundListener listener = (EventBoundListener) listeners.get(i);
                assertEquals(listener.getComponentId(), path);
                assertEquals(listener.getComponentIdPath(), idPath);
            }
        }

        it = prop.getFormEvents().iterator();
        while (it.hasNext())
        {
            String key = (String) it.next();

            List listeners = prop.getFormEventListeners(key);
            for (int i=0; i < listeners.size(); i++) {

                EventBoundListener listener = (EventBoundListener) listeners.get(i);
                assertEquals(listener.getComponentId(), path);
                assertEquals(listener.getComponentIdPath(), idPath);
            }
        }
    }
}
TOP

Related Classes of org.apache.tapestry.internal.event.ComponentEventPropertyTest

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.