Package com.google.gdt.eclipse.designer.smartgwt.model.widgets

Source Code of com.google.gdt.eclipse.designer.smartgwt.model.widgets.DataSourceTest

/*******************************************************************************
* Copyright 2011 Google Inc. All Rights Reserved.
*
* 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
*
* 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 com.google.gdt.eclipse.designer.smartgwt.model.widgets;

import com.google.gdt.eclipse.designer.smart.model.CalendarInfo;
import com.google.gdt.eclipse.designer.smart.model.CanvasInfo;
import com.google.gdt.eclipse.designer.smart.model.FilterBuilderInfo;
import com.google.gdt.eclipse.designer.smart.model.data.DataSourceFieldInfo;
import com.google.gdt.eclipse.designer.smart.model.data.DataSourceInfo;
import com.google.gdt.eclipse.designer.smartgwt.model.SmartGwtModelTest;

import org.eclipse.wb.core.model.JavaInfo;
import org.eclipse.wb.internal.core.model.generic.FlowContainer;
import org.eclipse.wb.internal.core.model.generic.FlowContainerFactory;
import org.eclipse.wb.internal.core.model.nonvisual.AbstractArrayObjectInfo;
import org.eclipse.wb.internal.core.model.nonvisual.NonVisualBeanContainerInfo;
import org.eclipse.wb.internal.core.model.nonvisual.NonVisualBeanInfo;
import org.eclipse.wb.internal.core.model.property.GenericProperty;
import org.eclipse.wb.internal.core.model.property.editor.ObjectPropertyEditor;
import org.eclipse.wb.internal.core.utils.ast.AstNodeUtils;
import org.eclipse.wb.internal.core.utils.ast.StatementTarget;
import org.eclipse.wb.internal.core.utils.reflect.ReflectionUtils;

import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.Statement;

import static org.fest.assertions.Assertions.assertThat;

import java.util.List;

/**
* Test for {@link DataSourceInfo}.
*
* @author sablin_aa
*/
public class DataSourceTest extends SmartGwtModelTest {
  ////////////////////////////////////////////////////////////////////////////
  //
  // Exit zone :-) XXX
  //
  ////////////////////////////////////////////////////////////////////////////
  public void _test_exit() throws Exception {
    System.exit(0);
  }

  ////////////////////////////////////////////////////////////////////////////
  //
  // Tests
  //
  ////////////////////////////////////////////////////////////////////////////
  public void test_parse() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  public void onModuleLoad() {",
            "    Calendar calendar = new Calendar();",
            "    DataSource dataSource = new DataSource();",
            "    dataSource.setID('DS');",
            "    DataSourceBooleanField dataSourceBooleanField = new DataSourceBooleanField('dsBooleanField');",
            "    dataSource.addField(dataSourceBooleanField);",
            "    DataSourceDateField dataSourceDateField = new DataSourceDateField('dsDateField');",
            "    dataSource.setFields(dataSourceDateField);",
            "    calendar.setDataSource(dataSource);",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    //
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    assertThat(NonVisualBeanInfo.getNonVisualInfo(dataSource).getLocation()).isNull();
    // check fields
    List<DataSourceFieldInfo> dsDirectFields = dataSource.getChildren(DataSourceFieldInfo.class);
    assertThat(dsDirectFields.size()).isEqualTo(2);
    assertThat(
        ReflectionUtils.isSuccessorOf(
            dsDirectFields.get(0).getObject(),
            "com.smartgwt.client.data.fields.DataSourceBooleanField")).isTrue();
    assertThat(
        ReflectionUtils.isSuccessorOf(
            dsDirectFields.get(1).getObject(),
            "com.smartgwt.client.data.fields.DataSourceDateField")).isTrue();
    //
    AbstractArrayObjectInfo objectFieldsInfo =
        dataSource.getChildren(AbstractArrayObjectInfo.class).get(0);
    assertThat(objectFieldsInfo.getItems().size()).isEqualTo(1);
    assertThat(objectFieldsInfo.getChildren(DataSourceFieldInfo.class).size()).isEqualTo(0);
  }

  /**
   * http://forums.instantiations.com/viewtopic.php?f=11&t=5401
   */
  public void test_parse_anonymous() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  public void onModuleLoad() {",
            "    Calendar calendar = new Calendar();",
            "    DataSource dataSource = new RestDataSource() {};",
            "    calendar.setDataSource(dataSource);",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    assertNoErrors(calendar);
    //
    List<DataSourceInfo> dataSources =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class);
    assertThat(dataSources).isNotEmpty();
    assertThat(calendar.getPropertyByTitle("dataSource").getValue()).isSameAs(
        dataSources.get(0).getObject());
  }

  /**
   * Test for no "destroy()" on dispose DataSource if it is not rendered.
   * <p>
   * Note: no error messages windows must be popped up due this test.
   */
  public void test_noDestroy() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  /**",
            "  *@wbp.nonvisual location=0,0",
            "  */",
            "  private DataSource dataSource = new DataSource();",
            "  public void onModuleLoad() {",
            "    dataSource.setID('DS');",
            "    Calendar calendar = new Calendar();",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    assertNoErrors(calendar);
    JavaInfo dataSource = getJavaInfoByName("dataSource");
    assertNoErrors(dataSource);
    // no error messages must be popped
  }

  /**
   * {@link DataSourceFieldInfo} added before {@link DataSourceInfo} association.
   */
  public void test_addField() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  public void onModuleLoad() {",
            "    Calendar calendar = new Calendar();",
            "    DataSource dataSource = new DataSource();",
            "    calendar.setDataSource(dataSource);",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    //
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // create new DataSourceField
    DataSourceFieldInfo dataSourceField =
        createJavaInfo("com.smartgwt.client.data.fields.DataSourceBooleanField");
    {
      FlowContainer flowContainer = new FlowContainerFactory(dataSource, false).get().get(0);
      assertTrue(flowContainer.validateComponent(dataSourceField));
      flowContainer.command_CREATE(dataSourceField, null);
    }
    assertEditor(
        "public class Test implements EntryPoint {",
        "  public void onModuleLoad() {",
        "    Calendar calendar = new Calendar();",
        "    DataSource dataSource = new DataSource();",
        "    {",
        "      DataSourceBooleanField dataSourceBooleanField = new DataSourceBooleanField('newDSBooleanField_1', 'New BooleanField');",
        "      dataSource.addField(dataSourceBooleanField);",
        "    }",
        "    calendar.setDataSource(dataSource);",
        "    calendar.draw();",
        "  }",
        "}");
  }

  public void test_addField_pseudo() throws Exception {
    CanvasInfo canvas =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  public void onModuleLoad() {",
            "    Canvas canvas = new Canvas();",
            "    DataSource dataSource = new DataSource();",
            "    FilterBuilder filterBuilder = new FilterBuilder();",
            "    filterBuilder.setDataSource(dataSource);",
            "    canvas.addChild(filterBuilder);",
            "    Calendar calendar = new Calendar();",
            "    calendar.setDataSource(dataSource);",
            "    canvas.addChild(calendar);",
            "    canvas.draw();",
            "  }",
            "}"});
    canvas.refresh();
    //
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(canvas).getChildren(DataSourceInfo.class).get(0);
    assertThat(canvas.getChildren(FilterBuilderInfo.class).size()).isEqualTo(1);
    assertThat(canvas.getChildren(CalendarInfo.class).size()).isEqualTo(1);
    // create new DataSourceField
    DataSourceFieldInfo dataSourceField =
        createJavaInfo("com.smartgwt.client.data.fields.DataSourceBooleanField");
    {
      FlowContainer flowContainer = new FlowContainerFactory(dataSource, false).get().get(0);
      assertTrue(flowContainer.validateComponent(dataSourceField));
      flowContainer.command_CREATE(dataSourceField, null);
    }
    assertEditor(
        "public class Test implements EntryPoint {",
        "  public void onModuleLoad() {",
        "    Canvas canvas = new Canvas();",
        "    DataSource dataSource = new DataSource();",
        "    {",
        "      DataSourceBooleanField dataSourceBooleanField = new DataSourceBooleanField('newDSBooleanField_1', 'New BooleanField');",
        "      dataSource.addField(dataSourceBooleanField);",
        "    }",
        "    FilterBuilder filterBuilder = new FilterBuilder();",
        "    filterBuilder.setDataSource(dataSource);",
        "    canvas.addChild(filterBuilder);",
        "    Calendar calendar = new Calendar();",
        "    calendar.setDataSource(dataSource);",
        "    canvas.addChild(calendar);",
        "    canvas.draw();",
        "  }",
        "}");
  }

  ////////////////////////////////////////////////////////////////////////////
  //
  // Tests DataSource_Info#calculateStatementTarget(JavaInfo, Property, List<ASTNode>)
  //
  ////////////////////////////////////////////////////////////////////////////
  public void test_assignmentTarget_1() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  public void onModuleLoad() {",
            "    Calendar calendar = new Calendar();",
            "    DataSource dataSource = new DataSource();",
            "    dataSource.setID('testDS');",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    //
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    assertNull(dataSource.calculateStatementTarget(calendar));
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "  private DataSource dataSource;",
        "  public void onModuleLoad() {",
        "    Calendar calendar = new Calendar();",
        "    calendar.setDataSource(getDataSource());",
        "    calendar.draw();",
        "  }",
        "  private DataSource getDataSource() {",
        "    if (dataSource == null) {",
        "      dataSource = new DataSource();",
        "      dataSource.setID('testDS');",
        "    }",
        "    return dataSource;",
        "  }",
        "}");
  }

  public void test_assignmentTarget_2() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  public void onModuleLoad() {",
            "    DataSource dataSource = new DataSource();",
            "    dataSource.setID('testDS');",
            "    Calendar calendar = new Calendar();",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    //
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    StatementTarget target = dataSource.calculateStatementTarget(calendar);
    assertNotNull(target);
    Statement statement =
        AstNodeUtils.getEnclosingStatement(this.<ASTNode>getNode("new Calendar()"));
    assertTarget(target, null, statement, false);
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "  public void onModuleLoad() {",
        "    DataSource dataSource = new DataSource();",
        "    dataSource.setID('testDS');",
        "    Calendar calendar = new Calendar();",
        "    calendar.setDataSource(dataSource);",
        "    calendar.draw();",
        "  }",
        "}");
  }

  public void test_assignmentTarget_field_1() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "/**",
            "  *@wbp.nonvisual location=0,0",
            "  */",
            "  private DataSource dataSource = new DataSource();",
            "  public void onModuleLoad() {",
            "    Calendar calendar = new Calendar();",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    //
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    assertNull(dataSource.calculateStatementTarget(calendar));
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "/**",
        "  *@wbp.nonvisual location=0,0",
        "  */",
        "  private DataSource dataSource = new DataSource();",
        "  public void onModuleLoad() {",
        "    Calendar calendar = new Calendar();",
        "    calendar.setDataSource(dataSource);",
        "    calendar.draw();",
        "  }",
        "}");
  }

  public void test_assignmentTarget_field_2() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "/**",
            "  *@wbp.nonvisual location=0,0",
            "  */",
            "  private DataSource dataSource = new DataSource();",
            "  private Calendar calendar = new Calendar();",
            "  public void onModuleLoad() {",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    assertNull(dataSource.calculateStatementTarget(calendar));
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "/**",
        "  *@wbp.nonvisual location=0,0",
        "  */",
        "  private DataSource dataSource = new DataSource();",
        "  private Calendar calendar = new Calendar();",
        "  public void onModuleLoad() {",
        "    calendar.setDataSource(dataSource);",
        "    calendar.draw();",
        "  }",
        "}");
  }

  public void test_assignmentTarget_field_3() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "/**",
            "  *@wbp.nonvisual location=0,0",
            "  */",
            "  private DataSource dataSource = new DataSource();",
            "  private Calendar calendar = new Calendar();",
            "  public void onModuleLoad() {",
            "    dataSource.setID('testDS');",
            "    calendar.draw();",
            "  }",
            "}"});
    calendar.refresh();
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    StatementTarget target = dataSource.calculateStatementTarget(calendar);
    assertNotNull(target);
    Statement statement = AstNodeUtils.getEnclosingStatement(this.<ASTNode>getNode("testDS"));
    assertTarget(target, null, statement, false);
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "/**",
        "  *@wbp.nonvisual location=0,0",
        "  */",
        "  private DataSource dataSource = new DataSource();",
        "  private Calendar calendar = new Calendar();",
        "  public void onModuleLoad() {",
        "    dataSource.setID('testDS');",
        "    calendar.setDataSource(dataSource);",
        "    calendar.draw();",
        "  }",
        "}");
  }

  public void test_assignmentTarget_lazy_1() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  private DataSource dataSource;",
            "  public void onModuleLoad() {",
            "    Calendar calendar = new Calendar();",
            "    calendar.draw();",
            "  }",
            "/**",
            "*@wbp.nonvisual location=0,0",
            "*/",
            "  private DataSource getDataSource() {",
            "    if (dataSource == null) {",
            "      dataSource = new DataSource();",
            "      dataSource.setID('testDS');",
            "    }",
            "    return dataSource;",
            "  }",
            "}"});
    calendar.refresh();
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    assertNull(dataSource.calculateStatementTarget(calendar));
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "  private DataSource dataSource;",
        "  public void onModuleLoad() {",
        "    Calendar calendar = new Calendar();",
        "    calendar.setDataSource(getDataSource());",
        "    calendar.draw();",
        "  }",
        "/**",
        "*@wbp.nonvisual location=0,0",
        "*/",
        "  private DataSource getDataSource() {",
        "    if (dataSource == null) {",
        "      dataSource = new DataSource();",
        "      dataSource.setID('testDS');",
        "    }",
        "    return dataSource;",
        "  }",
        "}");
  }

  public void test_assignmentTarget_lazy_2() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  private DataSource dataSource;",
            "  private Calendar calendar = new Calendar();",
            "  public void onModuleLoad() {",
            "    calendar.draw();",
            "  }",
            "/**",
            "*@wbp.nonvisual location=0,0",
            "*/",
            "  private DataSource getDataSource() {",
            "    if (dataSource == null) {",
            "      dataSource = new DataSource();",
            "      dataSource.setID('testDS');",
            "    }",
            "    return dataSource;",
            "  }",
            "}"});
    calendar.refresh();
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    assertNull(dataSource.calculateStatementTarget(calendar));
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "  private DataSource dataSource;",
        "  private Calendar calendar = new Calendar();",
        "  public void onModuleLoad() {",
        "    calendar.setDataSource(getDataSource());",
        "    calendar.draw();",
        "  }",
        "/**",
        "*@wbp.nonvisual location=0,0",
        "*/",
        "  private DataSource getDataSource() {",
        "    if (dataSource == null) {",
        "      dataSource = new DataSource();",
        "      dataSource.setID('testDS');",
        "    }",
        "    return dataSource;",
        "  }",
        "}");
  }

  public void test_assignmentTarget_lazy_3() throws Exception {
    CanvasInfo calendar =
        parseJavaInfo(new String[]{
            "public class Test implements EntryPoint {",
            "  private DataSource dataSource;",
            "  private Calendar calendar = new Calendar();",
            "  public void onModuleLoad() {",
            "    getDataSource().setDataURL('url');",
            "    calendar.draw();",
            "  }",
            "/**",
            "*@wbp.nonvisual location=0,0",
            "*/",
            "  private DataSource getDataSource() {",
            "    if (dataSource == null) {",
            "      dataSource = new DataSource();",
            "      dataSource.setID('testDS');",
            "    }",
            "    return dataSource;",
            "  }",
            "}"});
    calendar.refresh();
    GenericProperty property = (GenericProperty) calendar.getPropertyByTitle("dataSource");
    ObjectPropertyEditor editor = (ObjectPropertyEditor) property.getEditor();
    DataSourceInfo dataSource =
        NonVisualBeanContainerInfo.get(calendar).getChildren(DataSourceInfo.class).get(0);
    // check special target
    StatementTarget target = dataSource.calculateStatementTarget(calendar);
    assertNotNull(target);
    Statement statement = AstNodeUtils.getEnclosingStatement(this.<ASTNode>getNode("url"));
    assertTarget(target, null, statement, false);
    // assign
    editor.setComponent(property, dataSource);
    assertEditor(
        "public class Test implements EntryPoint {",
        "  private DataSource dataSource;",
        "  private Calendar calendar = new Calendar();",
        "  public void onModuleLoad() {",
        "    getDataSource().setDataURL('url');",
        "    calendar.setDataSource(getDataSource());",
        "    calendar.draw();",
        "  }",
        "/**",
        "*@wbp.nonvisual location=0,0",
        "*/",
        "  private DataSource getDataSource() {",
        "    if (dataSource == null) {",
        "      dataSource = new DataSource();",
        "      dataSource.setID('testDS');",
        "    }",
        "    return dataSource;",
        "  }",
        "}");
  }
}
TOP

Related Classes of com.google.gdt.eclipse.designer.smartgwt.model.widgets.DataSourceTest

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.