. */ declare(strict_types=1); namespace Tests\Feature\Controllers\Import; use FireflyIII\Import\Prerequisites\BunqPrerequisites; use FireflyIII\Import\Prerequisites\FakePrerequisites; use FireflyIII\Import\Prerequisites\SpectrePrerequisites; use FireflyIII\Models\ImportJob; use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; 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); $fakePrerequisites = $this->mock(FakePrerequisites::class); // fake job: $importJob = new ImportJob; $importJob->provider = 'fake'; $importJob->key = 'fake_job_1'; // mock call: $repository->shouldReceive('create')->withArgs(['fake'])->andReturn($importJob); $fakePrerequisites->shouldReceive('isComplete')->once()->andReturn(false); $fakePrerequisites->shouldReceive('setUser')->once(); $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); // fake job: $importJob = new ImportJob; $importJob->provider = 'fake'; $importJob->key = 'fake_job_2'; // mock call: $repository->shouldReceive('create')->withArgs(['fake'])->andReturn($importJob); $fakePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); $fakePrerequisites->shouldReceive('setUser')->once(); $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'])); } public function testIndex(): void { $this->be($this->user()); // fake prerequisites providers: $fake = $this->mock(FakePrerequisites::class); $bunq = $this->mock(BunqPrerequisites::class); $spectre = $this->mock(SpectrePrerequisites::class); // call methods: $fake->shouldReceive('setUser')->once(); $bunq->shouldReceive('setUser')->once(); $spectre->shouldReceive('setUser')->once(); $fake->shouldReceive('isComplete')->once()->andReturn(true); $bunq->shouldReceive('isComplete')->once()->andReturn(true); $spectre->shouldReceive('isComplete')->once()->andReturn(true); $response = $this->get(route('import.index')); $response->assertStatus(200); $response->assertSee('