. */ declare(strict_types=1); namespace Tests\Feature\Controllers\Import; use FireflyIII\Import\Prerequisites\FakePrerequisites; use FireflyIII\Models\ImportJob; use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface; use Log; use Mockery; use Tests\TestCase; /** * Class IndexControllerTest * * @SuppressWarnings(PHPMD.TooManyPublicMethods) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class IndexControllerTest extends TestCase { /** * */ public function setUp() { parent::setUp(); Log::debug(sprintf('Now in %s.', \get_class($this))); } /** * @covers \FireflyIII\Http\Controllers\Import\IndexController */ public function testCreateFake(): void { // mock stuff: $repository = $this->mock(ImportJobRepositoryInterface::class); $userRepository = $this->mock(UserRepositoryInterface::class); $fakePrerequisites = $this->mock(FakePrerequisites::class); // fake job: $importJob = new ImportJob; $importJob->provider = 'fake'; $importJob->key = 'fake_job_1'; // mock call: $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(),'demo'])->andReturn(true)->once(); $repository->shouldReceive('create')->withArgs(['fake'])->andReturn($importJob); $fakePrerequisites->shouldReceive('isComplete')->twice()->andReturn(false); $fakePrerequisites->shouldReceive('setUser')->twice(); $this->be($this->user()); $response = $this->get(route('import.create', ['fake'])); $response->assertStatus(302); // expect a redirect to prerequisites $response->assertRedirect(route('import.prerequisites.index', ['fake', 'fake_job_1'])); } /** * @covers \FireflyIII\Http\Controllers\Import\IndexController */ public function testCreateFakeNoPrereq(): void { // mock stuff: $repository = $this->mock(ImportJobRepositoryInterface::class); $fakePrerequisites = $this->mock(FakePrerequisites::class); $userRepository = $this->mock(UserRepositoryInterface::class); // fake job: $importJob = new ImportJob; $importJob->provider = 'fake'; $importJob->key = 'fake_job_2'; // mock call: $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(),'demo'])->andReturn(true)->once(); $repository->shouldReceive('create')->withArgs(['fake'])->andReturn($importJob); $fakePrerequisites->shouldReceive('isComplete')->twice()->andReturn(true); $fakePrerequisites->shouldReceive('setUser')->twice(); $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'has_prereq'])->andReturn($importJob)->once(); $this->be($this->user()); $response = $this->get(route('import.create', ['fake'])); $response->assertStatus(302); // expect a redirect to prerequisites $response->assertRedirect(route('import.job.configuration.index', ['fake_job_2'])); } /** * @covers \FireflyIII\Http\Controllers\Import\IndexController */ public function testIndex(): void { $this->be($this->user()); // fake stuff: $userRepository = $this->mock(UserRepositoryInterface::class); // call methods: $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false); $response = $this->get(route('import.index')); $response->assertStatus(200); $response->assertSee('