package brainslug.flow.execution.node;
import brainslug.flow.definition.Identifier;
import brainslug.flow.execution.token.Token;
import brainslug.flow.execution.token.TokenList;
import brainslug.flow.node.FlowNodeDefinition;
import brainslug.util.Option;
import org.junit.Test;
import static brainslug.util.IdUtil.id;
import static org.assertj.core.api.Assertions.assertThat;
public class FlowNodeExecutionResultTest {
@Test
public void shouldAddTokenRemovalForIncomingTokens() {
// given:
FlowNodeDefinition executedNode = new FlowNodeDefinition<FlowNodeDefinition>().id("node");
FlowNodeExecutionResult flowNodeExecutionResult = new FlowNodeExecutionResult(executedNode);
TokenList flowInstanceTokens = new TokenList();
flowInstanceTokens.add(new Token(id("1"), executedNode.getId(), Option.<Identifier>empty(), id("instance"), false, true));
// when:
flowNodeExecutionResult.withFirstIncomingTokensRemoved(flowInstanceTokens);
// then:
assertThat(flowNodeExecutionResult.getRemovedTokens()).contains(new FlowNodeExecutionResult.TokenRemoval(executedNode.getId(), Option.<Identifier>empty(), 1));
}
}