Fix tests

This commit is contained in:
James Cole
2019-09-06 17:19:21 +02:00
parent e9782a701f
commit 30f454d38a
12 changed files with 212 additions and 132 deletions

View File

@@ -193,6 +193,9 @@ trait RenderPartialViews
$categoryRepository = app(CategoryRepositoryInterface::class); $categoryRepository = app(CategoryRepositoryInterface::class);
$category = $categoryRepository->findNull((int)$attributes['categoryId']); $category = $categoryRepository->findNull((int)$attributes['categoryId']);
$journals = $popupHelper->byCategory($category, $attributes); $journals = $popupHelper->byCategory($category, $attributes);
if (null === $category) {
return 'This is an unknown category. Apologies.';
}
// @codeCoverageIgnoreStart // @codeCoverageIgnoreStart
try { try {
$view = view('popup.report.category-entry', compact('journals', 'category'))->render(); $view = view('popup.report.category-entry', compact('journals', 'category'))->render();

View File

@@ -180,6 +180,7 @@ class BillControllerTest extends TestCase
'currency' => $this->getEuro(), 'currency' => $this->getEuro(),
'currency_id' => $euro->id, 'currency_id' => $euro->id,
'currency_code' => $euro->code, 'currency_code' => $euro->code,
'pay_dates' => [],
'currency_symbol' => $euro->symbol, 'currency_symbol' => $euro->symbol,
'currency_decimal_places' => $euro->decimal_places, 'currency_decimal_places' => $euro->decimal_places,
] ]

View File

@@ -121,45 +121,10 @@ class ReportControllerTest extends TestCase
$expense = [ $expense = [
'accounts' => [ 'accounts' => [
2 => ['sum' => '-100']]]; 2 => ['sum' => '-100']]];
$tasker->shouldReceive('getIncomeReport')->once()->andReturn($income);
$tasker->shouldReceive('getExpenseReport')->once()->andReturn($expense);
$generator->shouldReceive('multiSet')->andReturn([]); $generator->shouldReceive('multiSet')->andReturn([]);
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('chart.report.operations', [1, '20120101', '20120131'])); $response = $this->get(route('chart.report.operations', [1, '20120101', '20120131']));
$response->assertStatus(200); $response->assertStatus(200);
} }
/**
* @covers \FireflyIII\Http\Controllers\Chart\ReportController
*/
public function testSum(): void
{
$generator = $this->mock(GeneratorInterface::class);
$tasker = $this->mock(AccountTaskerInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon;
$this->mockDefaultSession();
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$income = [
'accounts' => [
1 => ['sum' => '100']]];
$expense = [
'accounts' => [
2 => ['sum' => '-100']]];
$tasker->shouldReceive('getIncomeReport')->andReturn($income)->times(1);
$tasker->shouldReceive('getExpenseReport')->andReturn($expense)->times(1);
$generator->shouldReceive('multiSet')->andReturn([]);
$this->be($this->user());
$response = $this->get(route('chart.report.sum', [1, '20120101', '20120131']));
$response->assertStatus(200);
}
} }

View File

@@ -29,10 +29,12 @@ use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Models\Preference; use FireflyIII\Models\Preference;
use FireflyIII\Models\TransactionType; use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Tag\OperationsRepositoryInterface;
use FireflyIII\Repositories\Tag\TagRepositoryInterface; use FireflyIII\Repositories\Tag\TagRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Preferences; use Preferences;
use Tests\Support\TestDataTrait;
use Tests\TestCase; use Tests\TestCase;
/** /**
@@ -43,6 +45,7 @@ use Tests\TestCase;
*/ */
class TagReportControllerTest extends TestCase class TagReportControllerTest extends TestCase
{ {
use TestDataTrait;
/** /**
* *
*/ */
@@ -52,61 +55,6 @@ class TagReportControllerTest extends TestCase
Log::info(sprintf('Now in %s.', get_class($this))); Log::info(sprintf('Now in %s.', get_class($this)));
} }
/**
* @covers \FireflyIII\Http\Controllers\Chart\TagReportController
*/
public function testAccountExpense(): void
{
$generator = $this->mock(GeneratorInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$tag = $this->user()->tags()->first();
$this->mockDefaultSession();
$tagRepos->shouldReceive('setUser');
$tagRepos->shouldReceive('get')->andReturn(new Collection([$tag]));
$fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon;
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$generator->shouldReceive('pieChart')->andReturn([])->once();
$this->be($this->user());
$response = $this->get(route('chart.tag.account-expense', ['1', $tag->tag, '20120101', '20120131', 0]));
$response->assertStatus(200);
}
/**
* @covers \FireflyIII\Http\Controllers\Chart\TagReportController
*/
public function testAccountIncome(): void
{
$generator = $this->mock(GeneratorInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$tag = $this->user()->tags()->first();
$tagRepos->shouldReceive('setUser');
$tagRepos->shouldReceive('get')->andReturn(new Collection([$tag]));
$this->mockDefaultSession();
$fiscalHelper = $this->mock(FiscalHelperInterface::class);
$date = new Carbon;
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);
$fiscalHelper->shouldReceive('startOfFiscalYear')->atLeast()->once()->andReturn($date);
$generator->shouldReceive('pieChart')->andReturn([])->once();
$this->be($this->user());
$response = $this->get(route('chart.tag.account-income', ['1', $tag->tag, '20120101', '20120131', 0]));
$response->assertStatus(200);
}
/** /**
* @covers \FireflyIII\Http\Controllers\Chart\TagReportController * @covers \FireflyIII\Http\Controllers\Chart\TagReportController
@@ -116,6 +64,12 @@ class TagReportControllerTest extends TestCase
$generator = $this->mock(GeneratorInterface::class); $generator = $this->mock(GeneratorInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class); $tagRepos = $this->mock(TagRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$opsRepos = $this->mock(OperationsRepositoryInterface::class);
$opsRepos->shouldReceive('listExpenses')->atLeast()->once()->andReturn($this->tagListExpenses());
$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]));
@@ -127,7 +81,7 @@ class TagReportControllerTest extends TestCase
$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);
$generator->shouldReceive('pieChart')->andReturn([])->once(); $generator->shouldReceive('multiCurrencyPieChart')->andReturn([])->once();
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('chart.tag.budget-expense', ['1', $tag->tag, '20120101', '20120131', 0])); $response = $this->get(route('chart.tag.budget-expense', ['1', $tag->tag, '20120101', '20120131', 0]));
@@ -142,10 +96,13 @@ class TagReportControllerTest extends TestCase
$generator = $this->mock(GeneratorInterface::class); $generator = $this->mock(GeneratorInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class); $tagRepos = $this->mock(TagRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$opsRepos = $this->mock(OperationsRepositoryInterface::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]));
$opsRepos->shouldReceive('listExpenses')->atLeast()->once()->andReturn($this->tagListExpenses());
$this->mockDefaultSession(); $this->mockDefaultSession();
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
@@ -153,7 +110,7 @@ class TagReportControllerTest extends TestCase
$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);
$generator->shouldReceive('pieChart')->andReturn([])->once(); $generator->shouldReceive('multiCurrencyPieChart')->andReturn([])->once();
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('chart.tag.category-expense', ['1', $tag->tag, '20120101', '20120131', 0])); $response = $this->get(route('chart.tag.category-expense', ['1', $tag->tag, '20120101', '20120131', 0]));
@@ -172,6 +129,10 @@ class TagReportControllerTest extends TestCase
$collector = $this->mock(GroupCollectorInterface::class); $collector = $this->mock(GroupCollectorInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class); $tagRepos = $this->mock(TagRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$opsRepos = $this->mock(OperationsRepositoryInterface::class);
$opsRepos->shouldReceive('listExpenses')->atLeast()->once()->andReturn($this->tagListExpenses());
$opsRepos->shouldReceive('listIncome')->atLeast()->once()->andReturn($this->tagListIncome());
$withdrawal = $this->getRandomWithdrawalAsArray(); $withdrawal = $this->getRandomWithdrawalAsArray();
$tag = $this->user()->tags()->where('tag', 'Expensive')->first(); $tag = $this->user()->tags()->where('tag', 'Expensive')->first();
@@ -183,22 +144,14 @@ class TagReportControllerTest extends TestCase
$tagRepos->shouldReceive('setUser'); $tagRepos->shouldReceive('setUser');
$tagRepos->shouldReceive('get')->andReturn(new Collection([$tag])); $tagRepos->shouldReceive('get')->andReturn(new Collection([$tag]));
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
Preferences::shouldReceive('get')->withArgs(['customFiscalYear', false])->andReturn($false); Preferences::shouldReceive('get')->withArgs(['customFiscalYear', false])->andReturn($false);
$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);
$collector->shouldReceive('setAccounts')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('setRange')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('setTypes')->withArgs([[TransactionType::WITHDRAWAL, TransactionType::TRANSFER]])->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('setTypes')->withArgs([[TransactionType::DEPOSIT, TransactionType::TRANSFER]])->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('setTags')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('withAccountInformation')->andReturnSelf()->atLeast()->once();
$collector->shouldReceive('getExtractedJournals')->andReturn([$withdrawal])->atLeast()->once();
$generator->shouldReceive('multiSet')->andReturn([])->once()->atLeast()->once(); $generator->shouldReceive('multiSet')->andReturn([])->once()->atLeast()->once();
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('chart.tag.main', ['1', $tag->tag, '20120101', '20120131'])); $response = $this->get(route('chart.tag.main', ['1', $tag->id, '20120101', '20120131']));
$response->assertStatus(200); $response->assertStatus(200);
} }
@@ -210,7 +163,12 @@ class TagReportControllerTest extends TestCase
$this->mockDefaultSession(); $this->mockDefaultSession();
$generator = $this->mock(GeneratorInterface::class); $generator = $this->mock(GeneratorInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class); $tagRepos = $this->mock(TagRepositoryInterface::class);
$opsRepos = $this->mock(OperationsRepositoryInterface::class);
$opsRepos->shouldReceive('listExpenses')->atLeast()->once()->andReturn($this->tagListExpenses());
$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]));
@@ -220,7 +178,7 @@ class TagReportControllerTest extends TestCase
$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);
$generator->shouldReceive('pieChart')->andReturn([])->once(); $generator->shouldReceive('multiCurrencyPieChart')->andReturn([])->once();
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('chart.tag.tag-expense', ['1', $tag->tag, '20120101', '20120131', 0])); $response = $this->get(route('chart.tag.tag-expense', ['1', $tag->tag, '20120101', '20120131', 0]));
@@ -236,6 +194,10 @@ class TagReportControllerTest extends TestCase
$generator = $this->mock(GeneratorInterface::class); $generator = $this->mock(GeneratorInterface::class);
$tagRepos = $this->mock(TagRepositoryInterface::class); $tagRepos = $this->mock(TagRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class); $accountRepos = $this->mock(AccountRepositoryInterface::class);
$opsRepos = $this->mock(OperationsRepositoryInterface::class);
$opsRepos->shouldReceive('listIncome')->atLeast()->once()->andReturn($this->tagListIncome());
$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]));
@@ -245,7 +207,7 @@ class TagReportControllerTest extends TestCase
$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);
$generator->shouldReceive('pieChart')->andReturn([])->once(); $generator->shouldReceive('multiCurrencyPieChart')->andReturn([])->once();
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('chart.tag.tag-income', ['1', $tag->tag, '20120101', '20120131', 0])); $response = $this->get(route('chart.tag.tag-income', ['1', $tag->tag, '20120101', '20120131', 0]));

View File

@@ -29,7 +29,9 @@ use FireflyIII\Helpers\Report\NetWorthInterface;
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;
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
@@ -67,14 +69,16 @@ class BoxControllerTest extends TestCase
]; ];
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
$opsRepository = $this->mock(OperationsRepositoryInterface::class);
$abRepository = $this->mock(AvailableBudgetRepositoryInterface::class);
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');
$repository->shouldReceive('getAvailableBudget')->andReturn('1000'); $abRepository->shouldReceive('getAvailableBudget')->andReturn('1000');
$repository->shouldReceive('getActiveBudgets')->andReturn(new Collection); $repository->shouldReceive('getActiveBudgets')->andReturn(new Collection);
$repository->shouldReceive('collectBudgetInformation')->andReturn($return); $opsRepository->shouldReceive('collectBudgetInformation')->andReturn($return);
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('json.box.available')); $response = $this->get(route('json.box.available'));
@@ -95,14 +99,16 @@ class BoxControllerTest extends TestCase
]; ];
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class); $currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
$opsRepository = $this->mock(OperationsRepositoryInterface::class);
$abRepository = $this->mock(AvailableBudgetRepositoryInterface::class);
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');
$repository->shouldReceive('getAvailableBudget')->andReturn('1000'); $abRepository->shouldReceive('getAvailableBudget')->andReturn('1000');
$repository->shouldReceive('getActiveBudgets')->andReturn(new Collection); $repository->shouldReceive('getActiveBudgets')->andReturn(new Collection);
$repository->shouldReceive('collectBudgetInformation')->andReturn($return); $opsRepository->shouldReceive('collectBudgetInformation')->andReturn($return);
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('json.box.available')); $response = $this->get(route('json.box.available'));

View File

@@ -72,6 +72,8 @@ class IndexControllerTest extends TestCase
$pref->data = 50; $pref->data = 50;
Preferences::shouldReceive('get')->withArgs(['listPageSize', 50])->atLeast()->once()->andReturn($pref); Preferences::shouldReceive('get')->withArgs(['listPageSize', 50])->atLeast()->once()->andReturn($pref);
$repository->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([]);
$this->mockDefaultSession(); $this->mockDefaultSession();
$transformer->shouldReceive('setParameters')->atLeast()->once(); $transformer->shouldReceive('setParameters')->atLeast()->once();
@@ -126,6 +128,8 @@ class IndexControllerTest extends TestCase
$pref->data = 50; $pref->data = 50;
Preferences::shouldReceive('get')->withArgs(['listPageSize', 50])->atLeast()->once()->andReturn($pref); Preferences::shouldReceive('get')->withArgs(['listPageSize', 50])->atLeast()->once()->andReturn($pref);
$repository->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([]);
$this->mockDefaultSession(); $this->mockDefaultSession();
$transformer->shouldReceive('setParameters')->atLeast()->once(); $transformer->shouldReceive('setParameters')->atLeast()->once();

View File

@@ -24,6 +24,8 @@ namespace Tests\Feature\Controllers\Report;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use Illuminate\Support\Collection;
use Log; use Log;
use Preferences; use Preferences;
use Tests\TestCase; use Tests\TestCase;
@@ -54,9 +56,12 @@ class BalanceControllerTest extends TestCase
{ {
$this->mockDefaultSession(); $this->mockDefaultSession();
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$repository = $this->mock(BudgetRepositoryInterface::class);
$date = new Carbon; $date = new Carbon;
$budget = $this->getRandomBudget();
$repository->shouldReceive('getBudgets')->atLeast()->once()->andReturn(new Collection([$budget]));
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);

View File

@@ -22,13 +22,17 @@ 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\Repositories\Budget\BudgetLimitRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\NoBudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Amount;
use Preferences; use Preferences;
use Tests\Support\TestDataTrait;
use Tests\TestCase; use Tests\TestCase;
/** /**
@@ -40,6 +44,7 @@ use Tests\TestCase;
*/ */
class BudgetControllerTest extends TestCase class BudgetControllerTest extends TestCase
{ {
use TestDataTrait;
/** /**
* *
*/ */
@@ -56,12 +61,24 @@ class BudgetControllerTest extends TestCase
public function testGeneral(): void public function testGeneral(): void
{ {
$this->mockDefaultSession(); $this->mockDefaultSession();
$return = [];
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$opsRepos = $this->mock(OperationsRepositoryInterface::class);
$repository = $this->mock(BudgetRepositoryInterface::class);
$blRepos = $this->mock(BudgetLimitRepositoryInterface::class);
$nbRepos = $this->mock(NoBudgetRepositoryInterface::class);
$budget = $this->getRandomBudget();
$limit = $this->getRandomBudgetLimit();
$repository->shouldReceive('getBudgets')->atLeast()->once()->andReturn(new Collection([$budget]));
$blRepos->shouldReceive('getBudgetLimits')->atLeast()->once()->andReturn(new Collection([$limit]));
$opsRepos->shouldReceive('sumExpenses')->atLeast()->once()->andReturn([]);
$nbRepos->shouldReceive('sumExpenses')->atLeast()->once()->andReturn([]);
$date = new Carbon; $date = new Carbon;
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345'); //Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
//Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('x'); 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);
@@ -80,8 +97,14 @@ class BudgetControllerTest extends TestCase
$second = ['entries' => ['1', '1']]; $second = ['entries' => ['1', '1']];
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$fiscalHelper = $this->mock(FiscalHelperInterface::class); $fiscalHelper = $this->mock(FiscalHelperInterface::class);
$repository = $this->mock(BudgetRepositoryInterface::class);
$blRepos = $this->mock(BudgetLimitRepositoryInterface::class);
$nbRepos = $this->mock(NoBudgetRepositoryInterface::class);
$opsRepos = $this->mock(OperationsRepositoryInterface::class);
$date = new Carbon; $date = new Carbon;
$opsRepos->shouldReceive('listExpenses')->atLeast()->once()->andReturn($this->budgetListExpenses());
Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345'); Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
//Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('x'); //Amount::shouldReceive('formatAnything')->atLeast()->once()->andReturn('x');
$fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date); $fiscalHelper->shouldReceive('endOfFiscalYear')->atLeast()->once()->andReturn($date);

View File

@@ -69,7 +69,7 @@ class ReportControllerTest extends TestCase
/** /**
* @covers \FireflyIII\Http\Controllers\ReportController * @covers \FireflyIII\Http\Controllers\ReportController
*/ */
public function testAccountReport(): void public function testDoubleReport(): void
{ {
$this->mockDefaultSession(); $this->mockDefaultSession();
$this->mock(ReportHelperInterface::class); $this->mock(ReportHelperInterface::class);
@@ -92,7 +92,7 @@ class ReportControllerTest extends TestCase
$generator->shouldReceive('generate')->once()->andReturn('here-be-report'); $generator->shouldReceive('generate')->once()->andReturn('here-be-report');
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('reports.report.account', [$account->id, $expense->id, '20160101', '20161231'])); $response = $this->get(route('reports.report.double', [$account->id, $expense->id, '20160101', '20161231']));
$response->assertStatus(200); $response->assertStatus(200);
} }
@@ -290,7 +290,7 @@ class ReportControllerTest extends TestCase
/** /**
* @covers \FireflyIII\Http\Controllers\ReportController * @covers \FireflyIII\Http\Controllers\ReportController
*/ */
public function testOptionsAccount(): void public function testOptionsDouble(): void
{ {
Log::debug(sprintf('Now in test %s', __METHOD__)); Log::debug(sprintf('Now in test %s', __METHOD__));
$this->mockDefaultSession(); $this->mockDefaultSession();
@@ -304,11 +304,11 @@ class ReportControllerTest extends TestCase
$collection = new Collection([$account]); $collection = new Collection([$account]);
$repository->shouldReceive('getActiveAccountsByType')->withArgs([[AccountType::EXPENSE]])->once()->andReturn($collection); $repository->shouldReceive('getActiveAccountsByType')->withArgs([[AccountType::EXPENSE, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]])->once()->andReturn($collection);
$repository->shouldReceive('getActiveAccountsByType')->withArgs([[AccountType::REVENUE]])->once()->andReturn($collection); $repository->shouldReceive('getActiveAccountsByType')->withArgs([[AccountType::REVENUE, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]])->once()->andReturn($collection);
$this->be($this->user()); $this->be($this->user());
$response = $this->get(route('reports.options', ['account'])); $response = $this->get(route('reports.options', ['double']));
$response->assertStatus(200); $response->assertStatus(200);
} }
@@ -376,7 +376,7 @@ class ReportControllerTest extends TestCase
* @covers \FireflyIII\Http\Controllers\ReportController * @covers \FireflyIII\Http\Controllers\ReportController
* @covers \FireflyIII\Http\Requests\ReportFormRequest * @covers \FireflyIII\Http\Requests\ReportFormRequest
*/ */
public function testPostIndexAccountError(): void public function testPostIndexDoubleError(): void
{ {
Log::debug(sprintf('Now in test %s', __METHOD__)); Log::debug(sprintf('Now in test %s', __METHOD__));
$this->mockDefaultSession(); $this->mockDefaultSession();
@@ -395,9 +395,9 @@ class ReportControllerTest extends TestCase
$data = [ $data = [
'accounts' => ['1'], 'accounts' => ['1'],
'exp_rev' => ['4'], 'double' => ['4'],
'daterange' => '2016-01-01 - 2016-01-31', 'daterange' => '2016-01-01 - 2016-01-31',
'report_type' => 'account', 'report_type' => 'double',
]; ];
$this->be($this->user()); $this->be($this->user());
@@ -411,7 +411,7 @@ class ReportControllerTest extends TestCase
* @covers \FireflyIII\Http\Controllers\ReportController * @covers \FireflyIII\Http\Controllers\ReportController
* @covers \FireflyIII\Http\Requests\ReportFormRequest * @covers \FireflyIII\Http\Requests\ReportFormRequest
*/ */
public function testPostIndexAccountOK(): void public function testPostIndexDoubleOK(): void
{ {
Log::debug(sprintf('Now in test %s', __METHOD__)); Log::debug(sprintf('Now in test %s', __METHOD__));
$this->mockDefaultSession(); $this->mockDefaultSession();
@@ -425,15 +425,15 @@ class ReportControllerTest extends TestCase
$data = [ $data = [
'accounts' => ['1'], 'accounts' => ['1'],
'exp_rev' => ['4'], 'double' => ['4'],
'daterange' => '2016-01-01 - 2016-01-31', 'daterange' => '2016-01-01 - 2016-01-31',
'report_type' => 'account', 'report_type' => 'double',
]; ];
$this->be($this->user()); $this->be($this->user());
$response = $this->post(route('reports.index.post'), $data); $response = $this->post(route('reports.index.post'), $data);
$response->assertStatus(302); $response->assertStatus(302);
$response->assertRedirect(route('reports.report.account', ['1', '1', '20160101', '20160131'])); $response->assertRedirect(route('reports.report.double', ['1', '1', '20160101', '20160131']));
} }
/** /**

View File

@@ -85,6 +85,108 @@ trait TestDataTrait
return $data; return $data;
} }
/**
* Method that returns default data for when the tag OperationsRepos
* "listExpenses" method is called.
*
* @return array
*/
protected function tagListExpenses(): array
{
$eur = TransactionCurrency::where('code', 'EUR')->first();
$usd = TransactionCurrency::where('code', 'USD')->first();
$tag1 = $this->user()->tags()->inRandomOrder()->first();
$tag2 = $this->user()->tags()->inRandomOrder()->where('id', '!=', $tag1->id)->first();
$data = [];
$amount = 400;
$date = null;
try {
$amount = random_int(100, 2500);
$date = new Carbon;
} catch (Exception $e) {
$e->getMessage();
}
$amount = bcmul((string)round($amount / 100, 2), '-1');
foreach ([$eur, $usd] as $currency) {
$data[$currency->id] = [
'currency_id' => $currency->id,
'currency_name' => $currency->name,
'currency_symbol' => $currency->symbol,
'currency_code' => $currency->code,
'currency_decimal_places' => $currency->decimal_places,
'categories' => [],
];
foreach ([$tag1, $tag2] as $tag) {
$data[$currency->id]['tags'][$tag->id] = [
'id' => $tag->id,
'name' => $tag->tag,
'transaction_journals' => [],
];
// add two random amounts:
for ($i = 0; $i < 2; $i++) {
$data[$currency->id]['categories'][$tag->id]['transaction_journals'][$i] = [
'amount' => $amount,
'date' => $date,
];
}
}
}
return $data;
}
/**
* Method that returns default data for when the tag OperationsRepos
* "listIncome" method is called.
*
* @return array
*/
protected function tagListIncome(): array
{
$eur = TransactionCurrency::where('code', 'EUR')->first();
$usd = TransactionCurrency::where('code', 'USD')->first();
$tag1 = $this->user()->tags()->inRandomOrder()->first();
$tag2 = $this->user()->tags()->inRandomOrder()->where('id', '!=', $tag1->id)->first();
$data = [];
$amount = 400;
$date = null;
try {
$amount = random_int(100, 2500);
$date = new Carbon;
} catch (Exception $e) {
$e->getMessage();
}
$amount = (string)round($amount / 100, 2);
foreach ([$eur, $usd] as $currency) {
$data[$currency->id] = [
'currency_id' => $currency->id,
'currency_name' => $currency->name,
'currency_symbol' => $currency->symbol,
'currency_code' => $currency->code,
'currency_decimal_places' => $currency->decimal_places,
'categories' => [],
];
foreach ([$tag1, $tag2] as $tag) {
$data[$currency->id]['tags'][$tag->id] = [
'id' => $tag->id,
'name' => $tag->tag,
'transaction_journals' => [],
];
// add two random amounts:
for ($i = 0; $i < 2; $i++) {
$data[$currency->id]['categories'][$tag->id]['transaction_journals'][$i] = [
'amount' => $amount,
'date' => $date,
];
}
}
}
return $data;
}
/** /**
* Method that returns default data for when the category OperationsRepos * Method that returns default data for when the category OperationsRepos
* "listExpenses" method is called. * "listExpenses" method is called.

View File

@@ -32,7 +32,6 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
use Mockery;
use Steam; use Steam;
use Tests\TestCase; use Tests\TestCase;
@@ -76,6 +75,7 @@ class MonthReportGeneratorTest extends TestCase
'source_id' => $asset->id, 'source_id' => $asset->id,
'source_name' => $asset->name, 'source_name' => $asset->name,
'transaction_journal_id' => 1, 'transaction_journal_id' => 1,
'destination_account_id' => 8,
], ],
[ [
'description' => 'Hello2', 'description' => 'Hello2',
@@ -86,6 +86,7 @@ class MonthReportGeneratorTest extends TestCase
'source_id' => $asset->id, 'source_id' => $asset->id,
'source_name' => $asset->name, 'source_name' => $asset->name,
'transaction_journal_id' => 1, 'transaction_journal_id' => 1,
'destination_account_id' => 8,
], ],
]; ];
@@ -105,13 +106,15 @@ class MonthReportGeneratorTest extends TestCase
// mock calls // mock calls
Steam::shouldReceive('balance')->times(2)->andReturn('100'); Steam::shouldReceive('balance')->times(2)->andReturn('100');
$accountRepos->shouldReceive('setUser')->once(); $accountRepos->shouldReceive('setUser')->once();
//$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1')->once();
$accountRepos->shouldReceive('getAccountCurrency')->atLeast()->once()->andReturn($euro); $accountRepos->shouldReceive('getAccountCurrency')->atLeast()->once()->andReturn($euro);
// mock collector: // mock collector:
$collector->shouldReceive('setAccounts')->atLeast()->once()->andReturnSelf(); $collector->shouldReceive('setAccounts')->atLeast()->once()->andReturnSelf();
$collector->shouldReceive('setRange')->atLeast()->once()->andReturnSelf(); $collector->shouldReceive('setRange')->atLeast()->once()->andReturnSelf();
$collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf(); $collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf();
$collector->shouldReceive('withBudgetInformation')->atLeast()->once()->andReturnSelf();
$collector->shouldReceive('withCategoryInformation')->atLeast()->once()->andReturnSelf();
$collector->shouldReceive('withBillInformation')->atLeast()->once()->andReturnSelf();
$collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn($return); $collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn($return);
//$currencyRepos->shouldReceive('findNull')->withArgs([1])->andReturn($euro)->once(); //$currencyRepos->shouldReceive('findNull')->withArgs([1])->andReturn($euro)->once();

View File

@@ -26,6 +26,8 @@ namespace Tests\Unit\Transformers;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Models\AvailableBudget; use FireflyIII\Models\AvailableBudget;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\NoBudgetRepositoryInterface;
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
use FireflyIII\Transformers\AvailableBudgetTransformer; use FireflyIII\Transformers\AvailableBudgetTransformer;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
@@ -56,7 +58,9 @@ class AvailableBudgetTransformerTest extends TestCase
*/ */
public function testBasic(): void public function testBasic(): void
{ {
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$opsRepository = $this->mock(OperationsRepositoryInterface::class);
$nbRepos = $this->mock(NoBudgetRepositoryInterface::class);
$repository->shouldReceive('setUser')->atLeast()->once(); $repository->shouldReceive('setUser')->atLeast()->once();
/** @var AvailableBudget $availableBudget */ /** @var AvailableBudget $availableBudget */
@@ -93,12 +97,14 @@ class AvailableBudgetTransformerTest extends TestCase
]; ];
$budget = $this->getRandomBudget(); $budget = $this->getRandomBudget();
$repository = $this->mock(BudgetRepositoryInterface::class); $repository = $this->mock(BudgetRepositoryInterface::class);
$opsRepository = $this->mock(OperationsRepositoryInterface::class);
$nbRepos = $this->mock(NoBudgetRepositoryInterface::class);
$repository->shouldReceive('setUser')->atLeast()->once(); $repository->shouldReceive('setUser')->atLeast()->once();
$repository->shouldReceive('getActiveBudgets')->atLeast()->once()->andReturn(new Collection([$budget])); $repository->shouldReceive('getActiveBudgets')->atLeast()->once()->andReturn(new Collection([$budget]));
$repository->shouldReceive('spentInPeriodMc')->atLeast()->once()->andReturn($data); $opsRepository->shouldReceive('spentInPeriodMc')->atLeast()->once()->andReturn($data);
$repository->shouldReceive('spentInPeriodWoBudgetMc')->atLeast()->once()->andReturn($data); $nbRepos->shouldReceive('spentInPeriodWoBudgetMc')->atLeast()->once()->andReturn($data);
// spentInPeriodWoBudgetMc // spentInPeriodWoBudgetMc