<?php

$I = new FunctionalTester($scenario);
$I->wantTo('see an error if the workflow to create already exists');
$I->runArtisan('workflow:create registerUser');
$I->seeInShellOutput('Workflow created successfully.');
$I->runArtisan('workflow:create registerUser');
$I->seeInShellOutput('The workflow [RegisterUser] already exists.');
$I->clearWorkflow('RegisterUser');
<?php

$I = new FunctionalTester($scenario);
$I->wantTo('delete a workflow keeping its files');
$I->runArtisan('workflow:create publishPost -a Notifier');
$I->runArtisan('workflow:create banUser -a Logger');
$I->runArtisan('workflow:delete banUser');
$I->seeJob('BanUserJob');
$I->seeRequest('BanUserRequest');
$I->seePipe('BanUser/Logger');
$I->seeJob('PublishPostJob');
$I->seeRequest('PublishPostRequest');
$I->seePipe('PublishPost/Notifier');
$I->seeInWorkflows('Delete/workflows.stub');
$I->seeInShellOutput('Workflow deleted successfully.');
$I->clearWorkflow('BanUser');
<?php

$I = new FunctionalTester($scenario);
$I->wantTo('update an existing workflow');
$I->runArtisan('workflow:create loginUser -a Notifier');
$I->runArtisan('workflow:create registerUser -a "Notifier Logger"');
$I->runArtisan('workflow:update registerUser -a Buzzer -d Notifier');
$I->seePipe('LoginUser/Notifier');
$I->seePipe('RegisterUser/Notifier');
// because --force is not set
$I->seeInPipe('RegisterUser/Buzzer', 'Update/Buzzer.stub');
$I->seePipe('RegisterUser/Logger');
$I->seeInWorkflows('Update/workflows.stub');
$I->seeInShellOutput('Workflow updated successfully.');
$I->clearWorkflow('LoginUser');
$I->clearWorkflow('RegisterUser');
<?php

$I = new FunctionalTester($scenario);
$I->wantTo('create an unguarded workflow');
$I->runArtisan('workflow:create IndexPosts -u');
$I->dontSeeRequest('IndexPostsRequest');
$I->seeInJob('IndexPostsJob', 'Unguarded/IndexPostsJob.stub');
$I->seeInShellOutput('Job created successfully.');
$I->dontSeeInShellOutput('Request created successfully.');
$I->seeInWorkflows('Unguarded/workflows.stub');
$I->seeInShellOutput('Workflow created successfully.');
$I->clearWorkflow('IndexPosts');
<?php

$I = new FunctionalTester($scenario);
$I->wantTo('create a workflow with many pipes');
$I->runArtisan('workflow:create registerUser -a "Notifier Logger"');
$I->seeInJob('RegisterUserJob', 'ManyPipes/RegisterUserJob.stub');
$I->seeInRequest('RegisterUserRequest', 'ManyPipes/RegisterUserRequest.stub');
$I->seeInPipe('RegisterUser/Notifier', 'ManyPipes/Notifier.stub');
$I->seeInPipe('RegisterUser/Logger', 'ManyPipes/Logger.stub');
$I->seeInWorkflows('ManyPipes/workflows.stub');
$I->seeInShellOutput('Job created successfully.');
$I->seeInShellOutput('Request created successfully.');
$I->seeInShellOutput('Pipe created successfully.');
$I->seeInShellOutput('Workflow created successfully.');
$I->clearWorkflow('RegisterUser');
<?php

$I = new FunctionalTester($scenario);
$I->wantTo('see an error if the workflow to read does not exist');
$I->runArtisan('workflow:read unknown');
$I->seeInShellOutput('The workflow [Unknown] does not exist.');
<?php

$I = new FunctionalTester($scenario);
$I->wantTo('create a new user from the command line');
$I->runShellCommand('php artisan create:user superadmin@email.com "Super Admin" --admin');
$I->seeInShellOutput('User created');
$I->seeInDatabase('users', ['email' => '*****@*****.**', 'rights' => '["admin"]']);