/**
* Copyright (c) 2014 - 2017 Frank Appel
* 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
*
* Contributors:
* Frank Appel - initial API and implementation
*/
package com.codeaffine.workflow.internal;
import static com.codeaffine.osgi.test.util.ServiceCollector.collectServices;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import com.codeaffine.osgi.test.util.Registration;
import com.codeaffine.osgi.test.util.ServiceRegistrationRule;
import com.codeaffine.workflow.WorkflowService;
import com.codeaffine.workflow.definition.WorkflowDefinition;
import com.codeaffine.workflow.definition.WorkflowDefinitionProvider;
public class WorkflowServiceIntegrationPDETest {
@Rule
public final ServiceRegistrationRule serviceRegistration = new ServiceRegistrationRule( getClass() );
@Test
public void workflowServiceRegistration() {
List<WorkflowService> actual = collectWorkflowServices();
assertThat( actual ).hasSize( 1 );
}
@Test
public void workflowDefinitionProviderRegistration() {
WorkflowDefinitionProvider provider = spy( new TestDefinitionProvider() );
serviceRegistration.register( WorkflowDefinitionProvider.class, provider );
verify( provider ).define( any( WorkflowDefinition.class ) );
}
@Test
public void workflowDefinitionProviderDeregistration() {
WorkflowDefinitionProvider provider = spy( new TestDefinitionProvider() );
Registration<WorkflowDefinitionProvider> registration
= serviceRegistration.register( WorkflowDefinitionProvider.class, provider );
registration.unregister();
WorkflowService workflowService = collectWorkflowServices().get( 0 );
assertThat( workflowService.getWorkflowDefinitionIds() ).hasSize( 0 );
}
private static List<WorkflowService> collectWorkflowServices() {
return collectServices( WorkflowService.class, WorkflowServiceImpl.class );
}
}