/**
* 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.persistence;
import static com.codeaffine.workflow.WorkflowContext.VARIABLE_SERVICE;
import static com.codeaffine.workflow.test.util.PersistenceTestHelper.VALUE;
import static com.codeaffine.workflow.test.util.PersistenceTestHelper.VAR_LIST;
import static com.codeaffine.workflow.test.util.PersistenceTestHelper.VAR_RESULT;
import static com.codeaffine.workflow.test.util.PersistenceTestHelper.VAR_STRING;
import static com.codeaffine.workflow.test.util.PersistenceTestHelper.createNodeLoader;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.junit.Test;
import com.codeaffine.workflow.Workflow;
import com.codeaffine.workflow.WorkflowService;
import com.codeaffine.workflow.test.util.PersistenceTestHelper;
import com.codeaffine.workflow.test.util.PersistenceTestTask;
import com.codeaffine.workflow.test.util.TestClassFinder;
@SuppressWarnings( "unchecked" )
public class DefaultPersistenceTest {
private static final List<String> LIST_VALUE = createListVariable( VALUE );
@Test
public void saveAndRestore() {
PersistenceTestHelper serializer = createTestHelper();
Workflow workflow = serializer.createWorkflow();
workflow.defineVariable( VAR_STRING, VALUE );
workflow.defineVariable( VAR_LIST, LIST_VALUE );
workflow.start();
UUID token = serializer.acquireAssignment();
PersistenceTestHelper deserializer = createTestHelper();
deserializer.deserialize( serializer.serialize() );
PersistenceTestTask task = deserializer.getTask();
boolean actualIsCompleted = task.complete( token );
String actualStringVariable = task.getContext().getVariableValue( VAR_RESULT );
List<String> actualListVariable = task.getContext().getVariableValue( VAR_LIST );
WorkflowService actualService = task.getContext().getVariableValue( VARIABLE_SERVICE );
assertThat( actualService).isNotNull();
assertThat( actualIsCompleted ).isTrue();
assertThat( actualStringVariable ).isEqualTo( VALUE );
assertThat( actualListVariable )
.isEqualTo( LIST_VALUE )
.isNotSameAs( LIST_VALUE );
}
private static List<String> createListVariable( String element ) {
List<String> result = new ArrayList<String>();
result.add( element );
return result;
}
private static PersistenceTestHelper createTestHelper() {
PersistenceTestHelper result = new PersistenceTestHelper();
DefaultPersistence defaultPersistence = new DefaultPersistence( result, createNodeLoader(), new TestClassFinder() );
result.setPersistence( defaultPersistence );
return result;
}
}