/* * Copyright 2016 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.drools.workbench.screens.guided.dtable.client.widget.table.model.converters.column.impl; import java.util.ArrayList; import com.ait.lienzo.test.LienzoMockitoTestRunner; import org.drools.workbench.models.datamodel.oracle.DataType; import org.drools.workbench.models.guided.dtable.shared.model.ActionInsertFactCol52; import org.drools.workbench.models.guided.dtable.shared.model.ActionSetFieldCol52; import org.drools.workbench.models.guided.dtable.shared.model.AttributeCol52; import org.drools.workbench.models.guided.dtable.shared.model.BaseColumn; import org.drools.workbench.models.guided.dtable.shared.model.CompositeColumn; import org.drools.workbench.models.guided.dtable.shared.model.ConditionCol52; import org.drools.workbench.models.guided.dtable.shared.model.DescriptionCol52; import org.drools.workbench.models.guided.dtable.shared.model.GuidedDecisionTable52; import org.drools.workbench.models.guided.dtable.shared.model.MetadataCol52; import org.drools.workbench.models.guided.dtable.shared.model.Pattern52; import org.drools.workbench.models.guided.dtable.shared.model.RowNumberCol52; import org.drools.workbench.screens.guided.dtable.client.widget.table.GuidedDecisionTableModellerView; import org.drools.workbench.screens.guided.dtable.client.widget.table.GuidedDecisionTablePresenter; import org.drools.workbench.screens.guided.dtable.client.widget.table.GuidedDecisionTableView; import org.drools.workbench.screens.guided.dtable.client.widget.table.columns.BaseUiColumn; import org.drools.workbench.screens.guided.dtable.client.widget.table.model.converters.column.GridWidgetColumnFactory; import org.drools.workbench.screens.guided.rule.client.editor.RuleAttributeWidget; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.workbench.common.widgets.client.datamodel.AsyncPackageDataModelOracle; import org.mockito.Mock; import org.uberfire.ext.wires.core.grids.client.model.GridColumn; import org.uberfire.ext.wires.core.grids.client.widget.layer.GridLayer; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @RunWith(LienzoMockitoTestRunner.class) public class GridWidgetColumnFactoryImplTest extends BaseConverterTest { @Mock private GuidedDecisionTable52 model; @Mock private AsyncPackageDataModelOracle oracle; @Mock private GuidedDecisionTableView.Presenter dtPresenter; @Mock private GuidedDecisionTableModellerView dtModellerView; @Mock private GuidedDecisionTableModellerView.Presenter dtModellerPresenter; @Mock private GridLayer gridLayer; private GridWidgetColumnFactory factory; private GuidedDecisionTablePresenter.Access access; @Before public void setup() { super.setup(); factory = new GridWidgetColumnFactoryImpl(); factory.setConverters(getConverters()); when(model.getHitPolicy()).thenReturn(GuidedDecisionTable52.HitPolicy.NONE); access = new GuidedDecisionTablePresenter.Access(); } @Override protected GuidedDecisionTable52 getModel() { return model; } @Override protected AsyncPackageDataModelOracle getOracle() { return oracle; } @Override protected GuidedDecisionTableView.Presenter getPresenter() { when(dtPresenter.getModellerPresenter()).thenReturn(dtModellerPresenter); when(dtModellerPresenter.getView()).thenReturn(dtModellerView); when(dtModellerView.getGridLayerView()).thenReturn(gridLayer); return dtPresenter; } @Test public void columnResizingListenerSetup_RowNumberColumn() { final BaseColumn column = new RowNumberCol52(); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertFalse(uiColumn instanceof BaseUiColumn); assertEquals((int) uiColumn.getWidth(), column.getWidth()); assertEquals(50.0, column.getWidth(), 0.0); } @Test public void columnResizingListenerSetup_DescriptionColumn() { final BaseColumn column = new DescriptionCol52(); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertTrue(uiColumn instanceof BaseUiColumn); assertEquals((int) uiColumn.getWidth(), column.getWidth()); assertEquals(150.0, column.getWidth(), 0.0); uiColumn.setWidth(200.0); assertEquals(200, column.getWidth()); } @Test public void columnResizingListenerSetup_MetadataColumn() { final MetadataCol52 column = new MetadataCol52(); column.setMetadata("metadata"); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertTrue(uiColumn instanceof BaseUiColumn); assertEquals((int) uiColumn.getWidth(), column.getWidth()); uiColumn.setWidth(200.0); assertEquals(200, column.getWidth()); } @Test public void columnResizingListenerSetup_AttributeColumn() { final AttributeCol52 column = new AttributeCol52(); column.setAttribute(RuleAttributeWidget.SALIENCE_ATTR); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertTrue(uiColumn instanceof BaseUiColumn); assertEquals((int) uiColumn.getWidth(), column.getWidth()); uiColumn.setWidth(200.0); assertEquals(200, column.getWidth()); } @Test public void columnResizingListenerSetup_ConditionColumn() { final Pattern52 pattern = mock(Pattern52.class); final ConditionCol52 column = new ConditionCol52(); column.setFactField("MyField"); column.setHeader("MyColumn"); when(model.getPattern(eq(column))).thenReturn(pattern); when(pattern.getFactType()).thenReturn("MyFact"); when(oracle.getFieldType("MyFact", "MyField")).thenReturn(DataType.TYPE_STRING); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertTrue(uiColumn instanceof BaseUiColumn); assertEquals((int) uiColumn.getWidth(), column.getWidth()); uiColumn.setWidth(200.0); assertEquals(200, column.getWidth()); } @Test public void columnResizingListenerSetup_ActionSetFieldColumn() { final Pattern52 pattern = mock(Pattern52.class); final ActionSetFieldCol52 column = new ActionSetFieldCol52(); column.setFactField("MyField"); column.setHeader("MyColumn"); column.setBoundName("$f"); when(model.getConditions()).thenReturn(new ArrayList<CompositeColumn<? extends BaseColumn>>() {{ add(pattern); }}); when(pattern.getFactType()).thenReturn("MyFact"); when(pattern.getBoundName()).thenReturn("$f"); when(pattern.isBound()).thenReturn(true); when(oracle.getFieldType("MyFact", "MyField")).thenReturn(DataType.TYPE_STRING); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertTrue(uiColumn instanceof BaseUiColumn); assertEquals((int) uiColumn.getWidth(), column.getWidth()); uiColumn.setWidth(200.0); assertEquals(200, column.getWidth()); } @Test public void columnResizingListenerSetup_ActionInsertFactColumn() { final ActionInsertFactCol52 column = new ActionInsertFactCol52(); column.setFactType("MyFact"); column.setFactField("MyField"); column.setHeader("MyColumn"); when(oracle.getFieldType("MyFact", "MyField")).thenReturn(DataType.TYPE_STRING); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertTrue(uiColumn instanceof BaseUiColumn); assertEquals((int) uiColumn.getWidth(), column.getWidth()); uiColumn.setWidth(200.0); assertEquals(200, column.getWidth()); } @Test public void testHiddenColumn_ConditionColumn() { final Pattern52 pattern = mock(Pattern52.class); final ConditionCol52 column = new ConditionCol52(); column.setFactField("MyField"); column.setHeader("MyColumn"); column.setHideColumn(true); when(model.getPattern(eq(column))).thenReturn(pattern); when(pattern.getFactType()).thenReturn("MyFact"); when(oracle.getFieldType("MyFact", "MyField")).thenReturn(DataType.TYPE_STRING); final GridColumn<?> uiColumn = factory.convertColumn(column, access, gridWidget); assertEquals(false, uiColumn.isVisible()); } }