$workflow ->
getTypePlugin() ->
addState('draft', 'Draft'
) ->
addState('published', 'Published'
) ->
addState('archived', 'Archived'
) ->
addTransition('create_new_draft', 'Create new draft',
['archived', 'draft'
], 'draft'
) ->
addTransition('publish', 'Publish',
['draft', 'published'
], 'published'
) ->
addTransition('archive', 'Archive',
['published'
], 'archived'
);
$this->
assertTrue($workflow->
getTypePlugin()->
hasTransitionFromStateToState('draft', 'published'
));
$this->
assertFalse($workflow->
getTypePlugin()->
hasTransitionFromStateToState('archived', 'archived'
));
$transition =
$workflow->
getTypePlugin()->
getTransitionFromStateToState('published', 'archived'
);
$this->
assertEquals('Archive',
$transition->
label());
} /**
* @covers ::getTransitionFromStateToState
*/
public function testGetTransitionFromStateToStateException() { $this->
expectException(\InvalidArgumentException::
class);
$this->
expectExceptionMessage("The transition from 'archived' to 'archived' does not exist in workflow."
);
$workflow =
new Workflow(['id' => 'test', 'type' => 'test_type'
], 'workflow'
);
// By default states are ordered in the order added.