/*
* 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.kie.workbench.common.screens.server.management.client.widget.config.process;
import org.jboss.errai.ui.client.local.spi.TranslationService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.server.controller.api.model.spec.ContainerSpecKey;
import org.kie.server.controller.api.model.spec.ProcessConfig;
import org.kie.workbench.common.screens.server.management.client.resources.i18n.Constants;
import org.kie.workbench.common.screens.server.management.client.util.ClientMergeMode;
import org.kie.workbench.common.screens.server.management.client.util.ClientRuntimeStrategy;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class ProcessConfigPresenterTest {
@Mock
TranslationService translationService;
@Mock
ProcessConfigPresenter.View view;
@InjectMocks
ProcessConfigPresenter presenter;
@Before
public void setup() {
when( translationService.format( any( String.class ) ) ).thenAnswer( new Answer<String>() {
@Override
public String answer( InvocationOnMock invocation ) throws Throwable {
Object[] args = invocation.getArguments();
return (String) args[ 0 ];
}
} );
when( view.getTranslationService() ).thenReturn( translationService );
}
@Test
public void testInit() {
presenter.init();
verify( view ).init( presenter );
assertEquals( view, presenter.getView() );
}
@Test
public void testClear() {
presenter.clear();
verify( view ).clear();
}
@Test
public void testDisable() {
presenter.disable();
verify( view ).disable();
}
@Test
public void testCancel() {
final ProcessConfig processConfig = new ProcessConfig( ClientRuntimeStrategy.PER_CASE.toString(),
"kBase",
"kSession",
ClientMergeMode.OVERRIDE_ALL.toString() );
presenter.setProcessConfig( processConfig );
presenter.cancel();
verify( view, times( 2 ) ).setContent( ClientRuntimeStrategy.PER_CASE.getValue( translationService ),
processConfig.getKBase(),
processConfig.getKSession(),
ClientMergeMode.OVERRIDE_ALL.getValue( translationService ) );
}
@Test
public void testSetup() {
final ContainerSpecKey containerSpecKey = new ContainerSpecKey();
final ProcessConfig processConfig = new ProcessConfig( ClientRuntimeStrategy.PER_CASE.toString(), "kBase", "kSession", ClientMergeMode.KEEP_ALL.toString() );
presenter.setup( containerSpecKey, processConfig );
verify( view ).setContent( ClientRuntimeStrategy.PER_CASE.getValue( translationService ),
processConfig.getKBase(),
processConfig.getKSession(),
ClientMergeMode.convert( processConfig.getMergeMode(), translationService ).getValue( translationService ) );
assertEquals( containerSpecKey, presenter.getContainerSpecKey() );
assertEquals( processConfig, presenter.getProcessConfig() );
presenter.clear();
assertNull( presenter.getContainerSpecKey() );
assertNull( presenter.getProcessConfig() );
}
@Test
public void testBuildProcessConfig() {
when( view.getRuntimeStrategy() ).thenReturn( "a" );
when( view.getKBase() ).thenReturn( "b" );
when( view.getKSession() ).thenReturn( "c" );
when( view.getMergeMode() ).thenReturn( "d" );
final ProcessConfig processConfig = presenter.buildProcessConfig();
assertEquals( "SINGLETON", processConfig.getRuntimeStrategy() );
assertEquals( "b", processConfig.getKBase() );
assertEquals( "c", processConfig.getKSession() );
assertEquals( "KEEP_ALL", processConfig.getMergeMode() );
}
@Test
public void testBuildProcessConfig2() {
when( view.getRuntimeStrategy() ).thenReturn( Constants.ClientRuntimeStrategy_PerProcessInstance );
when( view.getKBase() ).thenReturn( "b" );
when( view.getKSession() ).thenReturn( "c" );
when( view.getMergeMode() ).thenReturn( Constants.ClientMergeMode_MergeCollections );
final ProcessConfig processConfig = presenter.buildProcessConfig();
assertEquals( "PER_PROCESS_INSTANCE", processConfig.getRuntimeStrategy() );
assertEquals( "b", processConfig.getKBase() );
assertEquals( "c", processConfig.getKSession() );
assertEquals( "MERGE_COLLECTIONS", processConfig.getMergeMode() );
}
}