blob: 070972812c3f6baef13a3f0b945494b000dd9d25 [file] [log] [blame]
/**
* Copyright (c) 2012, 2015 - Lunifera GmbH (Austria), Loetz GmbH&Co.KG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Florian Pirchner - initial API and implementation
*/
package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.presentation;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.eclipse.osbp.ecview.core.common.context.ContextException;
import org.eclipse.osbp.ecview.core.common.context.IViewContext;
import org.eclipse.osbp.ecview.core.common.editpart.DelegatingEditPartManager;
import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
import org.eclipse.osbp.ecview.core.common.editpart.IEmbeddableEditpart;
import org.eclipse.osbp.ecview.core.common.editpart.IViewEditpart;
import org.eclipse.osbp.ecview.core.common.model.binding.YBeanValueBindingEndpoint;
import org.eclipse.osbp.ecview.core.common.model.binding.YBindingSet;
import org.eclipse.osbp.ecview.core.common.model.core.YElement;
import org.eclipse.osbp.ecview.core.common.model.core.YView;
import org.eclipse.osbp.ecview.core.common.presentation.IWidgetPresentation;
import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSlider;
import org.eclipse.osbp.ecview.core.extension.model.extension.util.SimpleExtensionModelFactory;
import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.ISliderEditpart;
import org.eclipse.osbp.runtime.common.i18n.II18nService;
import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractVaadinWidgetPresenter;
import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.SliderPresentation;
import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.tests.model.ValueBean;
import org.osgi.framework.BundleException;
import org.osgi.service.cm.ConfigurationException;
import com.vaadin.ui.Component;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.Slider;
import com.vaadin.ui.UI;
/**
* Tests the {@link SliderPresentation}.
*/
@SuppressWarnings("restriction")
public class SliderPresentationTests {
private SimpleExtensionModelFactory factory = new SimpleExtensionModelFactory();
private CssLayout rootLayout = new CssLayout();
/**
* Setup tests.
*
* @throws ConfigurationException
* @throws BundleException
*/
@Before
public void setup() throws ConfigurationException, BundleException {
UI.setCurrent(new DefaultUI());
UI.getCurrent().setContent(rootLayout);
}
/**
* Tests rendering issues.
*
* @throws Exception
*/
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_isRendered_unrender_byModel() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
// ...> yView
// ......> yGridLayout
// .........> ySlider
YView yView = factory.createView();
YGridLayout yGridlayout = factory.createGridLayout();
yView.setContent(yGridlayout);
YSlider ySlider = factory.createSlider();
yGridlayout.getElements().add(ySlider);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart sliderEditpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider);
IWidgetPresentation<Component> presentation = sliderEditpart
.getPresentation();
assertTrue(presentation.isRendered());
assertFalse(presentation.isDisposed());
yGridlayout.getElements().remove(ySlider);
assertFalse(presentation.isRendered());
assertFalse(presentation.isDisposed());
}
/**
* Tests the internal structure.
*
* @throws Exception
*/
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_InternalStructure() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
// ...> yView
// ......> ySlider
YView yView = factory.createView();
YSlider ySlider = factory.createSlider();
yView.setContent(ySlider);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart sliderEditpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider);
IWidgetPresentation<Component> presentation = sliderEditpart
.getPresentation();
Slider slider = (Slider) presentation.getWidget();
assertNotNull(slider);
}
/**
* Test the internal structure based on CSS.
*
* @throws Exception
*/
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_InternalStructure__CSS() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
// ...> yView
// ......> ySlider
YView yView = factory.createView();
YGridLayout yLayout = factory.createGridLayout();
yView.setContent(yLayout);
YSlider ySlider1 = factory.createSlider();
ySlider1.setCssID("ID_0815");
ySlider1.setCssClass("anyOtherClass");
yLayout.getElements().add(ySlider1);
YSlider ySlider2 = factory.createSlider();
yLayout.getElements().add(ySlider2);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart slider1Editpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider1);
ISliderEditpart slider2Editpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider2);
IWidgetPresentation<Component> slider1Presentation = slider1Editpart
.getPresentation();
IWidgetPresentation<Component> slider2Presentation = slider2Editpart
.getPresentation();
Slider slider1 = (Slider) slider1Presentation.getWidget();
Slider slider2 = (Slider) slider2Presentation.getWidget();
// assert css class
assertTrue(slider1.getStyleName().contains("anyOtherClass"));
assertTrue(slider2.getStyleName().contains(
AbstractVaadinWidgetPresenter.CSS_CLASS_CONTROL));
// assert css id
assertEquals("ID_0815", slider1.getId());
assertEquals(slider2Editpart.getId(), slider2.getId());
}
/**
* Test the internal structure based on CSS.
*
* @throws Exception
*/
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_Bindings() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
// ...> yView
// ......> ySlider
YView yView = factory.createView();
YGridLayout yLayout = factory.createGridLayout();
yView.setContent(yLayout);
YSlider ySlider1 = factory.createSlider();
yLayout.getElements().add(ySlider1);
YSlider ySlider2 = factory.createSlider();
yLayout.getElements().add(ySlider2);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart slider1Editpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider1);
ISliderEditpart slider2Editpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider2);
IWidgetPresentation<Component> slider1Presentation = slider1Editpart
.getPresentation();
IWidgetPresentation<Component> slider2Presentation = slider2Editpart
.getPresentation();
Slider slider1 = (Slider) slider1Presentation.getWidget();
Slider slider2 = (Slider) slider2Presentation.getWidget();
// start tests
//
ySlider1.setValue(0d);
ySlider2.setValue(0d);
assertTrue(slider1.isVisible());
assertTrue(slider1.isEnabled());
assertFalse(slider1.isReadOnly());
assertEquals(0d, slider1.getValue(), 0);
assertTrue(slider2.isVisible());
assertTrue(slider2.isEnabled());
assertFalse(slider2.isReadOnly());
assertEquals(0d, slider2.getValue(), 0);
ySlider1.setVisible(false);
assertFalse(slider1.isVisible());
ySlider1.setEnabled(false);
assertFalse(slider1.isEnabled());
ySlider1.setEditable(false);
assertTrue(slider1.isReadOnly());
// target to model
slider1.setReadOnly(false);
assertTrue(ySlider1.isEditable());
ySlider1.setValue(30d);
ySlider2.setValue(60d);
assertEquals(30d, slider1.getValue(), 0);
assertEquals(60d, slider2.getValue(), 0);
}
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_ValueBinding() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
// ...> yView
// ......> ySlider
YView yView = factory.createView();
YGridLayout yLayout = factory.createGridLayout();
yView.setContent(yLayout);
YSlider ySlider1 = factory.createSlider();
yLayout.getElements().add(ySlider1);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart slider1Editpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider1);
IWidgetPresentation<Component> slider1Presentation = slider1Editpart
.getPresentation();
Slider slider1 = (Slider) slider1Presentation.getWidget();
// start tests
//
YBindingSet yBindingSet = yView.getOrCreateBindingSet();
ySlider1.setValue(0d);
YBeanValueBindingEndpoint beanBinding = factory
.createBeanBindingEndpoint();
ValueBean bean = new ValueBean(30d);
beanBinding.setPropertyPath("doubleValue");
beanBinding.setBean(bean);
yBindingSet.addBinding(ySlider1.createValueEndpoint(), beanBinding);
assertEquals(30d, slider1.getValue(), 0);
assertEquals(30d, ySlider1.getValue(), 0);
bean.setDoubleValue(60d);
assertEquals(60d, slider1.getValue(), 0);
assertEquals(60d, ySlider1.getValue(), 0);
slider1.setValue(70d);
assertEquals(70d, bean.getDoubleValue(), 0);
assertEquals(70d, ySlider1.getValue(), 0);
ySlider1.setValue(80d);
assertEquals(80d, bean.getDoubleValue(), 0);
assertEquals(80d, slider1.getValue(), 0);
}
/**
* Test the automatic disposal of bindings
*
* @throws ContextException
*/
@Test
public void testBindingIsDisposed() throws ContextException {
YView yView = factory.createView();
YGridLayout yGridlayout = factory.createGridLayout();
yView.setContent(yGridlayout);
YSlider ySlider = factory.createSlider();
yGridlayout.getElements().add(ySlider);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart sliderEditpart = DelegatingEditPartManager
.getInstance().getEditpart(viewContext,ySlider);
IWidgetPresentation<Component> presentation = sliderEditpart
.getPresentation();
assertTrue(presentation.isRendered());
assertFalse(presentation.isDisposed());
assertEquals(8, presentation.getUIBindings().size());
presentation.dispose();
assertFalse(presentation.isRendered());
assertTrue(presentation.isDisposed());
assertEquals(0, presentation.getUIBindings().size());
}
@Test
public void test_i18n() throws ContextException {
// switch the global locale to german
Locale.setDefault(Locale.GERMAN);
YView yView = factory.createView();
YGridLayout yGridlayout = factory.createGridLayout();
yView.setContent(yGridlayout);
YSlider ySlider = factory.createSlider();
yGridlayout.getElements().add(ySlider);
// set the i18n key
ySlider.setLabelI18nKey(I18nServiceForTests.KEY__AGE);
// prepare the I18nService and pass it to the renderer
Map<String, Object> parameter = new HashMap<String, Object>();
Map<String, Object> services = new HashMap<String, Object>();
parameter.put(IViewContext.PARAM_SERVICES, services);
services.put(II18nService.ID, new I18nServiceForTests());
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, parameter);
ISliderEditpart editpart = DelegatingEditPartManager.getInstance()
.getEditpart(viewContext,ySlider);
SliderPresentation presentation = editpart.getPresentation();
assertEquals("Alter", presentation.getWidget().getCaption());
viewContext.setLocale(Locale.ENGLISH);
assertEquals("Age", presentation.getWidget().getCaption());
}
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_Readonly_Binding() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
YView yView = factory.createView();
YGridLayout yLayout = factory.createGridLayout();
yView.setContent(yLayout);
YSlider ySlider = factory.createSlider();
yLayout.getElements().add(ySlider);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart editpart = DelegatingEditPartManager.getInstance()
.getEditpart(viewContext,ySlider);
IWidgetPresentation<Component> presentation = editpart
.getPresentation();
Slider slider1 = (Slider) presentation.getWidget();
ValueBean bean = new ValueBean(false);
YBeanValueBindingEndpoint yBeanBinding = factory
.createBeanBindingEndpoint();
yBeanBinding.setBean(bean);
yBeanBinding.setPropertyPath("boolValue");
YBindingSet yBindingSet = yView.getOrCreateBindingSet();
yBindingSet.addBinding(ySlider.createEditableEndpoint(), yBeanBinding);
// test binding
assertFalse(ySlider.isEditable());
assertFalse(!slider1.isReadOnly());
assertFalse(bean.isBoolValue());
bean.setBoolValue(true);
assertTrue(ySlider.isEditable());
assertTrue(!slider1.isReadOnly());
assertTrue(bean.isBoolValue());
}
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_Visible_Binding() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
YView yView = factory.createView();
YGridLayout yLayout = factory.createGridLayout();
yView.setContent(yLayout);
YSlider ySlider = factory.createSlider();
yLayout.getElements().add(ySlider);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart editpart = DelegatingEditPartManager.getInstance()
.getEditpart(viewContext,ySlider);
IWidgetPresentation<Component> presentation = editpart
.getPresentation();
Slider slider1 = (Slider) presentation.getWidget();
ValueBean bean = new ValueBean(false);
YBeanValueBindingEndpoint yBeanBinding = factory
.createBeanBindingEndpoint();
yBeanBinding.setBean(bean);
yBeanBinding.setPropertyPath("boolValue");
YBindingSet yBindingSet = yView.getOrCreateBindingSet();
yBindingSet.addBinding(ySlider.createVisibleEndpoint(), yBeanBinding);
// test binding
assertFalse(ySlider.isVisible());
assertFalse(slider1.isVisible());
assertFalse(bean.isBoolValue());
bean.setBoolValue(true);
assertTrue(ySlider.isVisible());
assertTrue(slider1.isVisible());
assertTrue(bean.isBoolValue());
}
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_Enabled_Binding() throws Exception {
// END SUPRESS CATCH EXCEPTION
// build the view model
YView yView = factory.createView();
YGridLayout yLayout = factory.createGridLayout();
yView.setContent(yLayout);
YSlider ySlider = factory.createSlider();
yLayout.getElements().add(ySlider);
VaadinRenderer renderer = new VaadinRenderer();
IViewContext viewContext = renderer.render(rootLayout, yView, null);
ISliderEditpart editpart = DelegatingEditPartManager.getInstance()
.getEditpart(viewContext,ySlider);
IWidgetPresentation<Component> presentation = editpart
.getPresentation();
Slider slider1 = (Slider) presentation.getWidget();
ValueBean bean = new ValueBean(false);
YBeanValueBindingEndpoint yBeanBinding = factory
.createBeanBindingEndpoint();
yBeanBinding.setBean(bean);
yBeanBinding.setPropertyPath("boolValue");
YBindingSet yBindingSet = yView.getOrCreateBindingSet();
yBindingSet.addBinding(ySlider.createEnabledEndpoint(), yBeanBinding);
// test binding
assertFalse(ySlider.isEnabled());
assertFalse(slider1.isEnabled());
assertFalse(bean.isBoolValue());
bean.setBoolValue(true);
assertTrue(ySlider.isEnabled());
assertTrue(slider1.isEnabled());
assertTrue(bean.isBoolValue());
}
}