Package org.drools.guvnor.client.asseteditor.drools.modeldriven.ui.templates

Source Code of org.drools.guvnor.client.asseteditor.drools.modeldriven.ui.templates.TemplateDropDownManagerTests

/*
* Copyright 2012 JBoss Inc
*
* 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.guvnor.client.asseteditor.drools.modeldriven.ui.templates;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.JarInputStream;

import org.drools.guvnor.client.widgets.drools.decoratedgrid.CellValue;
import org.drools.guvnor.client.widgets.drools.decoratedgrid.data.DynamicData;
import org.drools.ide.common.client.modeldriven.SuggestionCompletionEngine;
import org.drools.ide.common.client.modeldriven.brl.ActionFieldValue;
import org.drools.ide.common.client.modeldriven.brl.ActionInsertFact;
import org.drools.ide.common.client.modeldriven.brl.BaseSingleFieldConstraint;
import org.drools.ide.common.client.modeldriven.brl.FactPattern;
import org.drools.ide.common.client.modeldriven.brl.IAction;
import org.drools.ide.common.client.modeldriven.brl.IPattern;
import org.drools.ide.common.client.modeldriven.brl.SingleFieldConstraint;
import org.drools.ide.common.client.modeldriven.brl.templates.TemplateModel;
import org.drools.ide.common.server.rules.SuggestionCompletionLoader;
import org.drools.lang.dsl.DSLTokenizedMappingFile;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import com.google.gwt.cell.client.Cell.Context;

public class TemplateDropDownManagerTests {

    private DynamicData                data;
    private TemplateModel              model;
    private TemplateDropDownManager    manager;
    private SuggestionCompletionEngine sce;

    @Before
    public void setup() {

        //---Setup model---
        model = new TemplateModel();

        //Setup LHS
        model.lhs = new IPattern[3];

        //Both fields are Template Keys
        FactPattern fp0 = new FactPattern();
        fp0.setFactType( "FT0" );

        SingleFieldConstraint sfc0p0 = new SingleFieldConstraint();
        sfc0p0.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        sfc0p0.setFieldBinding( "$sfc0p0" );
        sfc0p0.setFactType( "FT0" );
        sfc0p0.setFieldName( "sfc0p0" );
        sfc0p0.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        sfc0p0.setOperator( "==" );
        sfc0p0.setValue( "sfc0p0Value" );
        fp0.addConstraint( sfc0p0 );

        SingleFieldConstraint sfc1p0 = new SingleFieldConstraint();
        sfc1p0.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        sfc1p0.setFieldBinding( "$sfc1p0" );
        sfc1p0.setFactType( "FT0" );
        sfc1p0.setFieldName( "sfc1p0" );
        sfc1p0.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        sfc1p0.setOperator( "==" );
        sfc1p0.setValue( "sfc1p0Value" );
        fp0.addConstraint( sfc1p0 );

        model.lhs[0] = fp0;

        //One field is a Template Key the other is a literal
        FactPattern fp1 = new FactPattern();
        fp1.setFactType( "FT1" );

        SingleFieldConstraint sfc0p1 = new SingleFieldConstraint();
        sfc0p1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        sfc0p1.setFieldBinding( "$sfc0p1" );
        sfc0p1.setFactType( "FT1" );
        sfc0p1.setFieldName( "sfc0p1" );
        sfc0p1.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        sfc0p1.setOperator( "==" );
        sfc0p1.setValue( "sfc0p1Value" );
        fp1.addConstraint( sfc0p1 );

        SingleFieldConstraint sfc1p1 = new SingleFieldConstraint();
        sfc1p1.setConstraintValueType( BaseSingleFieldConstraint.TYPE_LITERAL );
        sfc1p1.setFieldBinding( "$sfc1p1" );
        sfc1p1.setFactType( "FT1" );
        sfc1p1.setFieldName( "sfc1p1" );
        sfc1p1.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        sfc1p1.setOperator( "==" );
        sfc1p1.setValue( "sfc1p1Value" );
        fp1.addConstraint( sfc1p1 );

        model.lhs[1] = fp1;

        //Dependent enumerations
        FactPattern fp2 = new FactPattern();
        fp2.setFactType( "Fact" );

        SingleFieldConstraint sfc0p2 = new SingleFieldConstraint();
        sfc0p2.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        sfc0p2.setFieldBinding( "$sfc0p2" );
        sfc0p2.setFactType( "Fact" );
        sfc0p2.setFieldName( "field1" );
        sfc0p2.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        sfc0p2.setOperator( "==" );
        sfc0p2.setValue( "enum1" );
        fp2.addConstraint( sfc0p2 );

        SingleFieldConstraint sfc1p2 = new SingleFieldConstraint();
        sfc1p2.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        sfc1p2.setFieldBinding( "$sfc1p2" );
        sfc1p2.setFactType( "Fact" );
        sfc1p2.setFieldName( "field2" );
        sfc1p2.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        sfc1p2.setOperator( "==" );
        sfc1p2.setValue( "enum2" );
        fp2.addConstraint( sfc1p2 );

        SingleFieldConstraint sfc2p2 = new SingleFieldConstraint();
        sfc2p2.setConstraintValueType( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        sfc2p2.setFieldBinding( "$sfc2p2" );
        sfc2p2.setFactType( "Fact" );
        sfc2p2.setFieldName( "field3" );
        sfc2p2.setFieldType( SuggestionCompletionEngine.TYPE_STRING );
        sfc2p2.setOperator( "==" );
        sfc2p2.setValue( "enum3" );
        fp2.addConstraint( sfc2p2 );

        model.lhs[2] = fp2;

        //Setup RHS
        model.rhs = new IAction[2];

        //Both fields are Template Keys
        ActionInsertFact aif0 = new ActionInsertFact( "AIF0" );
        ActionFieldValue aif0f0 = new ActionFieldValue( "AIF0F0",
                                                        "AIF0F0Value",
                                                        SuggestionCompletionEngine.TYPE_STRING );
        aif0f0.setNature( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        aif0.addFieldValue( aif0f0 );
        ActionFieldValue aif0f1 = new ActionFieldValue( "AIF0F1",
                                                        "AIF0F1Value",
                                                        SuggestionCompletionEngine.TYPE_STRING );
        aif0f1.setNature( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        aif0.addFieldValue( aif0f1 );
        model.rhs[0] = aif0;

        //Dependent enumerations
        ActionInsertFact aif1 = new ActionInsertFact( "Fact" );
        ActionFieldValue aif1f0 = new ActionFieldValue( "field1",
                                                        "AIF1F0Value",
                                                        SuggestionCompletionEngine.TYPE_STRING );
        aif1f0.setNature( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        aif1.addFieldValue( aif1f0 );
        ActionFieldValue aif1f1 = new ActionFieldValue( "field2",
                                                        "AIF1F1Value",
                                                        SuggestionCompletionEngine.TYPE_STRING );
        aif1f1.setNature( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        aif1.addFieldValue( aif1f1 );
        ActionFieldValue aif1f2 = new ActionFieldValue( "field3",
                                                        "AIF1F2Value",
                                                        SuggestionCompletionEngine.TYPE_STRING );
        aif1f2.setNature( BaseSingleFieldConstraint.TYPE_TEMPLATE );
        aif1.addFieldValue( aif1f2 );
        model.rhs[1] = aif1;

        //---Setup data---
        data = new DynamicData();
        data.addRow();
        data.addRow();
        data.addColumn( 0,
                        makeColumnData( new String[]{"r0c0", "r1c0"} ),
                        true );
        data.addColumn( 1,
                        makeColumnData( new String[]{"r0c1", "r1c1"} ),
                        true );
        data.addColumn( 2,
                        makeColumnData( new String[]{"r0c2", "r1c2"} ),
                        true );
        data.addColumn( 3,
                        makeColumnData( new String[]{"val1", "val1"} ),
                        true );
        data.addColumn( 4,
                        makeColumnData( new String[]{"val1a", "val1b"} ),
                        true );
        data.addColumn( 5,
                        makeColumnData( new String[]{"val1a1", "val1b1"} ),
                        true );
        data.addColumn( 6,
                        makeColumnData( new String[]{"r0c3", "r1c3"} ),
                        true );
        data.addColumn( 7,
                        makeColumnData( new String[]{"r0c4", "r1c4"} ),
                        true );
        data.addColumn( 8,
                        makeColumnData( new String[]{"val1", "val1"} ),
                        true );
        data.addColumn( 9,
                        makeColumnData( new String[]{"val1a", "val1b"} ),
                        true );
        data.addColumn( 10,
                        makeColumnData( new String[]{"val1a1", "val1b1"} ),
                        true );

        //---Setup SCE---
        SuggestionCompletionLoader loader = new SuggestionCompletionLoader();

        List<String> enums = new ArrayList<String>();
        final String enumDefinition = "'Fact.field1' : ['val1', 'val2'], "
                                      + "'Fact.field2[field1=val1]' : ['val1a', 'val1b'], "
                                      + "'Fact.field3[field2=val1a]' : ['val1a1', 'val1a2'], "
                                      + "'Fact.field3[field2=val1b]' : ['val1b1', 'val1b2']";
        enums.add( enumDefinition );

        sce = loader.getSuggestionEngine( "",
                                          new ArrayList<JarInputStream>(),
                                          new ArrayList<DSLTokenizedMappingFile>(),
                                          enums );

        //---Setup manager---
        manager = new TemplateDropDownManager( model,
                                               data,
                                               sce );
    }

    private List<CellValue< ? extends Comparable< ? >>> makeColumnData(final String[] values) {
        final List<CellValue< ? extends Comparable< ? >>> columnData = new ArrayList<CellValue< ? extends Comparable< ? >>>();
        for ( String value : values ) {
            columnData.add( new CellValue<String>( value ) );
        }
        return columnData;
    }

    @Test
    public void testConstraints() {
        Context context;
        Map<String, String> values;

        //Row 0, Column 0
        context = new Context( 0,
                               0,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "sfc0p0" ) );
        assertNotNull( values.get( "sfc0p0" ) );
        assertEquals( "r0c0",
                      values.get( "sfc0p0" ) );

        assertTrue( values.containsKey( "sfc1p0" ) );
        assertNotNull( values.get( "sfc1p0" ) );
        assertEquals( "r0c1",
                      values.get( "sfc1p0" ) );

        //Row 1, Column 0
        context = new Context( 1,
                               0,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "sfc0p0" ) );
        assertNotNull( values.get( "sfc0p0" ) );
        assertEquals( "r1c0",
                      values.get( "sfc0p0" ) );

        assertTrue( values.containsKey( "sfc1p0" ) );
        assertNotNull( values.get( "sfc1p0" ) );
        assertEquals( "r1c1",
                      values.get( "sfc1p0" ) );

        //Row 0, Column 1
        context = new Context( 0,
                               1,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "sfc0p0" ) );
        assertNotNull( values.get( "sfc0p0" ) );
        assertEquals( "r0c0",
                      values.get( "sfc0p0" ) );

        assertTrue( values.containsKey( "sfc1p0" ) );
        assertNotNull( values.get( "sfc1p0" ) );
        assertEquals( "r0c1",
                      values.get( "sfc1p0" ) );

        //Row 1, Column 1
        context = new Context( 1,
                               1,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "sfc0p0" ) );
        assertNotNull( values.get( "sfc0p0" ) );
        assertEquals( "r1c0",
                      values.get( "sfc0p0" ) );

        assertTrue( values.containsKey( "sfc1p0" ) );
        assertNotNull( values.get( "sfc1p0" ) );
        assertEquals( "r1c1",
                      values.get( "sfc1p0" ) );

        //Row 0, Column 2
        context = new Context( 0,
                               2,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "sfc0p1" ) );
        assertNotNull( values.get( "sfc0p1" ) );
        assertEquals( "r0c2",
                      values.get( "sfc0p1" ) );

        assertTrue( values.containsKey( "sfc1p1" ) );
        assertNotNull( values.get( "sfc1p1" ) );
        assertEquals( "sfc1p1Value",
                      values.get( "sfc1p1" ) );

        //Row 1, Column 2
        context = new Context( 1,
                               2,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "sfc0p1" ) );
        assertNotNull( values.get( "sfc0p1" ) );
        assertEquals( "r1c2",
                      values.get( "sfc0p1" ) );

        assertTrue( values.containsKey( "sfc1p1" ) );
        assertNotNull( values.get( "sfc1p1" ) );
        assertEquals( "sfc1p1Value",
                      values.get( "sfc1p1" ) );
    }

    @Test
    public void testActions() {
        Context context;
        Map<String, String> values;

        //Row 0, Column 6
        context = new Context( 0,
                               6,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "AIF0F0" ) );
        assertNotNull( values.get( "AIF0F0" ) );
        assertEquals( "r0c3",
                      values.get( "AIF0F0" ) );

        assertTrue( values.containsKey( "AIF0F1" ) );
        assertNotNull( values.get( "AIF0F1" ) );
        assertEquals( "r0c4",
                      values.get( "AIF0F1" ) );

        //Row 1, Column 6
        context = new Context( 1,
                               6,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "AIF0F0" ) );
        assertNotNull( values.get( "AIF0F0" ) );
        assertEquals( "r1c3",
                      values.get( "AIF0F0" ) );

        assertTrue( values.containsKey( "AIF0F1" ) );
        assertNotNull( values.get( "AIF0F1" ) );
        assertEquals( "r1c4",
                      values.get( "AIF0F1" ) );

        //Row 0, Column 7
        context = new Context( 0,
                               7,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "AIF0F0" ) );
        assertNotNull( values.get( "AIF0F0" ) );
        assertEquals( "r0c3",
                      values.get( "AIF0F0" ) );

        assertTrue( values.containsKey( "AIF0F1" ) );
        assertNotNull( values.get( "AIF0F1" ) );
        assertEquals( "r0c4",
                      values.get( "AIF0F1" ) );

        //Row 1, Column 7
        context = new Context( 1,
                               7,
                               null );
        values = manager.getCurrentValueMap( context );
        assertNotNull( values );
        assertEquals( 2,
                      values.size() );

        assertTrue( values.containsKey( "AIF0F0" ) );
        assertNotNull( values.get( "AIF0F0" ) );
        assertEquals( "r1c3",
                      values.get( "AIF0F0" ) );

        assertTrue( values.containsKey( "AIF0F1" ) );
        assertNotNull( values.get( "AIF0F1" ) );
        assertEquals( "r1c4",
                      values.get( "AIF0F1" ) );
    }

    @Test
    public void testConstraintsEnumDependencies() {

        Context context;
        Set<Integer> columns;

        context = new Context( 0,
                               3,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 2,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 4 ) ) );
        assertTrue( columns.contains( new Integer( 5 ) ) );

        context = new Context( 0,
                               4,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 1,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 5 ) ) );
    }

    @Test
    public void testActionsEnumDependencies() {

        Context context;
        Set<Integer> columns;

        context = new Context( 0,
                               8,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 2,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 9 ) ) );
        assertTrue( columns.contains( new Integer( 10 ) ) );

        context = new Context( 0,
                               9,
                               null );
        columns = manager.getDependentColumnIndexes( context );
        assertNotNull( columns );
        assertEquals( 1,
                      columns.size() );
        assertTrue( columns.contains( new Integer( 10 ) ) );
    }

}
TOP

Related Classes of org.drools.guvnor.client.asseteditor.drools.modeldriven.ui.templates.TemplateDropDownManagerTests

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.