Improve test coverage.

This commit is contained in:
James Cole
2019-07-24 19:02:41 +02:00
parent 226e2f7185
commit ee95606ec0
39 changed files with 378 additions and 234 deletions

View File

@@ -221,6 +221,7 @@ class AutoCompleteController extends Controller
/** /**
* @param Request $request * @param Request $request
* @return JsonResponse * @return JsonResponse
* @codeCoverageIgnore
*/ */
public function budgets(Request $request): JsonResponse public function budgets(Request $request): JsonResponse
{ {
@@ -251,6 +252,7 @@ class AutoCompleteController extends Controller
/** /**
* @param Request $request * @param Request $request
* @return JsonResponse * @return JsonResponse
* @codeCoverageIgnore
*/ */
public function currencyNames(Request $request): JsonResponse public function currencyNames(Request $request): JsonResponse
{ {

View File

@@ -161,10 +161,10 @@ class CategoryController extends Controller
$sum[$categoryId] = (float)$row['spent']; $sum[$categoryId] = (float)$row['spent'];
} }
array_multisort($sum, SORT_ASC, $report); array_multisort($sum, SORT_ASC, $report);
// @codeCoverageIgnoreStart
try { try {
$result = view('reports.partials.categories', compact('report'))->render(); $result = view('reports.partials.categories', compact('report'))->render();
$cache->store($result); $cache->store($result);
// @codeCoverageIgnoreStart
} catch (Throwable $e) { } catch (Throwable $e) {
Log::error(sprintf('Could not render category::expenses: %s', $e->getMessage())); Log::error(sprintf('Could not render category::expenses: %s', $e->getMessage()));
$result = sprintf('An error prevented Firefly III from rendering: %s. Apologies.', $e->getMessage()); $result = sprintf('An error prevented Firefly III from rendering: %s. Apologies.', $e->getMessage());

View File

@@ -1,90 +0,0 @@
<?php
/**
* SingleController.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
*
* This file is part of Firefly III.
*
* Firefly III is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Firefly III is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Http\Controllers\Transaction;
use Carbon\Carbon;
use FireflyIII\Events\StoredTransactionGroup;
use FireflyIII\Events\UpdatedTransactionGroup;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Attachments\AttachmentHelperInterface;
use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Http\Requests\JournalFormRequest;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionJournalMeta;
use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Support\Http\Controllers\ModelInformation;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Log;
use View;
/**
* Class SingleController.
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class SingleController extends Controller
{
use ModelInformation;
/** @var AttachmentHelperInterface The attachment helper. */
private $attachments;
/** @var BudgetRepositoryInterface The budget repository */
private $budgets;
/** @var JournalRepositoryInterface Journals and transactions overview */
private $repository;
/**
* SingleController constructor.
*/
public function __construct()
{
throw new FireflyException('Do not use me.');
parent::__construct();
$maxFileSize = app('steam')->phpBytes(ini_get('upload_max_filesize'));
$maxPostSize = app('steam')->phpBytes(ini_get('post_max_size'));
$uploadSize = min($maxFileSize, $maxPostSize);
app('view')->share('uploadSize', $uploadSize);
// some useful repositories:
$this->middleware(
function ($request, $next) {
$this->budgets = app(BudgetRepositoryInterface::class);
$this->attachments = app(AttachmentHelperInterface::class);
$this->repository = app(JournalRepositoryInterface::class);
app('view')->share('title', (string)trans('firefly.transactions'));
app('view')->share('mainTitleIcon', 'fa-repeat');
return $next($request);
}
);
}
}

View File

@@ -30,23 +30,6 @@ namespace FireflyIII\Support\Http\Controllers;
trait BasicDataSupport trait BasicDataSupport
{ {
/**
* Sum up an array.
*
* @param array $array
*
* @return string
*/
protected function arraySum(array $array): string // filter + group data
{
$sum = '0';
foreach ($array as $entry) {
$sum = bcadd($sum, $entry);
}
return $sum;
}
/** /**
* Filters empty results from getBudgetPeriodReport. * Filters empty results from getBudgetPeriodReport.
* *

View File

@@ -236,6 +236,7 @@ trait ChartGeneration
$chartData[1]['entries'][$label] = round($earned, 12); $chartData[1]['entries'][$label] = round($earned, 12);
$chartData[2]['entries'][$label] = round($sum, 12); $chartData[2]['entries'][$label] = round($sum, 12);
// @codeCoverageIgnoreStart
switch ($step) { switch ($step) {
default: default:
case '1D': case '1D':
@@ -251,6 +252,7 @@ trait ChartGeneration
$start->addYear(); $start->addYear();
break; break;
} }
// @codeCoverageIgnoreEnd
} }
$data = $generator->multiSet($chartData); $data = $generator->multiSet($chartData);

View File

@@ -155,8 +155,7 @@ trait UserNavigation
$url = app('url')->previous(); $url = app('url')->previous();
session()->put($identifier, $url); session()->put($identifier, $url);
//Log::debug(sprintf('Will put previous URI in cache under key %s: %s', $identifier, $url)); //Log::debug(sprintf('Will put previous URI in cache under key %s: %s', $identifier, $url));
//return;
return;
} }
//Log::debug(sprintf('The users session contains errors somehow so we will not remember the URI!: %s', var_export($errors, true))); //Log::debug(sprintf('The users session contains errors somehow so we will not remember the URI!: %s', var_export($errors, true)));
} }

View File

@@ -125,15 +125,15 @@ class ShowControllerTest extends TestCase
$this->session(['start' => $date, 'end' => clone $date]); $this->session(['start' => $date, 'end' => clone $date]);
// mock stuff: // mock stuff:
$this->mock(AccountTaskerInterface::class); $this->mock(AccountTaskerInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$this->mock(CurrencyRepositoryInterface::class); $this->mock(CurrencyRepositoryInterface::class);
$this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$repository = $this->mock(AccountRepositoryInterface::class); $repository = $this->mock(AccountRepositoryInterface::class);
$journal = $this->getRandomWithdrawalAsArray(); $journal = $this->getRandomWithdrawalAsArray();
$group = $this->getRandomWithdrawalGroup(); $group = $this->getRandomWithdrawalGroup();
$euro = $this->getEuro(); $euro = $this->getEuro();
$asset = $this->getRandomAsset(); $asset = $this->getRandomAsset();
$this->mockDefaultSession(); $this->mockDefaultSession();

View File

@@ -50,7 +50,7 @@ class ConfigurationControllerTest extends TestCase
public function testIndex(): void public function testIndex(): void
{ {
$this->mockDefaultSession(); $this->mockDefaultSession();
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
// for session // for session

View File

@@ -28,8 +28,8 @@ use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Mockery; use Mockery;
use Tests\TestCase;
use Preferences; use Preferences;
use Tests\TestCase;
/** /**
* Class LinkControllerTest * Class LinkControllerTest
@@ -85,7 +85,7 @@ class LinkControllerTest extends TestCase
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->atLeast()->once(); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->atLeast()->once();
$linkType = LinkType::where('editable', 1)->first(); $linkType = LinkType::where('editable', 1)->first();
$another= LinkType::where('editable', 0)->first(); $another = LinkType::where('editable', 0)->first();
$repository->shouldReceive('get')->once()->andReturn(new Collection([$linkType, $another])); $repository->shouldReceive('get')->once()->andReturn(new Collection([$linkType, $another]));
$repository->shouldReceive('countJournals')->andReturn(2); $repository->shouldReceive('countJournals')->andReturn(2);
$this->be($this->user()); $this->be($this->user());
@@ -100,9 +100,9 @@ class LinkControllerTest extends TestCase
*/ */
public function testDeleteNonEditable(): void public function testDeleteNonEditable(): void
{ {
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$this->mock(LinkTypeRepositoryInterface::class); $this->mock(LinkTypeRepositoryInterface::class);
$linkType = LinkType::where('editable', 0)->first(); $linkType = LinkType::where('editable', 0)->first();
// mock default session stuff // mock default session stuff
$this->mockDefaultSession(); $this->mockDefaultSession();
@@ -216,7 +216,7 @@ class LinkControllerTest extends TestCase
*/ */
public function testShow(): void public function testShow(): void
{ {
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$repository = $this->mock(LinkTypeRepositoryInterface::class); $repository = $this->mock(LinkTypeRepositoryInterface::class);
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(true)->atLeast()->once(); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(true)->atLeast()->once();
@@ -327,7 +327,7 @@ class LinkControllerTest extends TestCase
*/ */
public function testUpdateNonEditable(): void public function testUpdateNonEditable(): void
{ {
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$this->mock(LinkTypeRepositoryInterface::class); $this->mock(LinkTypeRepositoryInterface::class);
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(true)->atLeast()->once(); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(true)->atLeast()->once();

View File

@@ -60,8 +60,8 @@ class UpdateControllerTest extends TestCase
$this->mockDefaultSession(); $this->mockDefaultSession();
// mock update calls. // mock update calls.
$config = new Configuration; $config = new Configuration;
$config->data = -1; $config->data = -1;
FireflyConfig::shouldReceive('get')->withArgs(['permission_update_check', -1])->once()->andReturn($config); FireflyConfig::shouldReceive('get')->withArgs(['permission_update_check', -1])->once()->andReturn($config);
// call service // call service

View File

@@ -51,7 +51,6 @@ class TwoFactorControllerTest extends TestCase
$this->be($this->user()); $this->be($this->user());
$truePref = new Preference; $truePref = new Preference;
$truePref->data = true; $truePref->data = true;
$secretPreference = new Preference; $secretPreference = new Preference;

View File

@@ -27,11 +27,8 @@ use FireflyIII\Helpers\Attachments\AttachmentHelperInterface;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Models\Bill; use FireflyIII\Models\Bill;
use FireflyIII\Models\Preference; use FireflyIII\Models\Preference;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use FireflyIII\TransactionRules\TransactionMatcher; use FireflyIII\TransactionRules\TransactionMatcher;
use FireflyIII\Transformers\BillTransformer; use FireflyIII\Transformers\BillTransformer;
@@ -175,7 +172,9 @@ class BillControllerTest extends TestCase
$transformer->shouldReceive('setParameters')->atLeast()->once(); $transformer->shouldReceive('setParameters')->atLeast()->once();
$transformer->shouldReceive('transform')->atLeast()->once()->andReturn( $transformer->shouldReceive('transform')->atLeast()->once()->andReturn(
['id' => 5, 'active' => true, 'name' => 'x', 'next_expected_match' => '2018-01-01'] ['id' => 5, 'active' => true, 'name' => 'x', 'next_expected_match' => '2018-01-01',
'currency' => $this->getEuro(),
]
); );
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(true)->atLeast()->once(); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->andReturn(true)->atLeast()->once();

View File

@@ -28,9 +28,7 @@ use Amount;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\BudgetLimit; use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log; use Log;
use Preferences; use Preferences;
use Tests\TestCase; use Tests\TestCase;

View File

@@ -24,7 +24,6 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Budget; namespace Tests\Feature\Controllers\Budget;
use FireflyIII\Models\Budget;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Log; use Log;

View File

@@ -23,10 +23,7 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Budget; namespace Tests\Feature\Controllers\Budget;
use FireflyIII\Models\Budget;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Log; use Log;
use Mockery; use Mockery;

View File

@@ -23,25 +23,27 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Budget; namespace Tests\Feature\Controllers\Budget;
use Amount;
use Carbon\Carbon; use Carbon\Carbon;
use Exception;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\Budget; use FireflyIII\Models\Budget;
use FireflyIII\Models\Preference; use FireflyIII\Models\Preference;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Mockery; use Mockery;
use Preferences; use Preferences;
use Amount;
use Tests\TestCase; use Tests\TestCase;
/** /**
* *
* Class IndexControllerTest * Class IndexControllerTest
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/ */
class IndexControllerTest extends TestCase class IndexControllerTest extends TestCase
{ {
@@ -63,7 +65,7 @@ class IndexControllerTest extends TestCase
public function testIndex(string $range): void public function testIndex(string $range): void
{ {
// mock stuff // mock stuff
$budget = $this->getRandomBudget(); $budget = $this->getRandomBudget();
$budgetLimit = $this->getRandomBudgetLimit(); $budgetLimit = $this->getRandomBudgetLimit();
$budgetLimit->start_date = Carbon::now()->startOfMonth(); $budgetLimit->start_date = Carbon::now()->startOfMonth();
$budgetLimit->end_date = Carbon::now()->endOfMonth(); $budgetLimit->end_date = Carbon::now()->endOfMonth();
@@ -100,7 +102,7 @@ class IndexControllerTest extends TestCase
$this->be($this->user()); $this->be($this->user());
$this->changeDateRange($this->user(), $range); $this->changeDateRange($this->user(), $range);
$response = $this->get(route('budgets.index')); $response = $this->get(route('budgets.index'));
$response->assertStatus(200); $response->assertStatus(200);
// has bread crumb // has bread crumb
$response->assertSee('<ol class="breadcrumb">'); $response->assertSee('<ol class="breadcrumb">');
@@ -111,6 +113,7 @@ class IndexControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testIndexOutOfRange(string $range): void public function testIndexOutOfRange(string $range): void
{ {
@@ -170,6 +173,7 @@ class IndexControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testIndexWithDate(string $range): void public function testIndexWithDate(string $range): void
{ {
@@ -225,6 +229,7 @@ class IndexControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testIndexWithInvalidDate(string $range): void public function testIndexWithInvalidDate(string $range): void
{ {
@@ -233,8 +238,8 @@ class IndexControllerTest extends TestCase
// set budget limit to current month: // set budget limit to current month:
$budgetLimit->start_date = Carbon::now()->startOfMonth(); $budgetLimit->start_date = Carbon::now()->startOfMonth();
$budgetLimit->end_date = Carbon::now()->endOfMonth(); $budgetLimit->end_date = Carbon::now()->endOfMonth();
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$this->mock(UserRepositoryInterface::class); $this->mock(UserRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;

View File

@@ -29,10 +29,8 @@ use Exception;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\Preference; use FireflyIII\Models\Preference;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -44,7 +42,9 @@ use Tests\TestCase;
/** /**
* *
* Class ShowControllerTest * Class ShowControllerTest
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
* @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/ */
class ShowControllerTest extends TestCase class ShowControllerTest extends TestCase
{ {
@@ -71,7 +71,9 @@ class ShowControllerTest extends TestCase
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = null;
$this->mockDefaultSession(); $this->mockDefaultSession();
try { try {
$date = new Carbon; $date = new Carbon;
} catch (Exception $e) { } catch (Exception $e) {
@@ -118,6 +120,7 @@ class ShowControllerTest extends TestCase
$this->mock(BudgetRepositoryInterface::class); $this->mock(BudgetRepositoryInterface::class);
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$date = null;
$this->mockDefaultSession(); $this->mockDefaultSession();
try { try {
$date = new Carbon; $date = new Carbon;

View File

@@ -23,10 +23,7 @@ namespace Tests\Feature\Controllers\Category;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Log; use Log;
use Mockery; use Mockery;
@@ -75,7 +72,7 @@ class CreateControllerTest extends TestCase
{ {
Log::debug('Test store()'); Log::debug('Test store()');
$repository = $this->mock(CategoryRepositoryInterface::class); $repository = $this->mock(CategoryRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $this->mock(UserRepositoryInterface::class);
$this->mockDefaultSession(); $this->mockDefaultSession();
$repository->shouldReceive('findNull')->andReturn(new Category); $repository->shouldReceive('findNull')->andReturn(new Category);
$repository->shouldReceive('store')->andReturn(new Category); $repository->shouldReceive('store')->andReturn(new Category);

View File

@@ -51,8 +51,8 @@ class DeleteControllerTest extends TestCase
{ {
Log::debug('Test Delete()'); Log::debug('Test Delete()');
// mock stuff // mock stuff
$categoryRepos = $this->mock(CategoryRepositoryInterface::class); $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$this->mockDefaultSession(); $this->mockDefaultSession();
@@ -74,7 +74,7 @@ class DeleteControllerTest extends TestCase
Log::debug('Test destroy()'); Log::debug('Test destroy()');
// mock stuff // mock stuff
$categoryRepos = $this->mock(CategoryRepositoryInterface::class); $categoryRepos = $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$this->mockDefaultSession(); $this->mockDefaultSession();
Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs();
$categoryRepos->shouldReceive('destroy')->andReturn(true); $categoryRepos->shouldReceive('destroy')->andReturn(true);

View File

@@ -23,10 +23,8 @@ namespace Tests\Feature\Controllers\Category;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Log; use Log;
use Mockery; use Mockery;
@@ -79,8 +77,8 @@ class EditControllerTest extends TestCase
Log::debug('Test update()'); Log::debug('Test update()');
$category = Category::first(); $category = Category::first();
$repository = $this->mock(CategoryRepositoryInterface::class); $repository = $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $this->mock(UserRepositoryInterface::class);
$this->mockDefaultSession(); $this->mockDefaultSession();
Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs();

View File

@@ -23,7 +23,6 @@ namespace Tests\Feature\Controllers\Category;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Models\Category;
use FireflyIII\Models\Preference; use FireflyIII\Models\Preference;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;

View File

@@ -25,27 +25,27 @@ namespace Tests\Feature\Controllers\Category;
use Carbon\Carbon; use Carbon\Carbon;
use Exception;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\Preference; use FireflyIII\Models\Preference;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
use Log; use Log;
use Mockery; use Mockery;
use Navigation; use Navigation;
use Preferences; use Preferences;
use Tests\TestCase; use Tests\TestCase;
/** /**
* *
* Class NoCategoryControllerTest * Class NoCategoryControllerTest
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
*/ */
class NoCategoryControllerTest extends TestCase class NoCategoryControllerTest extends TestCase
{ {
@@ -68,8 +68,8 @@ class NoCategoryControllerTest extends TestCase
public function testNoCategory(string $range): void public function testNoCategory(string $range): void
{ {
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$categoryRepos = $this->mock(CategoryRepositoryInterface::class); $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$this->mockDefaultSession(); $this->mockDefaultSession();
@@ -104,13 +104,13 @@ class NoCategoryControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* * @throws Exception
*/ */
public function testNoCategoryAll(string $range): void public function testNoCategoryAll(string $range): void
{ {
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$categoryRepos = $this->mock(CategoryRepositoryInterface::class); $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
@@ -146,12 +146,13 @@ class NoCategoryControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testNoCategoryDate(string $range): void public function testNoCategoryDate(string $range): void
{ {
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$categoryRepos = $this->mock(CategoryRepositoryInterface::class); $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;

View File

@@ -25,16 +25,10 @@ namespace Tests\Feature\Controllers\Category;
use Carbon\Carbon; use Carbon\Carbon;
use Exception;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\Preference; use FireflyIII\Models\Preference;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -44,9 +38,13 @@ use Navigation;
use Preferences; use Preferences;
use Tests\TestCase; use Tests\TestCase;
/** /**
* *
* Class ShowControllerTest * Class ShowControllerTest
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
*/ */
class ShowControllerTest extends TestCase class ShowControllerTest extends TestCase
{ {
@@ -65,6 +63,7 @@ class ShowControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testShow(string $range): void public function testShow(string $range): void
{ {
@@ -91,14 +90,14 @@ class ShowControllerTest extends TestCase
$collector->shouldReceive('setPage')->andReturnSelf()->once(); $collector->shouldReceive('setPage')->andReturnSelf()->once();
$collector->shouldReceive('setLimit')->andReturnSelf()->once(); $collector->shouldReceive('setLimit')->andReturnSelf()->once();
$collector->shouldReceive('setRange')->andReturnSelf()->atLeast(2); $collector->shouldReceive('setRange')->andReturnSelf()->atLeast()->times(2);
$collector->shouldReceive('withBudgetInformation')->andReturnSelf()->once(); $collector->shouldReceive('withBudgetInformation')->andReturnSelf()->once();
$collector->shouldReceive('withCategoryInformation')->andReturnSelf()->once(); $collector->shouldReceive('withCategoryInformation')->andReturnSelf()->once();
$collector->shouldReceive('withAccountInformation')->andReturnSelf()->once(); $collector->shouldReceive('withAccountInformation')->andReturnSelf()->once();
$collector->shouldReceive('setCategory')->andReturnSelf()->atLeast(2); $collector->shouldReceive('setCategory')->andReturnSelf()->atLeast()->times(2);
$collector->shouldReceive('getPaginatedGroups')->andReturn(new LengthAwarePaginator([$withdrawal], 0, 10))->once(); $collector->shouldReceive('getPaginatedGroups')->andReturn(new LengthAwarePaginator([$withdrawal], 0, 10))->once();
$collector->shouldReceive('setTypes')->andReturnSelf()->atLeast(1); $collector->shouldReceive('setTypes')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('getExtractedJournals')->andReturn([])->atLeast()->once(); $collector->shouldReceive('getExtractedJournals')->andReturn([])->atLeast()->once();
Navigation::shouldReceive('updateStartDate')->andReturn(new Carbon); Navigation::shouldReceive('updateStartDate')->andReturn(new Carbon);
@@ -120,6 +119,7 @@ class ShowControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testShowAll(string $range): void public function testShowAll(string $range): void
{ {
@@ -142,7 +142,7 @@ class ShowControllerTest extends TestCase
$collector->shouldReceive('withBudgetInformation')->andReturnSelf()->once(); $collector->shouldReceive('withBudgetInformation')->andReturnSelf()->once();
$collector->shouldReceive('withCategoryInformation')->andReturnSelf()->once(); $collector->shouldReceive('withCategoryInformation')->andReturnSelf()->once();
$collector->shouldReceive('withAccountInformation')->andReturnSelf()->once(); $collector->shouldReceive('withAccountInformation')->andReturnSelf()->once();
$collector->shouldReceive('setCategory')->andReturnSelf()->atLeast(2); $collector->shouldReceive('setCategory')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('getPaginatedGroups')->andReturn(new LengthAwarePaginator([$withdrawal], 0, 10))->once(); $collector->shouldReceive('getPaginatedGroups')->andReturn(new LengthAwarePaginator([$withdrawal], 0, 10))->once();
$repository->shouldReceive('firstUseDate')->andReturn(new Carbon); $repository->shouldReceive('firstUseDate')->andReturn(new Carbon);

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Chart; namespace Tests\Feature\Controllers\Chart;
use Carbon\Carbon; use Carbon\Carbon;
use Exception;
use FireflyIII\Generator\Chart\Basic\GeneratorInterface; use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
@@ -46,6 +47,9 @@ use Tests\TestCase;
/** /**
* Class AccountControllerTest * Class AccountControllerTest
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
*/ */
class AccountControllerTest extends TestCase class AccountControllerTest extends TestCase
{ {
@@ -110,14 +114,15 @@ class AccountControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testExpenseBudget(string $range): void public function testExpenseBudget(string $range): void
{ {
$generator = $this->mock(GeneratorInterface::class); $generator = $this->mock(GeneratorInterface::class);
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$budgetRepos = $this->mock(BudgetRepositoryInterface::class); $budgetRepos = $this->mock(BudgetRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $this->mock(CurrencyRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$withdrawal = $this->getRandomWithdrawalAsArray(); $withdrawal = $this->getRandomWithdrawalAsArray();
$budget = $this->user()->budgets()->find($withdrawal['budget_id']); $budget = $this->user()->budgets()->find($withdrawal['budget_id']);
@@ -157,8 +162,8 @@ class AccountControllerTest extends TestCase
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$budgetRepos = $this->mock(BudgetRepositoryInterface::class); $budgetRepos = $this->mock(BudgetRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $this->mock(CurrencyRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $this->mock(FiscalHelperInterface::class);
$withdrawal = $this->getRandomWithdrawalAsArray(); $withdrawal = $this->getRandomWithdrawalAsArray();
$budget = $this->user()->budgets()->find($withdrawal['budget_id']); $budget = $this->user()->budgets()->find($withdrawal['budget_id']);
@@ -188,14 +193,15 @@ class AccountControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testExpenseCategory(string $range): void public function testExpenseCategory(string $range): void
{ {
$generator = $this->mock(GeneratorInterface::class); $generator = $this->mock(GeneratorInterface::class);
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$categoryRepos = $this->mock(CategoryRepositoryInterface::class); $categoryRepos = $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $this->mock(CurrencyRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$withdrawal = $this->getRandomWithdrawalAsArray(); $withdrawal = $this->getRandomWithdrawalAsArray();
$category = $this->user()->categories()->find($withdrawal['category_id']); $category = $this->user()->categories()->find($withdrawal['category_id']);
@@ -238,7 +244,7 @@ class AccountControllerTest extends TestCase
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$categoryRepos = $this->mock(CategoryRepositoryInterface::class); $categoryRepos = $this->mock(CategoryRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $this->mock(CurrencyRepositoryInterface::class);
$withdrawal = $this->getRandomWithdrawalAsArray(); $withdrawal = $this->getRandomWithdrawalAsArray();
$category = $this->user()->categories()->find($withdrawal['category_id']); $category = $this->user()->categories()->find($withdrawal['category_id']);
@@ -267,6 +273,7 @@ class AccountControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testFrontpage(string $range): void public function testFrontpage(string $range): void
{ {
@@ -304,6 +311,7 @@ class AccountControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testIncomeCategory(string $range): void public function testIncomeCategory(string $range): void
{ {
@@ -382,6 +390,7 @@ class AccountControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testPeriod(string $range): void public function testPeriod(string $range): void
{ {
@@ -444,6 +453,7 @@ class AccountControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testRevenueAccounts(string $range): void public function testRevenueAccounts(string $range): void
{ {

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Chart; namespace Tests\Feature\Controllers\Chart;
use Carbon\Carbon; use Carbon\Carbon;
use Exception;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Generator\Chart\Basic\GeneratorInterface; use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
@@ -38,6 +39,9 @@ use Tests\TestCase;
/** /**
* Class CategoryControllerTest * Class CategoryControllerTest
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
*/ */
class CategoryControllerTest extends TestCase class CategoryControllerTest extends TestCase
{ {
@@ -55,6 +59,7 @@ class CategoryControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws FireflyException
*/ */
public function testAll(string $range): void public function testAll(string $range): void
{ {
@@ -221,6 +226,7 @@ class CategoryControllerTest extends TestCase
* @dataProvider dateRangeProvider * @dataProvider dateRangeProvider
* *
* @param string $range * @param string $range
* @throws Exception
*/ */
public function testSpecificPeriod(string $range): void public function testSpecificPeriod(string $range): void
{ {

View File

@@ -25,7 +25,6 @@ namespace Tests\Feature\Controllers\Chart;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Generator\Chart\Basic\GeneratorInterface; use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\TransactionType; use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
@@ -82,4 +81,40 @@ class ExpenseReportControllerTest extends TestCase
$response->assertStatus(200); $response->assertStatus(200);
} }
/**
* Same test, but with a deposit
* @covers \FireflyIII\Http\Controllers\Chart\ExpenseReportController
*/
public function testMainChartDeposit(): void
{
$generator = $this->mock(GeneratorInterface::class);
$collector = $this->mock(GroupCollectorInterface::class);
$accountRepository = $this->mock(AccountRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class);
$expense = $this->getRandomExpense();
$date = new Carbon;
$deposit = $this->getRandomDepositAsArray();
$accountRepository->shouldReceive('findByName')->once()->andReturn($expense);
$this->mockDefaultSession();
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$collector->shouldReceive('setAccounts')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('setRange')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('withAccountInformation')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('setTypes')->withArgs([[TransactionType::WITHDRAWAL]])->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('setTypes')->withArgs([[TransactionType::DEPOSIT]])->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('getExtractedJournals')->andReturn([$deposit])->atLeast()->once();
$generator->shouldReceive('multiSet')->andReturn([])->once();
$this->be($this->user());
$response = $this->get(route('chart.expense.main', ['1', $expense->id, '20120101', '20120131']));
$response->assertStatus(200);
}
} }

View File

@@ -200,7 +200,7 @@ class TagReportControllerTest extends TestCase
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$withdrawal = $this->getRandomWithdrawalAsArray(); $withdrawal = $this->getRandomWithdrawalAsArray();
$tag = $this->user()->tags()->where('tag','Expensive')->first(); $tag = $this->user()->tags()->where('tag', 'Expensive')->first();
$date = new Carbon; $date = new Carbon;
$false = new Preference; $false = new Preference;
$false->data = false; $false->data = false;
@@ -237,7 +237,7 @@ class TagReportControllerTest extends TestCase
$generator = $this->mock(GeneratorInterface::class); $generator = $this->mock(GeneratorInterface::class);
$pieChart = $this->mock(MetaPieChartInterface::class); $pieChart = $this->mock(MetaPieChartInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class); $tagRepos = $this->mock(TagRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $this->mock(AccountRepositoryInterface::class);
$tag = $this->user()->tags()->first(); $tag = $this->user()->tags()->first();
$tagRepos->shouldReceive('setUser'); $tagRepos->shouldReceive('setUser');
$tagRepos->shouldReceive('get')->andReturn(new Collection([$tag])); $tagRepos->shouldReceive('get')->andReturn(new Collection([$tag]));

View File

@@ -31,6 +31,7 @@ use Log;
use Mockery; use Mockery;
use Tests\TestCase; use Tests\TestCase;
use Preferences;
/** /**
* Class AccountControllerTest * Class AccountControllerTest
* *
@@ -57,7 +58,7 @@ class PrerequisitesControllerTest extends TestCase
$this->mockDefaultSession(); $this->mockDefaultSession();
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$prereq = $this->mock(FakePrerequisites::class); $prereq = $this->mock(FakePrerequisites::class);
$repository = $this->mock(ImportJobRepositoryInterface::class); $this->mock(ImportJobRepositoryInterface::class);
$job = new ImportJob; $job = new ImportJob;
$job->user_id = $this->user()->id; $job->user_id = $this->user()->id;
@@ -68,6 +69,12 @@ class PrerequisitesControllerTest extends TestCase
$job->file_type = ''; $job->file_type = '';
$job->save(); $job->save();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'bunq_api_key',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'spectre_app_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'ynab_client_id',null])->andReturnNull();
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->atLeast()->once()->andReturn(true); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->atLeast()->once()->andReturn(true);
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->atLeast()->once()->andReturn(false); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->atLeast()->once()->andReturn(false);
@@ -91,7 +98,8 @@ class PrerequisitesControllerTest extends TestCase
{ {
$this->mockDefaultSession(); $this->mockDefaultSession();
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$repository = $this->mock(ImportJobRepositoryInterface::class); $this->mock(ImportJobRepositoryInterface::class);
$job = new ImportJob; $job = new ImportJob;
$job->user_id = $this->user()->id; $job->user_id = $this->user()->id;
@@ -102,6 +110,10 @@ class PrerequisitesControllerTest extends TestCase
$job->file_type = ''; $job->file_type = '';
$job->save(); $job->save();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'bunq_api_key',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'spectre_app_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'ynab_client_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'fake_api_key',null])->andReturnNull();
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->atLeast()->once()->andReturn(false); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->atLeast()->once()->andReturn(false);
@@ -122,6 +134,10 @@ class PrerequisitesControllerTest extends TestCase
$prereq = $this->mock(FakePrerequisites::class); $prereq = $this->mock(FakePrerequisites::class);
$repository = $this->mock(ImportJobRepositoryInterface::class); $repository = $this->mock(ImportJobRepositoryInterface::class);
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'bunq_api_key',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'spectre_app_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'ynab_client_id',null])->andReturnNull();
$job = new ImportJob; $job = new ImportJob;
$job->user_id = $this->user()->id; $job->user_id = $this->user()->id;
$job->key = 'C_pre_job_' . $this->randomInt(); $job->key = 'C_pre_job_' . $this->randomInt();
@@ -155,6 +171,12 @@ class PrerequisitesControllerTest extends TestCase
$prereq = $this->mock(FakePrerequisites::class); $prereq = $this->mock(FakePrerequisites::class);
$repository = $this->mock(ImportJobRepositoryInterface::class); $repository = $this->mock(ImportJobRepositoryInterface::class);
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'bunq_api_key',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'spectre_app_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'ynab_client_id',null])->andReturnNull();
//Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'fake_api_key',null])->andReturnNull();
$job = new ImportJob; $job = new ImportJob;
$job->user_id = $this->user()->id; $job->user_id = $this->user()->id;
$job->key = 'D_pre_job_' . $this->randomInt(); $job->key = 'D_pre_job_' . $this->randomInt();
@@ -186,7 +208,11 @@ class PrerequisitesControllerTest extends TestCase
$this->mockDefaultSession(); $this->mockDefaultSession();
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$prereq = $this->mock(FakePrerequisites::class); $prereq = $this->mock(FakePrerequisites::class);
$repository = $this->mock(ImportJobRepositoryInterface::class); $this->mock(ImportJobRepositoryInterface::class);
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'bunq_api_key',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'spectre_app_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'ynab_client_id',null])->andReturnNull();
$job = new ImportJob; $job = new ImportJob;
$job->user_id = $this->user()->id; $job->user_id = $this->user()->id;
@@ -218,7 +244,11 @@ class PrerequisitesControllerTest extends TestCase
$this->mockDefaultSession(); $this->mockDefaultSession();
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$prereq = $this->mock(FakePrerequisites::class); $prereq = $this->mock(FakePrerequisites::class);
$repository = $this->mock(ImportJobRepositoryInterface::class); $this->mock(ImportJobRepositoryInterface::class);
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'bunq_api_key',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'spectre_app_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'ynab_client_id',null])->andReturnNull();
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->atLeast()->once()->andReturn(false); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->atLeast()->once()->andReturn(false);
@@ -244,7 +274,12 @@ class PrerequisitesControllerTest extends TestCase
$this->mockDefaultSession(); $this->mockDefaultSession();
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$prereq = $this->mock(FakePrerequisites::class); $prereq = $this->mock(FakePrerequisites::class);
$repository = $this->mock(ImportJobRepositoryInterface::class); $this->mock(ImportJobRepositoryInterface::class);
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'bunq_api_key',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'spectre_app_id',null])->andReturnNull();
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'ynab_client_id',null])->andReturnNull();
//Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(),'fake_api_key',null])->andReturnNull();
$job = new ImportJob; $job = new ImportJob;
$job->user_id = $this->user()->id; $job->user_id = $this->user()->id;

View File

@@ -23,22 +23,8 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Json; namespace Tests\Feature\Controllers\Json;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\Bill;
use FireflyIII\Models\Budget;
use FireflyIII\Models\Category;
use FireflyIII\Models\Tag;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\Tag\TagRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Tests\TestCase; use Tests\TestCase;
@@ -68,8 +54,6 @@ class AutoCompleteControllerTest extends TestCase
$account = $this->getRandomAsset(); $account = $this->getRandomAsset();
$euro = $this->getEuro(); $euro = $this->getEuro();
$accountRepos->shouldReceive('searchAccount')->atLeast()->once()->andReturn(new Collection([$account])); $accountRepos->shouldReceive('searchAccount')->atLeast()->once()->andReturn(new Collection([$account]));
$accountRepos->shouldReceive('getAccountCurrency')->atLeast()->once()->andReturn($euro); $accountRepos->shouldReceive('getAccountCurrency')->atLeast()->once()->andReturn($euro);
$this->mockDefaultSession(); $this->mockDefaultSession();
@@ -82,4 +66,106 @@ class AutoCompleteControllerTest extends TestCase
} }
/**
* Request a list of revenue accounts
*
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
*/
public function testRevenueAccounts(): void
{
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$account = $this->getRandomAsset();
$accountRepos->shouldReceive('searchAccount')->atLeast()->once()->andReturn(new Collection([$account]));
$this->mockDefaultSession();
$this->be($this->user());
$response = $this->get(route('json.autocomplete.revenue-accounts'));
$response->assertStatus(200);
$response->assertSee($account->name);
}
/**
* Request a list of expense accounts
*
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
*/
public function testExpenseAccounts(): void
{
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$account = $this->getRandomAsset();
$accountRepos->shouldReceive('searchAccount')->atLeast()->once()->andReturn(new Collection([$account]));
$this->mockDefaultSession();
$this->be($this->user());
$response = $this->get(route('json.autocomplete.expense-accounts'));
$response->assertStatus(200);
$response->assertSee($account->name);
}
/**
* Request a list of expense accounts
*
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
*/
public function testAllJournals(): void
{
$journalRepos = $this->mockDefaultSession();
$journal = $this->getRandomWithdrawalAsArray();
$journalRepos->shouldReceive('searchJournalDescriptions')->atLeast()->once()->andReturn(new Collection([$journal]));
$this->be($this->user());
$response = $this->get(route('json.autocomplete.all-journals'));
$response->assertStatus(200);
$response->assertSee($journal['description']);
}
/**
* Request a list of expense accounts
*
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
*/
public function testAllJournalsWithId(): void
{
$journalRepos = $this->mockDefaultSession();
$journal = $this->getRandomWithdrawalAsArray();
$journalRepos->shouldReceive('searchJournalDescriptions')->atLeast()->once()->andReturn(new Collection([$journal]));
$this->be($this->user());
$response = $this->get(route('json.autocomplete.all-journals-with-id'));
$response->assertStatus(200);
$response->assertSee($journal['description']);
$response->assertSee($journal['id']);
}
/**
* Request a list of expense accounts
*
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
*/
public function testAllJournalsWithIdNumeric(): void
{
$journalRepos = $this->mockDefaultSession();
$journal = $this->getRandomWithdrawalAsArray();
$journalObject = $this->getRandomWithdrawal();
$journalRepos->shouldReceive('searchJournalDescriptions')->atLeast()->once()->andReturn(new Collection([$journal]));
$journalRepos->shouldReceive('findNull')->atLeast()->once()->andReturn($journalObject);
$this->be($this->user());
$response = $this->get(route('json.autocomplete.all-journals-with-id') . '?search=' . $journal['id']);
$response->assertStatus(200);
$response->assertSee($journal['description']);
$response->assertSee($journal['id']);
}
} }

View File

@@ -25,9 +25,7 @@ namespace Tests\Feature\Controllers\Json;
use Amount; use Amount;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Helpers\Report\NetWorthInterface; use FireflyIII\Helpers\Report\NetWorthInterface;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Bill\BillRepositoryInterface;
@@ -58,6 +56,7 @@ class BoxControllerTest extends TestCase
*/ */
public function testAvailable(): void public function testAvailable(): void
{ {
$this->mockDefaultSession();
$return = [ $return = [
0 => [ 0 => [
'spent' => '-1200', // more than budgeted. 'spent' => '-1200', // more than budgeted.
@@ -66,7 +65,7 @@ class BoxControllerTest extends TestCase
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
$this->mockDefaultSession();
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345'); Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('-100'); Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('-100');
@@ -85,6 +84,7 @@ class BoxControllerTest extends TestCase
*/ */
public function testAvailableDays(): void public function testAvailableDays(): void
{ {
$this->mockDefaultSession();
$return = [ $return = [
0 => [ 0 => [
'spent' => '-800', // more than budgeted. 'spent' => '-800', // more than budgeted.
@@ -93,7 +93,6 @@ class BoxControllerTest extends TestCase
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
$this->mockDefaultSession();
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345'); Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('-100'); Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('-100');
@@ -112,12 +111,12 @@ class BoxControllerTest extends TestCase
* @covers \FireflyIII\Http\Controllers\Json\BoxController * @covers \FireflyIII\Http\Controllers\Json\BoxController
*/ */
public function testBalance(): void public function testBalance(): void
{ { $this->mockDefaultSession();
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
$this->mockDefaultSession();
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345'); Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('-100'); Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('-100');
@@ -169,9 +168,12 @@ class BoxControllerTest extends TestCase
*/ */
public function testBills(): void public function testBills(): void
{ {
$this->mockDefaultSession();
$billRepos = $this->mock(BillRepositoryInterface::class); $billRepos = $this->mock(BillRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Amount::shouldReceive('formatAnything')->andReturn('-100');
$billRepos->shouldReceive('getBillsPaidInRange')->andReturn('0'); $billRepos->shouldReceive('getBillsPaidInRange')->andReturn('0');
$billRepos->shouldReceive('getBillsUnpaidInRange')->andReturn('0'); $billRepos->shouldReceive('getBillsUnpaidInRange')->andReturn('0');
@@ -195,7 +197,7 @@ class BoxControllerTest extends TestCase
$netWorthHelper = $this->mock(NetWorthInterface::class); $netWorthHelper = $this->mock(NetWorthInterface::class);
Amount::shouldReceive('formatAnything')->andReturn('-100');
$netWorthHelper->shouldReceive('setUser')->once(); $netWorthHelper->shouldReceive('setUser')->once();
$netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result); $netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result);
@@ -228,7 +230,7 @@ class BoxControllerTest extends TestCase
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
Amount::shouldReceive('formatAnything')->andReturn('-100');
$netWorthHelper = $this->mock(NetWorthInterface::class); $netWorthHelper = $this->mock(NetWorthInterface::class);
$netWorthHelper->shouldReceive('setUser')->once(); $netWorthHelper->shouldReceive('setUser')->once();
$netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result); $netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result);
@@ -264,7 +266,7 @@ class BoxControllerTest extends TestCase
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
Amount::shouldReceive('formatAnything')->andReturn('-100');
$netWorthHelper = $this->mock(NetWorthInterface::class); $netWorthHelper = $this->mock(NetWorthInterface::class);
$netWorthHelper->shouldReceive('setUser')->once(); $netWorthHelper->shouldReceive('setUser')->once();
$netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result); $netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result);
@@ -297,7 +299,7 @@ class BoxControllerTest extends TestCase
$netWorthHelper = $this->mock(NetWorthInterface::class); $netWorthHelper = $this->mock(NetWorthInterface::class);
$netWorthHelper->shouldReceive('setUser')->once(); $netWorthHelper->shouldReceive('setUser')->once();
$netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result); $netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result);
Amount::shouldReceive('formatAnything')->andReturn('-100');
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
$accountRepos->shouldReceive('getActiveAccountsByType')->andReturn(new Collection([$this->user()->accounts()->first()])); $accountRepos->shouldReceive('getActiveAccountsByType')->andReturn(new Collection([$this->user()->accounts()->first()]));
@@ -329,7 +331,7 @@ class BoxControllerTest extends TestCase
$account->virtual_balance = '1000'; $account->virtual_balance = '1000';
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
Amount::shouldReceive('formatAnything')->andReturn('-100');
$netWorthHelper = $this->mock(NetWorthInterface::class); $netWorthHelper = $this->mock(NetWorthInterface::class);
$netWorthHelper->shouldReceive('setUser')->once(); $netWorthHelper->shouldReceive('setUser')->once();
$netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result); $netWorthHelper->shouldReceive('getNetWorthByCurrency')->once()->andReturn($result);

View File

@@ -26,6 +26,7 @@ use Carbon\Carbon;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Repositories\Account\AccountTaskerInterface; use FireflyIII\Repositories\Account\AccountTaskerInterface;
use Log; use Log;
use Preferences;
use Tests\TestCase; use Tests\TestCase;
/** /**
@@ -62,6 +63,8 @@ class AccountControllerTest extends TestCase
$tasker = $this->mock(AccountTaskerInterface::class); $tasker = $this->mock(AccountTaskerInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$tasker->shouldReceive('getAccountReport')->andReturn($return); $tasker->shouldReceive('getAccountReport')->andReturn($return);

View File

@@ -27,6 +27,7 @@ use FireflyIII\Helpers\Collection\Balance;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Helpers\Report\BalanceReportHelperInterface; use FireflyIII\Helpers\Report\BalanceReportHelperInterface;
use Log; use Log;
use Preferences;
use Tests\TestCase; use Tests\TestCase;
/** /**
@@ -57,6 +58,8 @@ class BalanceControllerTest extends TestCase
$balance = $this->mock(BalanceReportHelperInterface::class); $balance = $this->mock(BalanceReportHelperInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$balance->shouldReceive('getBalanceReport')->andReturn(new Balance); $balance->shouldReceive('getBalanceReport')->andReturn(new Balance);

View File

@@ -22,12 +22,14 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Report; namespace Tests\Feature\Controllers\Report;
use Amount;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Helpers\Report\BudgetReportHelperInterface; use FireflyIII\Helpers\Report\BudgetReportHelperInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Preferences;
use Tests\TestCase; use Tests\TestCase;
/** /**
@@ -59,6 +61,9 @@ class BudgetControllerTest extends TestCase
$helper = $this->mock(BudgetReportHelperInterface::class); $helper = $this->mock(BudgetReportHelperInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('x');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$helper->shouldReceive('getBudgetReport')->andReturn($return); $helper->shouldReceive('getBudgetReport')->andReturn($return);
@@ -79,6 +84,9 @@ class BudgetControllerTest extends TestCase
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('x');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$repository->shouldReceive('getBudgets')->andReturn(new Collection); $repository->shouldReceive('getBudgets')->andReturn(new Collection);

View File

@@ -22,12 +22,13 @@ declare(strict_types=1);
namespace Tests\Feature\Controllers\Report; namespace Tests\Feature\Controllers\Report;
use Amount;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\Category;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Preferences;
use Tests\TestCase; use Tests\TestCase;
/** /**
@@ -60,6 +61,9 @@ class CategoryControllerTest extends TestCase
$repository = $this->mock(CategoryRepositoryInterface::class); $repository = $this->mock(CategoryRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('x');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$repository->shouldReceive('getCategories')->andReturn(new Collection); $repository->shouldReceive('getCategories')->andReturn(new Collection);
@@ -77,11 +81,15 @@ class CategoryControllerTest extends TestCase
public function testIncome(): void public function testIncome(): void
{ {
$this->mockDefaultSession(); $this->mockDefaultSession();
$first = [1 => ['entries' => ['1', '1']]]; $first = [
1 => ['entries' => ['1', '1']],
2 => ['entries' => ['0']],
];
$second = ['entries' => ['1', '1']]; $second = ['entries' => ['1', '1']];
$repository = $this->mock(CategoryRepositoryInterface::class); $repository = $this->mock(CategoryRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$repository->shouldReceive('getCategories')->andReturn(new Collection); $repository->shouldReceive('getCategories')->andReturn(new Collection);
@@ -103,6 +111,7 @@ class CategoryControllerTest extends TestCase
$category = $this->getRandomCategory(); $category = $this->getRandomCategory();
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$repository->shouldReceive('getCategories')->andReturn(new Collection([$category])); $repository->shouldReceive('getCategories')->andReturn(new Collection([$category]));
@@ -113,5 +122,6 @@ class CategoryControllerTest extends TestCase
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('report-data.category.operations', ['1', '20120101', '20120131'])); $response = $this->get(route('report-data.category.operations', ['1', '20120101', '20120131']));
$response->assertStatus(200); $response->assertStatus(200);
$response->assertDontSee('An error prevented Firefly III from rendering: %s. Apologies.');
} }
} }

View File

@@ -66,9 +66,7 @@ class ExpenseControllerTest extends TestCase
$transactions = [$this->getRandomWithdrawalAsArray()]; $transactions = [$this->getRandomWithdrawalAsArray()];
$this->mockDefaultSession(); $this->mockDefaultSession();
Preferences::shouldReceive('lastActivity')->atLeast()->once(); Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$repository->shouldReceive('findByName')->once()->withArgs([$expense->name, [AccountType::REVENUE]])->andReturn($revenue); $repository->shouldReceive('findByName')->once()->withArgs([$expense->name, [AccountType::REVENUE]])->andReturn($revenue);

View File

@@ -26,6 +26,7 @@ use Carbon\Carbon;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Repositories\Account\AccountTaskerInterface; use FireflyIII\Repositories\Account\AccountTaskerInterface;
use Log; use Log;
use Preferences;
use Tests\TestCase; use Tests\TestCase;
/** /**
@@ -65,6 +66,8 @@ class OperationsControllerTest extends TestCase
$tasker = $this->mock(AccountTaskerInterface::class); $tasker = $this->mock(AccountTaskerInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$tasker->shouldReceive('getExpenseReport')->andReturn($return); $tasker->shouldReceive('getExpenseReport')->andReturn($return);
@@ -83,6 +86,8 @@ class OperationsControllerTest extends TestCase
$tasker = $this->mock(AccountTaskerInterface::class); $tasker = $this->mock(AccountTaskerInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$tasker->shouldReceive('getIncomeReport')->andReturn([]); $tasker->shouldReceive('getIncomeReport')->andReturn([]);
@@ -111,6 +116,8 @@ class OperationsControllerTest extends TestCase
$tasker = $this->mock(AccountTaskerInterface::class); $tasker = $this->mock(AccountTaskerInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$tasker->shouldReceive('getExpenseReport')->andReturn($return); $tasker->shouldReceive('getExpenseReport')->andReturn($return);

View File

@@ -54,11 +54,12 @@ class LinkControllerTest extends TestCase
*/ */
public function testDelete(): void public function testDelete(): void
{ {
$this->mockDefaultSession();
$this->mock(LinkTypeRepositoryInterface::class); $this->mock(LinkTypeRepositoryInterface::class);
$link = $this->getRandomLink(); $link = $this->getRandomLink();
$userRepos = $this->mock(UserRepositoryInterface::class); $userRepos = $this->mock(UserRepositoryInterface::class);
$this->mockDefaultSession();
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->atLeast()->once()->andReturn(true); $userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->atLeast()->once()->andReturn(true);
@@ -74,10 +75,11 @@ class LinkControllerTest extends TestCase
*/ */
public function testModal(): void public function testModal(): void
{ {
$this->mockDefaultSession();
$journal = $this->getRandomWithdrawal(); $journal = $this->getRandomWithdrawal();
$linkRepos = $this->mock(LinkTypeRepositoryInterface::class); $linkRepos = $this->mock(LinkTypeRepositoryInterface::class);
$this->mockDefaultSession();
$linkRepos->shouldReceive('get')->atLeast()->once()->andReturn(new Collection); $linkRepos->shouldReceive('get')->atLeast()->once()->andReturn(new Collection);
@@ -91,11 +93,12 @@ class LinkControllerTest extends TestCase
*/ */
public function testDestroy(): void public function testDestroy(): void
{ {
$this->mockDefaultSession();
$link = $this->getRandomLink(); $link = $this->getRandomLink();
$repository = $this->mock(LinkTypeRepositoryInterface::class); $repository = $this->mock(LinkTypeRepositoryInterface::class);
Preferences::shouldReceive('mark')->once(); Preferences::shouldReceive('mark')->once();
$this->mockDefaultSession();
$repository->shouldReceive('destroyLink')->atLeast()->once(); $repository->shouldReceive('destroyLink')->atLeast()->once();
$this->be($this->user()); $this->be($this->user());
@@ -113,6 +116,7 @@ class LinkControllerTest extends TestCase
*/ */
public function testStore(): void public function testStore(): void
{ {
$this->mockDefaultSession();
$withdrawal = $this->getRandomWithdrawal(); $withdrawal = $this->getRandomWithdrawal();
$deposit = $this->getRandomDeposit(); $deposit = $this->getRandomDeposit();
$repository = $this->mock(LinkTypeRepositoryInterface::class); $repository = $this->mock(LinkTypeRepositoryInterface::class);
@@ -142,6 +146,7 @@ class LinkControllerTest extends TestCase
*/ */
public function testStoreAlreadyLinked(): void public function testStoreAlreadyLinked(): void
{ {
$this->mockDefaultSession();
$repository = $this->mock(LinkTypeRepositoryInterface::class); $repository = $this->mock(LinkTypeRepositoryInterface::class);
$journalRepos = $this->mockDefaultSession(); $journalRepos = $this->mockDefaultSession();
$link = $this->getRandomLink(); $link = $this->getRandomLink();
@@ -168,6 +173,7 @@ class LinkControllerTest extends TestCase
*/ */
public function testStoreInvalid(): void public function testStoreInvalid(): void
{ {
$this->mockDefaultSession();
$this->mock(LinkTypeRepositoryInterface::class); $this->mock(LinkTypeRepositoryInterface::class);
$journalRepos = $this->mockDefaultSession(); $journalRepos = $this->mockDefaultSession();
$withdrawal = $this->getRandomWithdrawal(); $withdrawal = $this->getRandomWithdrawal();
@@ -192,6 +198,7 @@ class LinkControllerTest extends TestCase
*/ */
public function testStoreSame(): void public function testStoreSame(): void
{ {
$this->mockDefaultSession();
$withdrawal = $this->getRandomWithdrawal(); $withdrawal = $this->getRandomWithdrawal();
$repository = $this->mock(LinkTypeRepositoryInterface::class); $repository = $this->mock(LinkTypeRepositoryInterface::class);
$journalRepos = $this->mockDefaultSession(); $journalRepos = $this->mockDefaultSession();
@@ -216,11 +223,10 @@ class LinkControllerTest extends TestCase
*/ */
public function testSwitchLink(): void public function testSwitchLink(): void
{ {
$this->mockDefaultSession();
$link = $this->getRandomLink(); $link = $this->getRandomLink();
$withdrawal = $this->getRandomWithdrawal();
$journalRepos = $this->mock(JournalRepositoryInterface::class);
$repository = $this->mock(LinkTypeRepositoryInterface::class); $repository = $this->mock(LinkTypeRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class); $this->mock(UserRepositoryInterface::class);
$repository->shouldReceive('switchLink')->andReturn(false); $repository->shouldReceive('switchLink')->andReturn(false);

View File

@@ -222,6 +222,7 @@ abstract class TestCase extends BaseTestCase
return [ return [
'transaction_group_id' => $withdrawal->transaction_group_id, 'transaction_group_id' => $withdrawal->transaction_group_id,
'transaction_journal_id' => $withdrawal->id, 'transaction_journal_id' => $withdrawal->id,
'id' => $withdrawal->id,
'transaction_type_type' => 'Withdrawal', 'transaction_type_type' => 'Withdrawal',
'currency_id' => $euro->id, 'currency_id' => $euro->id,
'foreign_currency_id' => null, 'foreign_currency_id' => null,
@@ -241,6 +242,47 @@ abstract class TestCase extends BaseTestCase
'budget_name' => $budget->name, 'budget_name' => $budget->name,
'category_id' => $category->id, 'category_id' => $category->id,
'category_name' => $category->name, 'category_name' => $category->name,
'tags' => ['a', 'b', 'c'],
];
}
/**
* @return array
*/
public function getRandomDepositAsArray(): array
{
$deposit = $this->getRandomDeposit();
$euro = $this->getEuro();
$category = $this->getRandomCategory();
$revenue = $this->getRandomRevenue();
$asset = $this->getRandomAsset();
try {
$date = new Carbon;
} catch (Exception $e) {
$e->getMessage();
}
return [
'transaction_group_id' => $deposit->transaction_group_id,
'transaction_journal_id' => $deposit->id,
'transaction_type_type' => 'Deposit',
'currency_id' => $euro->id,
'foreign_currency_id' => null,
'date' => $date,
'description' => sprintf('I am descr #%d', $this->randomInt()),
'source_account_id' => $revenue->id,
'source_account_name' => $revenue->name,
'foreign_amount' => null,
'destination_account_id' => $asset->id,
'destination_account_name' => $asset->name,
'currency_name' => $euro->name,
'currency_code' => $euro->code,
'currency_symbol' => $euro->symbol,
'currency_decimal_places' => $euro->decimal_places,
'amount' => '-30',
'category_id' => $category->id,
'category_name' => $category->name,
]; ];
} }

View File

@@ -132,6 +132,8 @@ class AccountCurrenciesTest extends TestCase
/** /**
* Perfect run with opening balance. * Perfect run with opening balance.
* *
* TODO this method crashes some times but not sure why.
*
* @covers \FireflyIII\Console\Commands\Upgrade\AccountCurrencies * @covers \FireflyIII\Console\Commands\Upgrade\AccountCurrencies
*/ */
public function testHandleOpeningBalance(): void public function testHandleOpeningBalance(): void