/*
* Copyright (C) 2015 Red Hat, Inc. and/or its affiliates.
*
* 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.jboss.errai.ui.test.quickhandler.client;
import static org.jboss.errai.common.client.util.EventTestingUtil.invokeEventListeners;
import static org.jboss.errai.common.client.util.EventTestingUtil.setupAddEventListenerInterceptor;
import java.util.Arrays;
import java.util.Collections;
import org.jboss.errai.common.client.dom.Button;
import org.jboss.errai.enterprise.client.cdi.AbstractErraiCDITest;
import org.jboss.errai.ioc.client.IOCUtil;
import org.jboss.errai.ui.test.quickhandler.client.res.InteropEventQuickHandlerTemplate;
import org.jboss.errai.ui.test.quickhandler.client.res.InteropEventQuickHandlerTemplate.ObservedEvent;
public class InteropEventQuickHandlerTemplateTest extends AbstractErraiCDITest {
private InteropEventQuickHandlerTemplate bean;
@Override
public String getModuleName() {
return getClass().getName().replaceAll("client.*$", "Test");
}
@Override
protected void gwtSetUp() throws Exception {
super.gwtSetUp();
setupAddEventListenerInterceptor();
bean = IOCUtil.getInstance(InteropEventQuickHandlerTemplate.class);
}
public void testButtonSingleClickHandler() throws Exception {
assertTrue(bean.observed.isEmpty());
invokeEventListeners(bean.button, "click");
assertEquals(Arrays.asList(new ObservedEvent("button", "click")), bean.observed);
invokeEventListeners(bean.button, "dblclick");
assertEquals(Arrays.asList(new ObservedEvent("button", "click")), bean.observed);
}
public void testAnchorSingleAndDoubleClick() throws Exception {
assertTrue(bean.observed.isEmpty());
invokeEventListeners(bean.anchor, "click");
assertEquals(Arrays.asList(new ObservedEvent("anchor", "click")), bean.observed);
invokeEventListeners(bean.anchor, "dblclick");
assertEquals(Arrays.asList(new ObservedEvent("anchor", "click"), new ObservedEvent("anchor", "dblclick")), bean.observed);
}
public void testInputChange() throws Exception {
assertTrue(bean.observed.isEmpty());
invokeEventListeners(bean.input, "change");
assertEquals(Arrays.asList(new ObservedEvent("input", "change")), bean.observed);
invokeEventListeners(bean.input, "click");
assertEquals(Arrays.asList(new ObservedEvent("input", "change")), bean.observed);
}
public void testListenersRemovedAfterBeanDestroyed() throws Exception {
try {
assertTrue(bean.observed.isEmpty());
invokeEventListeners(bean.button, "click");
assertEquals(Arrays.asList(new ObservedEvent("button", "click")), bean.observed);
} catch (final AssertionError ae) {
throw new AssertionError("Precondition failed.", ae);
}
bean.observed.clear();
assertTrue(bean.observed.isEmpty());
IOCUtil.destroy(bean);
invokeEventListeners(bean.button, "click");
assertEquals(Collections.emptyList(), bean.observed);
}
public void testWithWidget() throws Exception {
assertTrue(bean.observed.isEmpty());
invokeEventListeners(bean.buttonWidget.getElement(), "click");
assertEquals(Arrays.asList(new ObservedEvent("buttonWidget", "click")), bean.observed);
}
public void testWithGwtUserElement() throws Exception {
assertTrue(bean.observed.isEmpty());
invokeEventListeners(bean.buttonGwtElement, "click");
assertEquals(Arrays.asList(new ObservedEvent("buttonGwtElement", "click")), bean.observed);
}
public void testDataFieldOnlyInTemplate() throws Exception {
final Button button = (Button) bean.root.querySelector("button[data-field=\"noFieldButton\"]");
assertNotNull(button);
assertTrue(bean.observed.isEmpty());
invokeEventListeners(button, "click");
assertEquals(Arrays.asList(new ObservedEvent("noFieldButton", "click")), bean.observed);
}
public void testPrivateMethodHandler() throws Exception {
assertTrue(bean.observed.isEmpty());
invokeEventListeners(bean.privateHandler, "dblclick");
assertEquals(Arrays.asList(new ObservedEvent("privateHandler", "dblclick")), bean.observed);
}
}