From 194073e49a1bfba793ca846a3402c77ba6f1b51c Mon Sep 17 00:00:00 2001 From: James Cole Date: Tue, 31 Jul 2018 20:39:36 +0200 Subject: [PATCH] Fix tests. --- app/Import/Storage/ImportArrayStorage.php | 4 +- .../Controllers/Admin/UserControllerTest.php | 8 +-- .../Controllers/CurrencyControllerTest.php | 14 ++-- .../Import/IndexControllerTest.php | 66 ++++++++++++++++--- .../Import/Storage/ImportArrayStorageTest.php | 24 +++++-- 5 files changed, 90 insertions(+), 26 deletions(-) diff --git a/app/Import/Storage/ImportArrayStorage.php b/app/Import/Storage/ImportArrayStorage.php index 8d6e4742de..1a736c5acc 100644 --- a/app/Import/Storage/ImportArrayStorage.php +++ b/app/Import/Storage/ImportArrayStorage.php @@ -223,8 +223,8 @@ class ImportArrayStorage { // collect transactions using the journal collector $collector = app(JournalCollectorInterface::class); - $collector->setUser(auth()->user()); - $collector->withOpposingAccount()->withCategoryInformation()->withBudgetInformation(); + $collector->setUser($this->importJob->user); + $collector->withOpposingAccount(); // filter on specific journals. $collector->setJournals(new Collection([$journal])); diff --git a/tests/Feature/Controllers/Admin/UserControllerTest.php b/tests/Feature/Controllers/Admin/UserControllerTest.php index e5a7c24048..70d559ff56 100644 --- a/tests/Feature/Controllers/Admin/UserControllerTest.php +++ b/tests/Feature/Controllers/Admin/UserControllerTest.php @@ -49,7 +49,7 @@ class UserControllerTest extends TestCase { $repository = $this->mock(UserRepositoryInterface::class); $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->once()->andReturn(false); - $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->once()->andReturn(true); + $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); $this->be($this->user()); $response = $this->get(route('admin.users.delete', [1])); $response->assertStatus(200); @@ -80,7 +80,7 @@ class UserControllerTest extends TestCase { $repository = $this->mock(UserRepositoryInterface::class); $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->once()->andReturn(false); - $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->once()->andReturn(true); + $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); $this->be($this->user()); $response = $this->get(route('admin.users.edit', [1])); $response->assertStatus(200); @@ -95,7 +95,7 @@ class UserControllerTest extends TestCase { $repository = $this->mock(UserRepositoryInterface::class); //$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->once()->andReturn(false); - $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); + $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(3)->andReturn(true); $user = $this->user(); $repository->shouldReceive('all')->andReturn(new Collection([$user])); @@ -112,7 +112,7 @@ class UserControllerTest extends TestCase public function testShow(): void { $repository = $this->mock(UserRepositoryInterface::class); - $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->once()->andReturn(true); + $repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); $repository->shouldReceive('getUserData')->andReturn( [ 'export_jobs_success' => 0, diff --git a/tests/Feature/Controllers/CurrencyControllerTest.php b/tests/Feature/Controllers/CurrencyControllerTest.php index 04c11c88bf..e39225964d 100644 --- a/tests/Feature/Controllers/CurrencyControllerTest.php +++ b/tests/Feature/Controllers/CurrencyControllerTest.php @@ -30,7 +30,7 @@ use FireflyIII\Repositories\User\UserRepositoryInterface; use Illuminate\Support\Collection; use Log; use Tests\TestCase; - +use Mockery; /** * Class CurrencyControllerTest * @@ -121,7 +121,7 @@ class CurrencyControllerTest extends TestCase $journalRepos = $this->mock(JournalRepositoryInterface::class); $journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal); - $userRepos->shouldReceive('hasRole')->once()->andReturn(true); + $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); $this->be($this->user()); $response = $this->get(route('currencies.create')); @@ -160,7 +160,7 @@ class CurrencyControllerTest extends TestCase $journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal); $repository->shouldReceive('canDeleteCurrency')->andReturn(true); - $userRepos->shouldReceive('hasRole')->once()->andReturn(true); + $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); $this->be($this->user()); $response = $this->get(route('currencies.delete', [2])); @@ -182,7 +182,7 @@ class CurrencyControllerTest extends TestCase $repository->shouldReceive('canDeleteCurrency')->andReturn(true); $repository->shouldReceive('destroy')->andReturn(true)->once(); $journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal); - $userRepos->shouldReceive('hasRole')->once()->andReturn(true); + $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(1)->andReturn(true); $this->session(['currencies.delete.uri' => 'http://localhost']); $this->be($this->user()); @@ -202,7 +202,7 @@ class CurrencyControllerTest extends TestCase $journalRepos = $this->mock(JournalRepositoryInterface::class); $journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal); - $userRepos->shouldReceive('hasRole')->once()->andReturn(true); + $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); $this->be($this->user()); $response = $this->get(route('currencies.edit', [1])); @@ -227,7 +227,7 @@ class CurrencyControllerTest extends TestCase $journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal); $repository->shouldReceive('getCurrencyByPreference')->andReturn($currencies->first()); $repository->shouldReceive('get')->andReturn($currencies); - $userRepos->shouldReceive('hasRole')->once()->andReturn(true); + $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(true); $this->be($this->user()); $response = $this->get(route('currencies.index')); @@ -250,7 +250,7 @@ class CurrencyControllerTest extends TestCase $journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal); $repository->shouldReceive('getCurrencyByPreference')->andReturn(new TransactionCurrency); $repository->shouldReceive('get')->andReturn(new Collection); - $userRepos->shouldReceive('hasRole')->once()->andReturn(false); + $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->times(2)->andReturn(false); $this->be($this->user()); $response = $this->get(route('currencies.index')); diff --git a/tests/Feature/Controllers/Import/IndexControllerTest.php b/tests/Feature/Controllers/Import/IndexControllerTest.php index 647fb9a528..5a9e2931a0 100644 --- a/tests/Feature/Controllers/Import/IndexControllerTest.php +++ b/tests/Feature/Controllers/Import/IndexControllerTest.php @@ -26,6 +26,7 @@ use FireflyIII\Import\Prerequisites\BunqPrerequisites; use FireflyIII\Import\Prerequisites\FakePrerequisites; use FireflyIII\Import\Prerequisites\FilePrerequisites; use FireflyIII\Import\Prerequisites\SpectrePrerequisites; +use FireflyIII\Import\Prerequisites\YnabPrerequisites; use FireflyIII\Models\ImportJob; use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface; @@ -62,6 +63,7 @@ class IndexControllerTest extends TestCase $fakePrerequisites = $this->mock(FakePrerequisites::class); $bunqPrerequisites = $this->mock(BunqPrerequisites::class); $spectrePrerequisites = $this->mock(SpectrePrerequisites::class); + $ynabPrerequisites = $this->mock(YnabPrerequisites::class); // fake job: $importJob = new ImportJob; @@ -69,12 +71,14 @@ class IndexControllerTest extends TestCase $importJob->key = 'fake_job_1'; // mock calls: + $ynabPrerequisites->shouldReceive('setUser')->once(); $fakePrerequisites->shouldReceive('setUser')->once(); $bunqPrerequisites->shouldReceive('setUser')->once(); $spectrePrerequisites->shouldReceive('setUser')->once(); $fakePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); $bunqPrerequisites->shouldReceive('isComplete')->once()->andReturn(true); $spectrePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); + $ynabPrerequisites->shouldReceive('isComplete')->once()->andReturn(true); $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->once(); @@ -95,6 +99,7 @@ class IndexControllerTest extends TestCase $bunqPrerequisites = $this->mock(BunqPrerequisites::class); $spectrePrerequisites = $this->mock(SpectrePrerequisites::class); $filePrerequisites = $this->mock(FilePrerequisites::class); + $ynabPrerequisites = $this->mock(YnabPrerequisites::class); // fake job: $importJob = new ImportJob; @@ -103,8 +108,19 @@ class IndexControllerTest extends TestCase $importJob->user_id = 1; // mock calls - $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(true)->times(2); + $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(true)->times(3); + + $bunqPrerequisites->shouldReceive('setUser')->times(2); + $bunqPrerequisites->shouldReceive('isComplete')->times(2)->andReturn(false); + + $spectrePrerequisites->shouldReceive('setUser')->times(2); + $spectrePrerequisites->shouldReceive('isComplete')->times(2)->andReturn(false); + + $ynabPrerequisites->shouldReceive('setUser')->times(2); + $ynabPrerequisites->shouldReceive('isComplete')->times(2)->andReturn(false); + $repository->shouldReceive('create')->withArgs(['fake'])->andReturn($importJob); + $fakePrerequisites->shouldReceive('isComplete')->times(3)->andReturn(false); $fakePrerequisites->shouldReceive('setUser')->times(3); @@ -128,6 +144,7 @@ class IndexControllerTest extends TestCase $bunqPrerequisites = $this->mock(BunqPrerequisites::class); $spectrePrerequisites = $this->mock(SpectrePrerequisites::class); $filePrerequisites = $this->mock(FilePrerequisites::class); + $ynabPrerequisites = $this->mock(YnabPrerequisites::class); // fake job: $importJob = new ImportJob; @@ -136,12 +153,25 @@ class IndexControllerTest extends TestCase $importJob->user_id = 1; // mock call: - $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(true)->times(2); - $repository->shouldReceive('create')->withArgs(['fake'])->andReturn($importJob); + $fakePrerequisites->shouldReceive('isComplete')->times(3)->andReturn(true); $fakePrerequisites->shouldReceive('setUser')->times(3); + + $bunqPrerequisites->shouldReceive('isComplete')->times(2)->andReturn(true); + $bunqPrerequisites->shouldReceive('setUser')->times(2); + + $spectrePrerequisites->shouldReceive('isComplete')->times(2)->andReturn(true); + $spectrePrerequisites->shouldReceive('setUser')->times(2); + + $ynabPrerequisites->shouldReceive('isComplete')->times(2)->andReturn(true); + $ynabPrerequisites->shouldReceive('setUser')->times(2); + + + + $repository->shouldReceive('create')->withArgs(['fake'])->andReturn($importJob); $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'has_prereq'])->andReturn($importJob)->once(); + $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(true)->times(3); $this->be($this->user()); $response = $this->get(route('import.create', ['fake'])); @@ -162,23 +192,26 @@ class IndexControllerTest extends TestCase $bunqPrerequisites = $this->mock(BunqPrerequisites::class); $spectrePrerequisites = $this->mock(SpectrePrerequisites::class); $filePrerequisites = $this->mock(FilePrerequisites::class); + $ynabPrerequisites = $this->mock(YnabPrerequisites::class); // fake job: $importJob = new ImportJob; $importJob->provider = 'file'; $importJob->key = 'file_job_1'; - $importJob->user_id =1; + $importJob->user_id = 1; // mock calls $fakePrerequisites->shouldReceive('setUser')->times(2); $bunqPrerequisites->shouldReceive('setUser')->times(2); $spectrePrerequisites->shouldReceive('setUser')->times(2); + $ynabPrerequisites->shouldReceive('setUser')->times(2); $fakePrerequisites->shouldReceive('isComplete')->times(2)->andReturn(true); $bunqPrerequisites->shouldReceive('isComplete')->times(2)->andReturn(true); $spectrePrerequisites->shouldReceive('isComplete')->times(2)->andReturn(true); + $ynabPrerequisites->shouldReceive('isComplete')->times(2)->andReturn(true); - $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->times(2); + $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->times(3); $repository->shouldReceive('create')->withArgs(['file'])->andReturn($importJob); $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'has_prereq'])->andReturn($importJob)->once(); @@ -202,6 +235,7 @@ class IndexControllerTest extends TestCase $bunqPrerequisites = $this->mock(BunqPrerequisites::class); $spectrePrerequisites = $this->mock(SpectrePrerequisites::class); $filePrerequisites = $this->mock(FilePrerequisites::class); + $ynabPrerequisites = $this->mock(YnabPrerequisites::class); $job = new ImportJob; $job->user_id = $this->user()->id; @@ -225,11 +259,13 @@ class IndexControllerTest extends TestCase $fakePrerequisites->shouldReceive('setUser')->times(1); $bunqPrerequisites->shouldReceive('setUser')->times(1); $spectrePrerequisites->shouldReceive('setUser')->times(1); + $ynabPrerequisites->shouldReceive('setUser')->times(1); //$filePrerequisites->shouldReceive('setUser')->times(1); $fakePrerequisites->shouldReceive('isComplete')->times(1)->andReturn(true); $bunqPrerequisites->shouldReceive('isComplete')->times(1)->andReturn(true); $spectrePrerequisites->shouldReceive('isComplete')->times(1)->andReturn(true); + $ynabPrerequisites->shouldReceive('isComplete')->times(1)->andReturn(true); //$filePrerequisites->shouldReceive('isComplete')->times(1)->andReturn(true); $this->be($this->user()); @@ -251,16 +287,21 @@ class IndexControllerTest extends TestCase $bunqPrerequisites = $this->mock(BunqPrerequisites::class); $spectrePrerequisites = $this->mock(SpectrePrerequisites::class); $filePrerequisites = $this->mock(FilePrerequisites::class); + $ynabPrerequisites = $this->mock(YnabPrerequisites::class); // call methods: $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false); + $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(false); $fakePrerequisites->shouldReceive('setUser')->once(); $bunqPrerequisites->shouldReceive('setUser')->once(); $spectrePrerequisites->shouldReceive('setUser')->once(); + $ynabPrerequisites->shouldReceive('setUser')->once(); + $fakePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); $bunqPrerequisites->shouldReceive('isComplete')->once()->andReturn(true); $spectrePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); + $ynabPrerequisites->shouldReceive('isComplete')->once()->andReturn(true); $response = $this->get(route('import.index')); $response->assertStatus(200); @@ -280,13 +321,22 @@ class IndexControllerTest extends TestCase $spectrePrerequisites = $this->mock(SpectrePrerequisites::class); $filePrerequisites = $this->mock(FilePrerequisites::class); $userRepository = $this->mock(UserRepositoryInterface::class); - + $ynabPrerequisites = $this->mock(YnabPrerequisites::class); // call methods: $fakePrerequisites->shouldReceive('setUser')->once(); - $fakePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); - $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(true); + $bunqPrerequisites->shouldReceive('setUser')->once(); + $spectrePrerequisites->shouldReceive('setUser')->once(); + $ynabPrerequisites->shouldReceive('setUser')->once(); + $fakePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); + $bunqPrerequisites->shouldReceive('isComplete')->once()->andReturn(true); + $spectrePrerequisites->shouldReceive('isComplete')->once()->andReturn(true); + $ynabPrerequisites->shouldReceive('isComplete')->once()->andReturn(true); + + + $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(true); + $userRepository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(false); $response = $this->get(route('import.index')); $response->assertStatus(200); diff --git a/tests/Unit/Import/Storage/ImportArrayStorageTest.php b/tests/Unit/Import/Storage/ImportArrayStorageTest.php index 0b8a96b017..396fa42acb 100644 --- a/tests/Unit/Import/Storage/ImportArrayStorageTest.php +++ b/tests/Unit/Import/Storage/ImportArrayStorageTest.php @@ -125,7 +125,8 @@ class ImportArrayStorageTest extends TestCase $journalRepos = $this->mock(JournalRepositoryInterface::class); // mock calls: - $collector->shouldReceive('setUser')->once(); + $collector->shouldReceive('setUser')->times(2); + $repository->shouldReceive('setUser')->once(); $repository->shouldReceive('setStatus')->withAnyArgs(); $ruleRepos->shouldReceive('setUser')->once(); @@ -142,13 +143,20 @@ class ImportArrayStorageTest extends TestCase // mock collector so it will return some transfers: - $collector->shouldReceive('setAllAssetAccounts')->once()->andReturnSelf(); + $collector->shouldReceive('setAllAssetAccounts')->times(1)->andReturnSelf(); $collector->shouldReceive('setTypes')->withArgs([[TransactionType::TRANSFER]])->once()->andReturnSelf(); - $collector->shouldReceive('withOpposingAccount')->once()->andReturnSelf(); + $collector->shouldReceive('withOpposingAccount')->times(2)->andReturnSelf(); $collector->shouldReceive('ignoreCache')->once()->andReturnSelf(); $collector->shouldReceive('removeFilter')->withArgs([InternalTransferFilter::class])->once()->andReturnSelf(); $collector->shouldReceive('getJournals')->andReturn($transferCollection); + // set journals for the return method. + $collector->shouldReceive('setJournals')->andReturnSelf(); + $collector->shouldReceive('addFilter')->andReturnSelf(); + + + + $storage = new ImportArrayStorage; $storage->setImportJob($job); $result = new Collection; @@ -400,6 +408,8 @@ class ImportArrayStorageTest extends TestCase $journalRepos->shouldReceive('store')->once()->andReturn($journal); $journalRepos->shouldReceive('findByHash')->andReturn(null)->times(2); + + $storage = new ImportArrayStorage; $storage->setImportJob($job); $result = new Collection; @@ -455,7 +465,7 @@ class ImportArrayStorageTest extends TestCase $journalRepos = $this->mock(JournalRepositoryInterface::class); // mock calls: - $collector->shouldReceive('setUser')->once(); + $collector->shouldReceive('setUser')->times(2); // twice for transfer $repository->shouldReceive('setUser')->once(); $repository->shouldReceive('setStatus')->withAnyArgs(); $ruleRepos->shouldReceive('setUser')->once(); @@ -471,10 +481,14 @@ class ImportArrayStorageTest extends TestCase $collector->shouldReceive('setAllAssetAccounts')->once()->andReturnSelf(); $collector->shouldReceive('setTypes')->withArgs([[TransactionType::TRANSFER]])->once()->andReturnSelf(); $collector->shouldReceive('ignoreCache')->once()->andReturnSelf(); - $collector->shouldReceive('withOpposingAccount')->once()->andReturnSelf(); + $collector->shouldReceive('withOpposingAccount')->times(2)->andReturnSelf(); $collector->shouldReceive('removeFilter')->withArgs([InternalTransferFilter::class])->once()->andReturnSelf(); $collector->shouldReceive('getJournals')->andReturn($transferCollection); + // set journals for the return method. + $collector->shouldReceive('setJournals')->andReturnSelf(); + $collector->shouldReceive('addFilter')->andReturnSelf(); + $storage = new ImportArrayStorage; $storage->setImportJob($job); $result = new Collection;