diff --git a/app/Console/Commands/Import.php b/app/Console/Commands/Import.php
index 63bf86ada2..d88af868d9 100644
--- a/app/Console/Commands/Import.php
+++ b/app/Console/Commands/Import.php
@@ -77,7 +77,9 @@ class Import extends Command
$handler = new CommandHandler($this);
$monolog->pushHandler($handler);
- $routine = new ImportRoutine($job);
+ /** @var ImportRoutine $routine */
+ $routine = app(ImportRoutine::class);
+ $routine->setJob($job);
$routine->run();
/** @var MessageBag $error */
diff --git a/app/Http/Controllers/ImportController.php b/app/Http/Controllers/ImportController.php
index 07e4418e99..5ac5b6944d 100644
--- a/app/Http/Controllers/ImportController.php
+++ b/app/Http/Controllers/ImportController.php
@@ -243,7 +243,9 @@ class ImportController extends Controller
*/
public function start(ImportJob $job)
{
- $routine = new ImportRoutine($job);
+ /** @var ImportRoutine $routine */
+ $routine = app(ImportRoutine::class);
+ $routine->setJob($job);
$result = $routine->run();
if ($result) {
return Response::json(['run' => 'ok']);
@@ -281,9 +283,12 @@ class ImportController extends Controller
$key = sprintf('firefly.import_configurators.%s', $type);
$className = config($key);
if (is_null($className)) {
- throw new FireflyException('Cannot find configurator class for this job.');
+ throw new FireflyException('Cannot find configurator class for this job.'); // @codeCoverageIgnore
}
- $configurator = new $className($job);
+ /** @var ConfiguratorInterface $configurator */
+ $configurator = app($className);
+ $configurator->setJob($job);
+
return $configurator;
}
diff --git a/app/Import/Configurator/ConfiguratorInterface.php b/app/Import/Configurator/ConfiguratorInterface.php
index 2de21661df..4969109b01 100644
--- a/app/Import/Configurator/ConfiguratorInterface.php
+++ b/app/Import/Configurator/ConfiguratorInterface.php
@@ -22,10 +22,8 @@ interface ConfiguratorInterface
{
/**
* ConfiguratorInterface constructor.
- *
- * @param ImportJob $job
*/
- public function __construct(ImportJob $job);
+ public function __construct();
/**
* Store any data from the $data array into the job.
@@ -36,6 +34,13 @@ interface ConfiguratorInterface
*/
public function configureJob(array $data): bool;
+ /**
+ * @param ImportJob $job
+ *
+ * @return void
+ */
+ public function setJob(ImportJob $job);
+
/**
* Return the data required for the next step in the job configuration.
*
diff --git a/app/Import/Configurator/CsvConfigurator.php b/app/Import/Configurator/CsvConfigurator.php
index b1bfaecb28..ea92d0fcfa 100644
--- a/app/Import/Configurator/CsvConfigurator.php
+++ b/app/Import/Configurator/CsvConfigurator.php
@@ -28,14 +28,11 @@ class CsvConfigurator implements ConfiguratorInterface
{
private $job;
- public function __construct(ImportJob $job)
+ /**
+ * ConfiguratorInterface constructor.
+ */
+ public function __construct()
{
- $this->job = $job;
- if (is_null($this->job->configuration) || count($this->job->configuration) === 0) {
- Log::debug(sprintf('Gave import job %s initial configuration.', $this->job->key));
- $this->job->configuration = config('csv.default_config');
- $this->job->save();
- }
}
/**
@@ -116,6 +113,19 @@ class CsvConfigurator implements ConfiguratorInterface
return false;
}
+ /**
+ * @param ImportJob $job
+ */
+ public function setJob(ImportJob $job)
+ {
+ $this->job = $job;
+ if (is_null($this->job->configuration) || count($this->job->configuration) === 0) {
+ Log::debug(sprintf('Gave import job %s initial configuration.', $this->job->key));
+ $this->job->configuration = config('csv.default_config');
+ $this->job->save();
+ }
+ }
+
/**
* @return string
* @throws FireflyException
diff --git a/app/Import/Routine/ImportRoutine.php b/app/Import/Routine/ImportRoutine.php
index 993a22f101..a9f90ede7a 100644
--- a/app/Import/Routine/ImportRoutine.php
+++ b/app/Import/Routine/ImportRoutine.php
@@ -37,16 +37,23 @@ class ImportRoutine
/**
* ImportRoutine constructor.
*
- * @param ImportJob $job
*/
- public function __construct(ImportJob $job)
+ public function __construct()
{
- $this->job = $job;
$this->journals = new Collection;
$this->errors = new Collection;
Log::debug(sprintf('Job ID is #%d', $job->id));
}
+ /**
+ * @param ImportJob $job
+ */
+ public function setJob(ImportJob $job)
+ {
+ $this->job = $job;
+ }
+
+
/**
*
*/
diff --git a/routes/web.php b/routes/web.php
index 745e68d262..11e3a8c7c6 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -390,7 +390,7 @@ Route::group(
Route::get('download/{importJob}', ['uses' => 'ImportController@download', 'as' => 'download']);
Route::get('status/{importJob}', ['uses' => 'ImportController@status', 'as' => 'status']);
Route::get('json/{importJob}', ['uses' => 'ImportController@json', 'as' => 'json']);
- Route::any('start/{importJob}', ['uses' => 'ImportController@start', 'as' => 'start']);
+ Route::post('start/{importJob}', ['uses' => 'ImportController@start', 'as' => 'start']);
diff --git a/tests/Feature/Controllers/ImportControllerTest.php b/tests/Feature/Controllers/ImportControllerTest.php
index 53f6764260..1473056f64 100644
--- a/tests/Feature/Controllers/ImportControllerTest.php
+++ b/tests/Feature/Controllers/ImportControllerTest.php
@@ -7,19 +7,14 @@
* See the LICENSE file for details.
*/
-declare(strict_types = 1);
+declare(strict_types=1);
namespace Tests\Feature\Controllers;
-use FireflyIII\Import\ImportProcedureInterface;
-use FireflyIII\Import\Setup\CsvSetup;
+use FireflyIII\Import\Configurator\CsvConfigurator;
+use FireflyIII\Import\Routine\ImportRoutine;
use FireflyIII\Models\ImportJob;
-use FireflyIII\Models\Tag;
-use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface;
-use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
-use FireflyIII\Repositories\Tag\TagRepositoryInterface;
-use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Http\UploadedFile;
use Tests\TestCase;
@@ -31,53 +26,20 @@ use Tests\TestCase;
class ImportControllerTest extends TestCase
{
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::complete
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testComplete()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $this->be($this->user());
- $response = $this->get(route('import.complete', ['complete']));
- $response->assertStatus(200);
- $response->assertSee('
');
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::complete
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testCompleteWrongJob()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $this->be($this->user());
- $response = $this->get(route('import.complete', ['configure']));
- $response->assertStatus(302);
- }
-
/**
+ * @covers \FireflyIII\Http\Controllers\ImportController::__construct
* @covers \FireflyIII\Http\Controllers\ImportController::configure
- * @covers \FireflyIII\Http\Controllers\ImportController::makeImporter
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
+ * @covers \FireflyIII\Http\Controllers\ImportController::makeConfigurator
*/
public function testConfigure()
{
- $setup = $this->mock(CsvSetup::class);
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
+ // mock stuff.
+ $configurator = $this->mock(CsvConfigurator::class);
+ $configurator->shouldReceive('setJob')->once();
+ $configurator->shouldReceive('isJobConfigured')->once()->andReturn(false);
+ $configurator->shouldReceive('getNextView')->once()->andReturn('import.csv.initial');
+ $configurator->shouldReceive('getNextData')->andReturn(['specifics' => [], 'delimiters' => [], 'accounts' => []])->once();
- $setup->shouldReceive('setJob')->once();
- $setup->shouldReceive('configure')->once();
- $setup->shouldReceive('getConfigurationData')->andReturn(['specifics' => [], 'delimiters' => [], 'accounts' => []])->once();
$this->be($this->user());
$response = $this->get(route('import.configure', ['configure']));
@@ -86,86 +48,67 @@ class ImportControllerTest extends TestCase
}
/**
+ * @covers \FireflyIII\Http\Controllers\ImportController::__construct
* @covers \FireflyIII\Http\Controllers\ImportController::configure
- * @covers \FireflyIII\Http\Controllers\ImportController::makeImporter
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
+ * @covers \FireflyIII\Http\Controllers\ImportController::makeConfigurator
*/
- public function testConfigureWrongJob()
+ public function testConfigured()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
+ // mock stuff.
+ $configurator = $this->mock(CsvConfigurator::class);
+ $configurator->shouldReceive('setJob')->once();
+ $configurator->shouldReceive('isJobConfigured')->once()->andReturn(true);
$this->be($this->user());
- $response = $this->get(route('import.configure', ['settings']));
+ $response = $this->get(route('import.configure', ['configure']));
$response->assertStatus(302);
+ $response->assertRedirect(route('import.status', ['configure']));
}
-
/**
* @covers \FireflyIII\Http\Controllers\ImportController::download
*/
public function testDownload()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
$this->be($this->user());
$response = $this->get(route('import.download', ['configure']));
$response->assertStatus(200);
- $response->assertJson(
- [
- 'delimiter' => 'tab',
- 'column-roles-complete' => false,
- 'column-mapping-complete' => false,
- ]
- );
}
/**
- * @covers \FireflyIII\Http\Controllers\ImportController::finished
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
+ * @covers \FireflyIII\Http\Controllers\ImportController::index
*/
- public function testFinished()
+ public function testIndex()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
$this->be($this->user());
- $response = $this->get(route('import.finished', ['finished']));
+ $response = $this->get(route('import.index'));
$response->assertStatus(200);
$response->assertSee('');
}
/**
- * @covers \FireflyIII\Http\Controllers\ImportController::finished
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
+ * @covers \FireflyIII\Http\Controllers\ImportController::initialize
*/
- public function testFinishedWrongJob()
+ public function testInitialize()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
+ $repository = $this->mock(ImportJobRepositoryInterface::class);
+ $path = resource_path('stubs/csv.csv');
+ $file = new UploadedFile($path, 'upload.csv', filesize($path), 'text/csv', null, true);
+ $configPath = resource_path('stubs/demo-configuration.json');
+ $configFile = new UploadedFile($path, 'configuration.json', filesize($configPath), 'application/json', null, true);
+ $job = new ImportJob;
+ $job->key = 'hello';
+
+ $repository->shouldReceive('create')->once()->andReturn($job);
+ $repository->shouldReceive('processFile')->once();
+ $repository->shouldReceive('processConfiguration')->once();
+ $repository->shouldReceive('updateStatus')->once();
$this->be($this->user());
- $response = $this->get(route('import.finished', ['configure']));
+ $response = $this->post(route('import.initialize'), ['import_file_type' => 'csv', 'import_file' => $file, 'configuration_file' => $configFile]);
+
$response->assertStatus(302);
- }
-
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::index
- * @covers \FireflyIII\Http\Controllers\ImportController::__construct
- */
- public function testIndex()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $this->be($this->user());
- $response = $this->get(route('import.index'));
- $response->assertStatus(200);
+ $response->assertRedirect(route('import.configure', ['hello']));
}
/**
@@ -173,9 +116,6 @@ class ImportControllerTest extends TestCase
*/
public function testJson()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
$this->be($this->user());
$response = $this->get(route('import.json', ['configure']));
$response->assertStatus(200);
@@ -186,13 +126,6 @@ class ImportControllerTest extends TestCase
*/
public function testJsonFinished()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $tagRepos = $this->mock(TagRepositoryInterface::class);
- $tag = factory(Tag::class)->make();
-
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
- $tagRepos->shouldReceive('find')->once()->andReturn($tag);
-
$this->be($this->user());
$response = $this->get(route('import.json', ['finished']));
$response->assertStatus(200);
@@ -203,9 +136,6 @@ class ImportControllerTest extends TestCase
*/
public function testJsonRunning()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
$this->be($this->user());
$response = $this->get(route('import.json', ['running']));
$response->assertStatus(200);
@@ -213,156 +143,35 @@ class ImportControllerTest extends TestCase
/**
* @covers \FireflyIII\Http\Controllers\ImportController::postConfigure
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
*/
public function testPostConfigure()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $repository = $this->mock(ImportJobRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
+ $configurator = $this->mock(CsvConfigurator::class);
+ $configurator->shouldReceive('setJob')->once();
+ $configurator->shouldReceive('isJobConfigured')->once()->andReturn(false);
+ $configurator->shouldReceive('configureJob')->once()->andReturn(false);
- $importer = $this->mock(CsvSetup::class);
- $importer->shouldReceive('setJob')->once();
- $importer->shouldReceive('saveImportConfiguration')->once();
- $repository->shouldReceive('updateStatus')->once();
- $data = [];
$this->be($this->user());
- $response = $this->post(route('import.process-configuration', ['p-configure']), $data);
+ $response = $this->post(route('import.process-configuration', ['running']));
$response->assertStatus(302);
- $response->assertRedirect(route('import.settings', ['p-configure']));
+ $response->assertRedirect(route('import.configure', ['running']));
}
/**
* @covers \FireflyIII\Http\Controllers\ImportController::postConfigure
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
*/
- public function testPostConfigureWrongJob()
+ public function testPostConfigured()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
+ $configurator = $this->mock(CsvConfigurator::class);
+ $configurator->shouldReceive('setJob')->once();
+ $configurator->shouldReceive('isJobConfigured')->once()->andReturn(true);
+
- $data = [];
$this->be($this->user());
- $response = $this->post(route('import.process-configuration', ['finished']), $data);
+ $response = $this->post(route('import.process-configuration', ['running']));
$response->assertStatus(302);
- $response->assertRedirect(route('import.finished', ['finished']));
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::postSettings
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testPostSettings()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $importer = $this->mock(CsvSetup::class);
- $importer->shouldReceive('setJob')->once();
- $importer->shouldReceive('storeSettings')->once();
-
- $data = [];
- $this->be($this->user());
- $response = $this->post(route('import.post-settings', ['p-settings']), $data);
- $response->assertStatus(302);
- $response->assertRedirect(route('import.settings', ['p-settings']));
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::postSettings
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testPostSettingsWrongJob()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $data = [];
- $this->be($this->user());
- $response = $this->post(route('import.post-settings', ['configure']), $data);
- $response->assertStatus(302);
- $response->assertRedirect(route('import.configure', ['configure']));
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::settings
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testSettings()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $repository = $this->mock(ImportJobRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $importer = $this->mock(CsvSetup::class);
- $importer->shouldReceive('setJob')->once();
- $importer->shouldReceive('requireUserSettings')->once()->andReturn(false);
- $repository->shouldReceive('updateStatus')->once();
-
- $this->be($this->user());
- $response = $this->get(route('import.settings', ['settings']));
- $response->assertStatus(302);
- $response->assertRedirect(route('import.complete', ['settings']));
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::settings
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testSettingsUserSettings()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $importer = $this->mock(CsvSetup::class);
- $importer->shouldReceive('setJob')->once();
- $importer->shouldReceive('requireUserSettings')->once()->andReturn(true);
-
- $importer->shouldReceive('getDataForSettings')->once()->andReturn([]);
- $importer->shouldReceive('getViewForSettings')->once()->andReturn('error');
-
- $this->be($this->user());
- $response = $this->get(route('import.settings', ['settings']));
- $response->assertStatus(200);
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::settings
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testSettingsWrongJob()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $this->be($this->user());
- $response = $this->get(route('import.settings', ['configure']));
- $response->assertStatus(302);
- $response->assertRedirect(route('import.configure', ['configure']));
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::settings
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
- */
- public function testSettingsWrongJobAgain()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- $this->be($this->user());
- $response = $this->get(route('import.settings', ['complete']));
- $response->assertStatus(302);
- $response->assertRedirect(route('import.complete', ['complete']));
+ $response->assertRedirect(route('import.status', ['running']));
}
/**
@@ -370,118 +179,51 @@ class ImportControllerTest extends TestCase
*/
public function testStart()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
+ $importer = $this->mock(ImportRoutine::class);
+ $importer->shouldReceive('setJob')->once();
+ $importer->shouldReceive('run')->once()->andReturn(true);
- /** @var ImportProcedureInterface $procedure */
- $procedure = $this->mock(ImportProcedureInterface::class);
-
- $procedure->shouldReceive('runImport');
$this->be($this->user());
- $response = $this->post(route('import.start', ['complete']));
+ $response = $this->post(route('import.start', ['running']));
$response->assertStatus(200);
}
+ /**
+ * @covers \FireflyIII\Http\Controllers\ImportController::start
+ * @expectedExceptionMessage Job did not complete succesfully.
+ */
+ public function testStartFailed()
+ {
+ $importer = $this->mock(ImportRoutine::class);
+ $importer->shouldReceive('setJob')->once();
+ $importer->shouldReceive('run')->once()->andReturn(false);
+
+
+ $this->be($this->user());
+ $response = $this->post(route('import.start', ['running']));
+ $response->assertStatus(500);
+ }
/**
* @covers \FireflyIII\Http\Controllers\ImportController::status
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
*/
public function testStatus()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- // complete
$this->be($this->user());
- $response = $this->get(route('import.status', ['complete']));
+ $response = $this->get(route('import.status', ['running']));
$response->assertStatus(200);
}
/**
* @covers \FireflyIII\Http\Controllers\ImportController::status
- * @covers \FireflyIII\Http\Controllers\ImportController::jobInCorrectStep
- * @covers \FireflyIII\Http\Controllers\ImportController::redirectToCorrectStep
*/
- public function testStatusWrongJob()
+ public function testStatusNew()
{
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
-
- // complete
$this->be($this->user());
- $response = $this->get(route('import.status', ['configure']));
+ $response = $this->get(route('import.status', ['new']));
$response->assertStatus(302);
- $response->assertRedirect(route('import.configure', ['configure']));
+ $response->assertRedirect(route('import.configure', ['new']));
}
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::upload
- */
- public function testUpload()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $userRepos = $this->mock(UserRepositoryInterface::class);
- $repository = $this->mock(ImportJobRepositoryInterface::class);
- $job = factory(ImportJob::class)->make();
- $journalRepos->shouldReceive('first')->andReturn(new TransactionJournal);
- $userRepos->shouldReceive('hasRole')->andReturn(false);
- $repository->shouldReceive('create')->andReturn($job);
-
- $path = resource_path('stubs/csv.csv');
- $file = new UploadedFile($path, 'upload.csv', filesize($path), 'text/csv', null, true);
- $this->be($this->user());
- $response = $this->post(route('import.upload'), ['import_file_type' => 'csv', 'import_file' => $file]);
-
- $response->assertStatus(302);
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::upload
- */
- public function testUploadDemo()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $userRepos = $this->mock(UserRepositoryInterface::class);
- $repository = $this->mock(ImportJobRepositoryInterface::class);
- $job = factory(ImportJob::class)->make();
-
- $journalRepos->shouldReceive('first')->andReturn(new TransactionJournal);
- $userRepos->shouldReceive('hasRole')->andReturn(true);
- $repository->shouldReceive('create')->andReturn($job);
- $repository->shouldReceive('setConfiguration')->andReturn($job);
-
- $path = resource_path('stubs/csv.csv');
- $file = new UploadedFile($path, 'upload.csv', filesize($path), 'text/csv', null, true);
- $this->be($this->user());
- $response = $this->post(route('import.upload'), ['import_file_type' => 'csv', 'import_file' => $file]);
-
- $response->assertStatus(302);
- }
-
- /**
- * @covers \FireflyIII\Http\Controllers\ImportController::upload
- */
- public function testUploadWithConfig()
- {
- $journalRepos = $this->mock(JournalRepositoryInterface::class);
- $userRepos = $this->mock(UserRepositoryInterface::class);
- $repository = $this->mock(ImportJobRepositoryInterface::class);
- $job = factory(ImportJob::class)->make();
-
- $journalRepos->shouldReceive('first')->andReturn(new TransactionJournal);
- $userRepos->shouldReceive('hasRole')->andReturn(false);
- $repository->shouldReceive('create')->andReturn($job);
-
- $path = resource_path('stubs/csv.csv');
- $file = new UploadedFile($path, 'upload.csv', filesize($path), 'text/csv', null, true);
- $configPath = resource_path('stubs/demo-configuration.json');
- $configFile = new UploadedFile($path, 'configuration.json', filesize($configPath), 'application/json', null, true);
- $this->be($this->user());
- $response = $this->post(route('import.upload'), ['import_file_type' => 'csv', 'import_file' => $file, 'configuration_file' => $configFile]);
-
- $response->assertStatus(302);
- }
}
diff --git a/tests/Feature/Controllers/TagControllerTest.php b/tests/Feature/Controllers/TagControllerTest.php
index 6eb05798a4..48c09391a2 100644
--- a/tests/Feature/Controllers/TagControllerTest.php
+++ b/tests/Feature/Controllers/TagControllerTest.php
@@ -132,6 +132,8 @@ class TagControllerTest extends TestCase
$repository->shouldReceive('lastUseDate')->andReturn(new Carbon)->once();
$repository->shouldReceive('earnedInPeriod')->andReturn('1')->once();
+ $collector->shouldReceive('removeFilter')->andReturnSelf()->times(3);
+
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf()->times(3);
$collector->shouldReceive('setLimit')->andReturnSelf()->times(3);
$collector->shouldReceive('setPage')->andReturnSelf()->times(3);
@@ -165,6 +167,7 @@ class TagControllerTest extends TestCase
$repository->shouldReceive('earnedInPeriod')->andReturn('1')->once();
$repository->shouldReceive('sumOfTag')->andReturn('1')->once();
+ $collector->shouldReceive('removeFilter')->andReturnSelf()->times(3);
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf()->times(3);
$collector->shouldReceive('setLimit')->andReturnSelf()->times(3);
$collector->shouldReceive('setPage')->andReturnSelf()->times(3);
@@ -194,6 +197,7 @@ class TagControllerTest extends TestCase
$journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal);
$repository->shouldReceive('firstUseDate')->andReturn(new Carbon)->once();
+ $collector->shouldReceive('removeFilter')->andReturnSelf()->times(3);
$repository->shouldReceive('sumOfTag')->andReturn('1')->once();
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf()->times(3);
$collector->shouldReceive('setLimit')->andReturnSelf()->times(3);