. */ namespace Tests\Unit\Console\Commands\Correction; use FireflyIII\Models\Preference; use FireflyIII\Repositories\User\UserRepositoryInterface; use Illuminate\Support\Collection; use Log; use Mockery; use Preferences; use Tests\TestCase; /** * Class CreateAccessTokensTest */ class CreateAccessTokensTest extends TestCase { /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\Console\Commands\Correction\CreateAccessTokens */ public function testHandle(): void { $users = new Collection([$this->user()]); $repository = $this->mock(UserRepositoryInterface::class); // mock calls: $repository->shouldReceive('all')->atLeast()->once()->andReturn($users); // mock preferences thing: Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'access_token', null]) ->once()->andReturn(null); // null means user object will generate one and store it. Preferences::shouldReceive('setForUser')->withArgs([Mockery::any(), 'access_token', Mockery::any()]) ->once(); $this->artisan('firefly-iii:create-access-tokens') ->expectsOutput(sprintf('Generated access token for user %s', $this->user()->email)) ->assertExitCode(0); } /** * @covers \FireflyIII\Console\Commands\Correction\CreateAccessTokens */ public function testHandlePrefExists(): void { $users = new Collection([$this->user()]); $repository = $this->mock(UserRepositoryInterface::class); // mock calls: $repository->shouldReceive('all')->atLeast()->once()->andReturn($users); // mock preferences thing: $preference = new Preference; $preference->data = '123'; Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'access_token', null]) ->once()->andReturn($preference); // null means user object will generate one and store it. Preferences::shouldNotReceive('setForUser'); $this->artisan('firefly-iii:create-access-tokens') ->expectsOutput('All access tokens OK!') ->assertExitCode(0); } }