$workflow =
new Workflow(['id' => 'test', 'type' => 'test_type'
], 'workflow'
);
// By default states are ordered in the order added.
$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->
assertEquals(['create_new_draft', 'publish'
],
array_keys($workflow->
getTypePlugin()->
getTransitionsForState('draft'
)));
$this->
assertEquals(['create_new_draft'
],
array_keys($workflow->
getTypePlugin()->
getTransitionsForState('draft', 'to'
)));
$this->
assertEquals(['publish', 'archive'
],
array_keys($workflow->
getTypePlugin()->
getTransitionsForState('published'
)));
$this->
assertEquals(['publish'
],
array_keys($workflow->
getTypePlugin()->
getTransitionsForState('published', 'to'
)));
$this->
assertEquals(['create_new_draft'
],
array_keys($workflow->
getTypePlugin()->
getTransitionsForState('archived', 'from'
)));
$this->
assertEquals(['archive'
],
array_keys($workflow->
getTypePlugin()->
getTransitionsForState('archived', 'to'
)));
} /**
* @covers ::getTransitionFromStateToState
* @covers ::hasTransitionFromStateToState
*/