/*
* 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.popovers.definitions;
import java.util.concurrent.atomic.AtomicBoolean;
import org.drools.workbench.models.datamodel.oracle.DataType;
import org.drools.workbench.models.guided.dtable.shared.model.ActionSetFieldCol52;
import org.drools.workbench.models.guided.dtable.shared.model.BaseColumn;
import org.drools.workbench.models.guided.dtable.shared.model.RowNumberCol52;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class ActionSetFieldCol52DefinitionBuilderTest extends BaseColumnDefinitionBuilderTest {
@Override
protected ColumnDefinitionBuilder getBuilder() {
return new ActionSetFieldCol52DefinitionBuilder( serviceCaller );
}
@Test
public void checkColumnType() {
assertEquals( ActionSetFieldCol52.class,
builder.getSupportedColumnType() );
}
@Test
public void unknownColumnTypeDoesNotTriggerBuilder() {
final BaseColumn column = new RowNumberCol52();
builder.generateDefinition( dtPresenter,
column,
( String definition ) -> {
fail( "RowNumberCol52 should not be handled by ActionSetFieldCol52DefinitionBuilder" );
} );
}
@Test
public void simpleActionSetField() {
final AtomicBoolean calledBack = new AtomicBoolean( false );
setupPatternAndCondition();
final ActionSetFieldCol52 asf = new ActionSetFieldCol52();
asf.setBoundName( "$p" );
asf.setFactField( "name" );
model.getActionCols().add( asf );
when( dmo.getFieldType( eq( "Person" ),
eq( "name" ) ) ).thenReturn( DataType.TYPE_STRING );
builder.generateDefinition( dtPresenter,
asf,
( String definition ) -> {
calledBack.set( true );
assertEquals( "$p.setName( \"x\" );",
definition );
} );
assertTrue( calledBack.get() );
}
@Test
public void simpleActionUpdateField() {
final AtomicBoolean calledBack = new AtomicBoolean( false );
setupPatternAndCondition();
final ActionSetFieldCol52 asf = new ActionSetFieldCol52();
asf.setBoundName( "$p" );
asf.setFactField( "name" );
asf.setUpdate( true );
model.getActionCols().add( asf );
when( dmo.getFieldType( eq( "Person" ),
eq( "name" ) ) ).thenReturn( DataType.TYPE_STRING );
builder.generateDefinition( dtPresenter,
asf,
( String definition ) -> {
calledBack.set( true );
assertEquals( "modify( $p ) {<br/>" +
"setName( \"x\" )<br/>" +
"}",
definition );
} );
assertTrue( calledBack.get() );
}
}