mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 15:35:15 +00:00
Expand test coverage.
This commit is contained in:
@@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Controllers;
|
||||
|
||||
use Amount;
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
|
||||
use FireflyIII\Models\Account;
|
||||
@@ -159,6 +160,41 @@ class AccountControllerTest extends TestCase
|
||||
$response->assertSee($note->text);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\AccountController
|
||||
*/
|
||||
public function testEditNull(): void
|
||||
{
|
||||
$note = new Note();
|
||||
$note->text = 'This is a test';
|
||||
// mock stuff
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
|
||||
Amount::shouldReceive('getDefaultCurrency')->andReturn(TransactionCurrency::find(2));
|
||||
$repository->shouldReceive('findNull')->once()->andReturn(null);
|
||||
$repository->shouldReceive('get')->andReturn(new Collection);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$accountRepos->shouldReceive('getNote')->andReturn($note)->once();
|
||||
$accountRepos->shouldReceive('getOpeningBalanceAmount')->andReturnNull();
|
||||
$accountRepos->shouldReceive('getOpeningBalanceDate')->andReturnNull();
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'accountNumber'])->andReturn('123');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'accountRole'])->andReturn('defaultAsset');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'ccType'])->andReturn('');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'ccMonthlyPaymentDate'])->andReturn('');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'BIC'])->andReturn('BIC');
|
||||
|
||||
$this->be($this->user());
|
||||
$account = $this->user()->accounts()->where('account_type_id', 3)->whereNull('deleted_at')->first();
|
||||
$response = $this->get(route('accounts.edit', [$account->id]));
|
||||
$response->assertStatus(200);
|
||||
// has bread crumb
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
$response->assertSee($note->text);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\AccountController::index
|
||||
* @covers \FireflyIII\Http\Controllers\AccountController::__construct
|
||||
@@ -182,7 +218,7 @@ class AccountControllerTest extends TestCase
|
||||
Steam::shouldReceive('balancesByAccounts')->andReturn([$account->id => '100']);
|
||||
Steam::shouldReceive('getLastActivities')->andReturn([]);
|
||||
|
||||
$repository->shouldReceive('getMetaValue')->withArgs([Mockery::any(),'accountNumber'])->andReturn('123');
|
||||
$repository->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'accountNumber'])->andReturn('123');
|
||||
|
||||
$this->be($this->user());
|
||||
$this->changeDateRange($this->user(), $range);
|
||||
@@ -239,6 +275,54 @@ class AccountControllerTest extends TestCase
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\AccountController
|
||||
* @covers \FireflyIII\Http\Controllers\AccountController
|
||||
* @dataProvider dateRangeProvider
|
||||
*
|
||||
* @param string $range
|
||||
*/
|
||||
public function testShowAll(string $range): void
|
||||
{
|
||||
$date = new Carbon;
|
||||
$this->session(['start' => $date, 'end' => clone $date]);
|
||||
|
||||
// mock stuff:
|
||||
$tasker = $this->mock(AccountTaskerInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(TransactionCurrency::find(1));
|
||||
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$tasker->shouldReceive('amountOutInPeriod')->withAnyArgs()->andReturn('-1');
|
||||
$tasker->shouldReceive('amountInInPeriod')->withAnyArgs()->andReturn('1');
|
||||
|
||||
$repository = $this->mock(AccountRepositoryInterface::class);
|
||||
$repository->shouldReceive('oldestJournalDate')->andReturn(clone $date)->once();
|
||||
$repository->shouldReceive('getMetaValue')->andReturn('');
|
||||
|
||||
|
||||
$transaction = factory(Transaction::class)->make();
|
||||
$collector = $this->mock(JournalCollectorInterface::class);
|
||||
$collector->shouldReceive('setAccounts')->andReturnSelf();
|
||||
$collector->shouldReceive('setRange')->andReturnSelf();
|
||||
$collector->shouldReceive('setLimit')->andReturnSelf();
|
||||
$collector->shouldReceive('withOpposingAccount')->andReturnSelf();
|
||||
$collector->shouldReceive('setPage')->andReturnSelf();
|
||||
$collector->shouldReceive('setTypes')->andReturnSelf();
|
||||
$collector->shouldReceive('getJournals')->andReturn(new Collection([$transaction]));
|
||||
$collector->shouldReceive('getPaginatedJournals')->andReturn(new LengthAwarePaginator([$transaction], 0, 10));
|
||||
|
||||
$this->be($this->user());
|
||||
$this->changeDateRange($this->user(), $range);
|
||||
$response = $this->get(route('accounts.show.all', [1]));
|
||||
$response->assertStatus(200);
|
||||
// has bread crumb
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\AccountController::show
|
||||
* @expectedExceptionMessage End is after start!
|
||||
|
@@ -22,9 +22,11 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Controllers;
|
||||
|
||||
use FireflyIII\Models\Attachment;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -46,7 +48,6 @@ class AttachmentControllerTest extends TestCase
|
||||
Log::debug(sprintf('Now in %s.', \get_class($this)));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\AttachmentController::delete
|
||||
*/
|
||||
@@ -133,6 +134,23 @@ class AttachmentControllerTest extends TestCase
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\AttachmentController
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$repository = $this->mock(AttachmentRepositoryInterface::class);
|
||||
$repository->shouldReceive('get')->andReturn(new Collection([Attachment::first()]))->once();
|
||||
$repository->shouldReceive('exists')->andReturn(true)->once();
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('attachments.index'));
|
||||
$response->assertStatus(200);
|
||||
// has bread crumb
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\AttachmentController::update
|
||||
*/
|
||||
|
@@ -26,13 +26,18 @@ use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\Attachments\AttachmentHelperInterface;
|
||||
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||
use FireflyIII\TransactionRules\TransactionMatcher;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\MessageBag;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@@ -62,6 +67,7 @@ class BillControllerTest extends TestCase
|
||||
// mock stuff
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
|
||||
$this->be($this->user());
|
||||
@@ -79,6 +85,7 @@ class BillControllerTest extends TestCase
|
||||
// mock stuff
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
|
||||
$this->be($this->user());
|
||||
@@ -97,6 +104,7 @@ class BillControllerTest extends TestCase
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$repository->shouldReceive('destroy')->andReturn(true);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
|
||||
@@ -115,6 +123,7 @@ class BillControllerTest extends TestCase
|
||||
// mock stuff
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
|
||||
$this->be($this->user());
|
||||
@@ -135,6 +144,7 @@ class BillControllerTest extends TestCase
|
||||
$bill = factory(Bill::class)->make();
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$collection = new Collection([$bill]);
|
||||
$repository->shouldReceive('getPaginator')->andReturn(new LengthAwarePaginator($collection, 1, 50))->once();
|
||||
@@ -156,12 +166,24 @@ class BillControllerTest extends TestCase
|
||||
public function testRescan(): void
|
||||
{
|
||||
// mock stuff
|
||||
$rule = Rule::first();
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journal = factory(TransactionJournal::class)->make();
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('getRulesForBill')->andReturn(new Collection);
|
||||
$repository->shouldReceive('getRulesForBill')->andReturn(new Collection([$rule]));
|
||||
|
||||
//calls for transaction matcher:
|
||||
$matcher = $this->mock(TransactionMatcher::class);
|
||||
$matcher->shouldReceive('setLimit')->once()->withArgs([100000]);
|
||||
$matcher->shouldReceive('setRange')->once()->withArgs([100000]);
|
||||
$matcher->shouldReceive('setRule')->once()->withArgs([Mockery::any()]);
|
||||
$matcher->shouldReceive('findTransactionsByRule')->once()->andReturn(new Collection);
|
||||
|
||||
$repository->shouldReceive('linkCollectionToBill')->once();
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('bills.rescan', [1]));
|
||||
$response->assertStatus(302);
|
||||
@@ -177,6 +199,7 @@ class BillControllerTest extends TestCase
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
|
||||
$this->be($this->user());
|
||||
@@ -195,6 +218,7 @@ class BillControllerTest extends TestCase
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$collector = $this->mock(JournalCollectorInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$repository->shouldReceive('getYearAverage')->andReturn('0');
|
||||
$repository->shouldReceive('getOverallAverage')->andReturn('0');
|
||||
$repository->shouldReceive('nextExpectedMatch')->andReturn(new Carbon);
|
||||
@@ -229,11 +253,13 @@ class BillControllerTest extends TestCase
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('store')->andReturn(new Bill);
|
||||
$attachHelper->shouldReceive('saveAttachmentsForModel');
|
||||
$attachHelper->shouldReceive('getMessages')->andReturn(new MessageBag);
|
||||
|
||||
$ruleGroupRepos->shouldReceive('count')->andReturn(1);
|
||||
$ruleGroupRepos->shouldReceive('getActiveGroups')->andReturn(new Collection([RuleGroup::first()]))->once();
|
||||
$data = [
|
||||
'name' => 'New Bill ' . random_int(1000, 9999),
|
||||
'amount_min' => '100',
|
||||
@@ -251,6 +277,112 @@ class BillControllerTest extends TestCase
|
||||
$response->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BillController::store
|
||||
* @covers \FireflyIII\Http\Requests\BillFormRequest
|
||||
* @covers \FireflyIII\Http\Requests\Request
|
||||
*/
|
||||
public function testStoreCreateAnother(): void
|
||||
{
|
||||
// mock stuff
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('store')->andReturn(new Bill);
|
||||
$attachHelper->shouldReceive('saveAttachmentsForModel');
|
||||
$attachHelper->shouldReceive('getMessages')->andReturn(new MessageBag);
|
||||
$ruleGroupRepos->shouldReceive('count')->andReturn(1);
|
||||
$ruleGroupRepos->shouldReceive('getActiveGroups')->andReturn(new Collection([RuleGroup::first()]))->once();
|
||||
|
||||
$data = [
|
||||
'name' => 'New Bill ' . random_int(1000, 9999),
|
||||
'amount_min' => '100',
|
||||
'transaction_currency_id' => 1,
|
||||
'skip' => 0,
|
||||
'create_another' => '1',
|
||||
'strict' => 1,
|
||||
'amount_max' => '100',
|
||||
'date' => '2016-01-01',
|
||||
'repeat_freq' => 'monthly',
|
||||
];
|
||||
$this->session(['bills.create.uri' => 'http://localhost']);
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('bills.store'), $data);
|
||||
$response->assertStatus(302);
|
||||
$response->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BillController::store
|
||||
* @covers \FireflyIII\Http\Requests\BillFormRequest
|
||||
* @covers \FireflyIII\Http\Requests\Request
|
||||
*/
|
||||
public function testStoreNoGroup(): void
|
||||
{
|
||||
// mock stuff
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('store')->andReturn(new Bill);
|
||||
$attachHelper->shouldReceive('saveAttachmentsForModel');
|
||||
$attachHelper->shouldReceive('getMessages')->andReturn(new MessageBag);
|
||||
$ruleGroupRepos->shouldReceive('count')->andReturn(0);
|
||||
$ruleGroupRepos->shouldReceive('store')->once()->withArgs([['title' => 'Rule group for bills','description'=> 'A special rule group for all the rules that involve bills.']])->andReturn(RuleGroup::first());
|
||||
|
||||
$data = [
|
||||
'name' => 'New Bill ' . random_int(1000, 9999),
|
||||
'amount_min' => '100',
|
||||
'transaction_currency_id' => 1,
|
||||
'skip' => 0,
|
||||
'create_another' => '1',
|
||||
'strict' => 1,
|
||||
'amount_max' => '100',
|
||||
'date' => '2016-01-01',
|
||||
'repeat_freq' => 'monthly',
|
||||
];
|
||||
$this->session(['bills.create.uri' => 'http://localhost']);
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('bills.store'), $data);
|
||||
$response->assertStatus(302);
|
||||
$response->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BillController::store
|
||||
* @covers \FireflyIII\Http\Requests\BillFormRequest
|
||||
* @covers \FireflyIII\Http\Requests\Request
|
||||
*/
|
||||
public function testStoreError(): void
|
||||
{
|
||||
// mock stuff
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('store')->andReturn(null);
|
||||
|
||||
$data = [
|
||||
'name' => 'New Bill ' . random_int(1000, 9999),
|
||||
'amount_min' => '100',
|
||||
'transaction_currency_id' => 1,
|
||||
'skip' => 0,
|
||||
'strict' => 1,
|
||||
'amount_max' => '100',
|
||||
'date' => '2016-01-01',
|
||||
'repeat_freq' => 'monthly',
|
||||
];
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('bills.store'), $data);
|
||||
$response->assertStatus(302);
|
||||
$response->assertSessionHas('error');
|
||||
$response->assertRedirect(route('bills.create'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BillController::update
|
||||
* @covers \FireflyIII\Http\Requests\BillFormRequest
|
||||
@@ -262,20 +394,21 @@ class BillControllerTest extends TestCase
|
||||
$attachHelper = $this->mock(AttachmentHelperInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$ruleGroupRepos =$this->mock(RuleGroupRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('update')->andReturn(new Bill);
|
||||
$attachHelper->shouldReceive('saveAttachmentsForModel');
|
||||
$attachHelper->shouldReceive('getMessages')->andReturn(new MessageBag);
|
||||
|
||||
$data = [
|
||||
'id' => 1,
|
||||
'name' => 'Updated Bill ' . random_int(1000, 9999),
|
||||
'amount_min' => '100',
|
||||
'id' => 1,
|
||||
'name' => 'Updated Bill ' . random_int(1000, 9999),
|
||||
'amount_min' => '100',
|
||||
'transaction_currency_id' => 1,
|
||||
'skip' => 0,
|
||||
'amount_max' => '100',
|
||||
'date' => '2016-01-01',
|
||||
'repeat_freq' => 'monthly',
|
||||
'skip' => 0,
|
||||
'amount_max' => '100',
|
||||
'date' => '2016-01-01',
|
||||
'repeat_freq' => 'monthly',
|
||||
];
|
||||
$this->session(['bills.edit.uri' => 'http://localhost']);
|
||||
$this->be($this->user());
|
||||
|
@@ -59,6 +59,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testAmount(): void
|
||||
{
|
||||
Log::debug('Now in testAmount()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
@@ -74,11 +75,34 @@ class BudgetControllerTest extends TestCase
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::amount
|
||||
*/
|
||||
public function testAmountLargeDiff(): void
|
||||
{
|
||||
Log::debug('Now in testAmount()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('updateLimitAmount')->andReturn(new BudgetLimit);
|
||||
$repository->shouldReceive('spentInPeriod')->andReturn('0');
|
||||
$repository->shouldReceive('budgetedPerDay')->andReturn('10');
|
||||
|
||||
|
||||
$data = ['amount' => 20000, 'start' => '2017-01-01', 'end' => '2017-01-31'];
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('budgets.amount', [1]), $data);
|
||||
$response->assertStatus(200);
|
||||
$response->assertSee('Normally you budget about \u20ac10.00 per day.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::amount
|
||||
*/
|
||||
public function testAmountZero(): void
|
||||
{
|
||||
Log::debug('Now in testAmountZero()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
@@ -93,11 +117,35 @@ class BudgetControllerTest extends TestCase
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::amount
|
||||
*/
|
||||
public function testAmountOutOfRange(): void
|
||||
{
|
||||
Log::debug('Now in testAmountOutOfRange()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$repository->shouldReceive('updateLimitAmount')->andReturn(new BudgetLimit);
|
||||
$repository->shouldReceive('spentInPeriod')->andReturn('0');
|
||||
$repository->shouldReceive('budgetedPerDay')->andReturn('10');
|
||||
|
||||
$today = new Carbon;
|
||||
$start = $today->startOfMonth()->format('Y-m-d');
|
||||
$end = $today->endOfMonth()->format('Y-m-d');
|
||||
$data = ['amount' => 200, 'start' => $start, 'end' => $end];
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('budgets.amount', [1]), $data);
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::create
|
||||
*/
|
||||
public function testCreate(): void
|
||||
{
|
||||
Log::debug('Now in testCreate()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
@@ -115,6 +163,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testDelete(): void
|
||||
{
|
||||
Log::debug('Now in testDelete()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
@@ -132,6 +181,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testDestroy(): void
|
||||
{
|
||||
Log::debug('Now in testDestroy()');
|
||||
// mock stuff
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
@@ -151,6 +201,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testEdit(): void
|
||||
{
|
||||
Log::debug('Now in testEdit()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
@@ -172,6 +223,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testIndex(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testIndex(%s)', $range));
|
||||
// mock stuff
|
||||
$budget = factory(Budget::class)->make();
|
||||
$budgetLimit = factory(BudgetLimit::class)->make();
|
||||
@@ -209,6 +261,7 @@ class BudgetControllerTest extends TestCase
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::index
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::__construct
|
||||
@@ -218,6 +271,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testIndexWithDate(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testIndexWithDate(%s)', $range));
|
||||
// mock stuff
|
||||
$budget = factory(Budget::class)->make();
|
||||
$budgetLimit = factory(BudgetLimit::class)->make();
|
||||
@@ -255,6 +309,57 @@ class BudgetControllerTest extends TestCase
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::index
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::__construct
|
||||
* @dataProvider dateRangeProvider
|
||||
*
|
||||
* @param string $range
|
||||
*/
|
||||
public function testIndexOutOfRange(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testIndexOutOfRange(%s)', $range));
|
||||
// mock stuff
|
||||
$budget = factory(Budget::class)->make();
|
||||
$budgetLimit = factory(BudgetLimit::class)->make();
|
||||
$budgetInfo = [
|
||||
$budget->id => [
|
||||
'spent' => '0',
|
||||
'budgeted' => '0',
|
||||
'currentRep' => false,
|
||||
],
|
||||
];
|
||||
|
||||
// set budget limit to current month:
|
||||
$budgetLimit->start_date = Carbon::now()->startOfMonth();
|
||||
$budgetLimit->end_date = Carbon::now()->endOfMonth();
|
||||
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$accountRepos->shouldReceive('getAccountsByType')->andReturn(new Collection);
|
||||
|
||||
$repository->shouldReceive('cleanupBudgets');
|
||||
$repository->shouldReceive('getActiveBudgets')->andReturn(new Collection([$budget]));
|
||||
$repository->shouldReceive('getInactiveBudgets')->andReturn(new Collection);
|
||||
$repository->shouldReceive('getAvailableBudget')->andReturn('100.123');
|
||||
$repository->shouldReceive('spentInPeriod')->andReturn('-1');
|
||||
$repository->shouldReceive('getBudgetLimits')->andReturn(new Collection([$budgetLimit]));
|
||||
$repository->shouldReceive('collectBudgetInformation')->andReturn($budgetInfo);
|
||||
|
||||
$this->be($this->user());
|
||||
$today = new Carbon;
|
||||
$today->startOfMonth();
|
||||
$this->changeDateRange($this->user(), $range);
|
||||
$response = $this->get(route('budgets.index', [$today->format('Y-m-d')]));
|
||||
$response->assertStatus(200);
|
||||
// has bread crumb
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::index
|
||||
* @covers \FireflyIII\Http\Controllers\BudgetController::__construct
|
||||
@@ -264,6 +369,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testIndexWithInvalidDate(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testIndexWithInvalidDate(%s)', $range));
|
||||
// mock stuff
|
||||
$budget = factory(Budget::class)->make();
|
||||
$budgetLimit = factory(BudgetLimit::class)->make();
|
||||
@@ -306,6 +412,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testInfoIncome(): void
|
||||
{
|
||||
Log::debug('Now in testInfoIncome()');
|
||||
// mock stuff
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
@@ -327,6 +434,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testInfoIncomeExpanded(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testInfoIncomeExpanded(%s)', $range));
|
||||
// mock stuff
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
@@ -350,11 +458,13 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testNoBudget(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testNoBudget(%s)', $range));
|
||||
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$collector = $this->mock(JournalCollectorInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->andReturn(TransactionJournal::first());
|
||||
$journalRepos->shouldReceive('firstNull')->andReturn(null);
|
||||
|
||||
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf();
|
||||
$collector->shouldReceive('setRange')->andReturnSelf();
|
||||
@@ -385,11 +495,12 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testNoBudgetAll(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testNoBudgetAll(%s)', $range));
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$collector = $this->mock(JournalCollectorInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->andReturn(TransactionJournal::first());
|
||||
$journalRepos->shouldReceive('firstNull')->andReturn(null);
|
||||
|
||||
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf();
|
||||
$collector->shouldReceive('setRange')->andReturnSelf();
|
||||
@@ -422,11 +533,12 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testNoBudgetDate(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testNoBudgetDate(%s)', $range));
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$collector = $this->mock(JournalCollectorInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->andReturn(TransactionJournal::first());
|
||||
$journalRepos->shouldReceive('firstNull')->andReturn(null);
|
||||
|
||||
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf();
|
||||
$collector->shouldReceive('setRange')->andReturnSelf();
|
||||
@@ -454,6 +566,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testPostUpdateIncome(): void
|
||||
{
|
||||
Log::debug('Now in testPostUpdateIncome()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
@@ -476,6 +589,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testShow(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testShow(%s)', $range));
|
||||
// mock stuff
|
||||
|
||||
$budgetLimit = factory(BudgetLimit::class)->make();
|
||||
@@ -516,6 +630,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testShowByBadBudgetLimit(): void
|
||||
{
|
||||
Log::debug('Now in testShowByBadBudgetLimit()');
|
||||
// mock stuff
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
@@ -534,6 +649,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testShowByBudgetLimit(string $range): void
|
||||
{
|
||||
Log::debug(sprintf('Now in testShowByBudgetLimit(%s)', $range));
|
||||
// mock stuff
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
@@ -570,6 +686,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testStore(): void
|
||||
{
|
||||
Log::debug('Now in testStore()');
|
||||
// mock stuff
|
||||
$budget = factory(Budget::class)->make();
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
@@ -595,6 +712,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testUpdate(): void
|
||||
{
|
||||
Log::debug('Now in testUpdate()');
|
||||
// mock stuff
|
||||
$budget = factory(Budget::class)->make();
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
@@ -621,6 +739,7 @@ class BudgetControllerTest extends TestCase
|
||||
*/
|
||||
public function testUpdateIncome(): void
|
||||
{
|
||||
Log::debug('Now in testUpdateIncome()');
|
||||
// must be in list
|
||||
$this->be($this->user());
|
||||
|
||||
|
@@ -317,13 +317,13 @@ class AccountControllerTest extends TestCase
|
||||
public function testReport(): void
|
||||
{
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(TransactionCurrency::find(1));
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(TransactionCurrency::find(1), null);
|
||||
$generator = $this->mock(GeneratorInterface::class);
|
||||
$generator->shouldReceive('multiSet')->andReturn([]);
|
||||
Steam::shouldReceive('balanceInRange')->andReturn(['2012-01-01' => '0']);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('chart.account.report', ['1', '20120101', '20120131']));
|
||||
$response = $this->get(route('chart.account.report', ['1,2', '20120101', '20120131']));
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
|
@@ -191,6 +191,43 @@ class IndexControllerTest extends TestCase
|
||||
$response->assertRedirect(route('import.job.configuration.index', ['file_job_1']));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Import\IndexController
|
||||
*/
|
||||
public function testDownload(): void
|
||||
{
|
||||
// mock stuff:
|
||||
$repository = $this->mock(ImportJobRepositoryInterface::class);
|
||||
$userRepository = $this->mock(UserRepositoryInterface::class);
|
||||
$fakePrerequisites = $this->mock(FakePrerequisites::class);
|
||||
$bunqPrerequisites = $this->mock(BunqPrerequisites::class);
|
||||
$spectrePrerequisites = $this->mock(SpectrePrerequisites::class);
|
||||
$filePrerequisites = $this->mock(FilePrerequisites::class);
|
||||
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'dc_' . random_int(1, 1000);
|
||||
$job->status = 'ready_to_run';
|
||||
$job->stage = 'go-for-import';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$fakeConfig = [
|
||||
'hi' => 'there',
|
||||
1 => true,
|
||||
'column-mapping-config' => ['a', 'b', 'c'],
|
||||
];
|
||||
|
||||
$repository->shouldReceive('getConfiguration')->andReturn($fakeConfig)->once();
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('import.job.download', [$job->key]));
|
||||
$response->assertStatus(200);
|
||||
$response->assertExactJson(['column-mapping-config' => [], 'delimiter' => ',', 'hi' => 'there', 1 => true]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Import\IndexController
|
||||
*/
|
||||
|
@@ -80,7 +80,7 @@ class JobStatusControllerTest extends TestCase
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'Bfake_job_' . random_int(1, 1000);
|
||||
$job->status = 'ready_to_run';
|
||||
$job->provider = 'fake';
|
||||
$job->provider = 'file';
|
||||
$job->transactions = [];
|
||||
$job->file_type = '';
|
||||
$job->save();
|
||||
|
@@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Controllers;
|
||||
|
||||
use Amount;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
@@ -29,8 +30,8 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Tests\TestCase;
|
||||
use Mockery;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class JavascriptControllerTest
|
||||
@@ -63,7 +64,7 @@ class JavascriptControllerTest extends TestCase
|
||||
$accountRepos->shouldReceive('getAccountsByType')->andReturn(new Collection([$account]))
|
||||
->withArgs([[AccountType::DEFAULT, AccountType::ASSET]])->once();
|
||||
$currencyRepos->shouldReceive('findByCodeNull')->withArgs(['EUR'])->andReturn(new TransactionCurrency);
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(),'currency_id'])->andReturn('1');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1');
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('javascript.accounts'));
|
||||
@@ -80,7 +81,6 @@ class JavascriptControllerTest extends TestCase
|
||||
$repository->shouldReceive('get')->andReturn(new Collection([$currency]));
|
||||
|
||||
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('javascript.currencies'));
|
||||
$response->assertStatus(200);
|
||||
@@ -100,7 +100,33 @@ class JavascriptControllerTest extends TestCase
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$accountRepos->shouldReceive('findNull')->andReturn(new Account);
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(TransactionCurrency::find(1));
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(),'currency_id'])->andReturn('1');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1');
|
||||
$this->be($this->user());
|
||||
$this->changeDateRange($this->user(), $range);
|
||||
$response = $this->get(route('javascript.variables'));
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\JavascriptController::variables
|
||||
* @covers \FireflyIII\Http\Controllers\JavascriptController::getDateRangeConfig
|
||||
*
|
||||
* @param string $range
|
||||
*
|
||||
* @dataProvider dateRangeProvider
|
||||
*/
|
||||
public function testVariablesNull(string $range): void
|
||||
{
|
||||
Amount::shouldReceive('getDefaultCurrency')->andReturn(TransactionCurrency::find(1))->times(2);
|
||||
Amount::shouldReceive('getJsConfig')->andReturn([])->once();
|
||||
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$accountRepos->shouldReceive('findNull')->andReturn(new Account);
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(null);
|
||||
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1');
|
||||
$this->be($this->user());
|
||||
$this->changeDateRange($this->user(), $range);
|
||||
$response = $this->get(route('javascript.variables'));
|
||||
@@ -121,7 +147,7 @@ class JavascriptControllerTest extends TestCase
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$accountRepos->shouldReceive('findNull')->andReturn(new Account);
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(TransactionCurrency::find(1));
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(),'currency_id'])->andReturn('1');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1');
|
||||
|
||||
$this->be($this->user());
|
||||
$this->changeDateRange($this->user(), $range);
|
||||
|
@@ -25,13 +25,17 @@ namespace Tests\Feature\Controllers\Json;
|
||||
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Models\Tag;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
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;
|
||||
@@ -75,7 +79,7 @@ class AutoCompleteControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController::allTransactionJournals
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
|
||||
*/
|
||||
public function testAllTransactionJournals(): void
|
||||
{
|
||||
@@ -90,7 +94,39 @@ class AutoCompleteControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController::budgets
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
|
||||
*/
|
||||
public function testBills(): void
|
||||
{
|
||||
$repository = $this->mock(BillRepositoryInterface::class);
|
||||
$bills = factory(Bill::class, 10)->make();
|
||||
|
||||
$repository->shouldReceive('getActiveBills')->andReturn($bills);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('json.bills'));
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
|
||||
*/
|
||||
public function testCurrencyNames(): void
|
||||
{
|
||||
$repository = $this->mock(CurrencyRepositoryInterface::class);
|
||||
|
||||
$currency = TransactionCurrency::find(1);
|
||||
$repository->shouldReceive('get')->andReturn(new Collection([$currency]))->once();
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('json.currency-names'));
|
||||
$response->assertStatus(200);
|
||||
$response->assertExactJson(['Euro']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
|
||||
*/
|
||||
public function testBudgets(): void
|
||||
{
|
||||
@@ -107,7 +143,7 @@ class AutoCompleteControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController::categories
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
|
||||
*/
|
||||
public function testCategories(): void
|
||||
{
|
||||
@@ -124,7 +160,7 @@ class AutoCompleteControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController::expenseAccounts
|
||||
* @covers \FireflyIII\Http\Controllers\Json\AutoCompleteController
|
||||
*/
|
||||
public function testExpenseAccounts(): void
|
||||
{
|
||||
|
@@ -24,6 +24,7 @@ namespace Tests\Feature\Controllers\Json;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||
@@ -49,7 +50,7 @@ class BoxControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController::available
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController
|
||||
*/
|
||||
public function testAvailable(): void
|
||||
{
|
||||
@@ -69,6 +70,27 @@ class BoxControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController
|
||||
*/
|
||||
public function testAvailableDays(): void
|
||||
{
|
||||
$return = [
|
||||
0 => [
|
||||
'spent' => '-800', // more than budgeted.
|
||||
],
|
||||
];
|
||||
$repository = $this->mock(BudgetRepositoryInterface::class);
|
||||
$repository->shouldReceive('getAvailableBudget')->andReturn('1000');
|
||||
$repository->shouldReceive('getActiveBudgets')->andReturn(new Collection);
|
||||
$repository->shouldReceive('collectBudgetInformation')->andReturn($return);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('json.box.available'));
|
||||
$response->assertStatus(200);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController::balance
|
||||
*/
|
||||
@@ -90,6 +112,31 @@ class BoxControllerTest extends TestCase
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController::balance
|
||||
*/
|
||||
public function testBalanceTransactions(): void
|
||||
{
|
||||
$transaction = new Transaction;
|
||||
$transaction->transaction_currency_id = 1;
|
||||
$transaction->transaction_amount ='5';
|
||||
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$collector = $this->mock(JournalCollectorInterface::class);
|
||||
|
||||
// try a collector for income:
|
||||
/** @var JournalCollectorInterface $collector */
|
||||
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf();
|
||||
$collector->shouldReceive('setRange')->andReturnSelf();
|
||||
$collector->shouldReceive('setTypes')->andReturnSelf();
|
||||
$collector->shouldReceive('withOpposingAccount')->andReturnSelf();
|
||||
$collector->shouldReceive('getJournals')->andReturn(new Collection([$transaction]));
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('json.box.balance'));
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController::bills
|
||||
*/
|
||||
@@ -121,6 +168,42 @@ class BoxControllerTest extends TestCase
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController::netWorth()
|
||||
*/
|
||||
public function testNetWorthVirtual(): void
|
||||
{
|
||||
$account = $this->user()->accounts()->first();
|
||||
$account->virtual_balance = '1000';
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$accountRepos->shouldReceive('getActiveAccountsByType')->andReturn(new Collection([$account]));
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(TransactionCurrency::find(1));
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'accountRole'])->andReturn('ccAsset');
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('json.box.net-worth'));
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController::netWorth()
|
||||
*/
|
||||
public function testNetWorthNoCurrency(): void
|
||||
{
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$accountRepos->shouldReceive('getActiveAccountsByType')->andReturn(new Collection([$this->user()->accounts()->first()]));
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(null);
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'currency_id'])->andReturn('1');
|
||||
$accountRepos->shouldReceive('getMetaValue')->withArgs([Mockery::any(), 'accountRole'])->andReturn('ccAsset');
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('json.box.net-worth'));
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController::netWorth()
|
||||
*/
|
||||
|
@@ -50,8 +50,7 @@ class NewUserControllerTest extends TestCase
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::index
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController
|
||||
*/
|
||||
public function testIndex(): void
|
||||
{
|
||||
@@ -68,8 +67,7 @@ class NewUserControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::index
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController
|
||||
*/
|
||||
public function testIndexExisting(): void
|
||||
{
|
||||
@@ -86,9 +84,7 @@ class NewUserControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::submit
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::createAssetAccount
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::createSavingsAccount
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController
|
||||
*/
|
||||
public function testSubmit(): void
|
||||
{
|
||||
@@ -114,7 +110,34 @@ class NewUserControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController::submit
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController
|
||||
*/
|
||||
public function testSubmitNull(): void
|
||||
{
|
||||
// mock stuff
|
||||
$currencyRepos = $this->mock(CurrencyRepositoryInterface::class);
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$accountRepos->shouldReceive('store')->times(3);
|
||||
$currencyRepos->shouldReceive('findNull')->andReturn(null);
|
||||
$currencyRepos->shouldReceive('findByCodeNull')->withArgs(['EUR'])->andReturn(TransactionCurrency::find(2))->once();
|
||||
|
||||
$data = [
|
||||
'bank_name' => 'New bank',
|
||||
'savings_balance' => '1000',
|
||||
'bank_balance' => '100',
|
||||
'language' => 'en_US',
|
||||
'amount_currency_id_bank_balance' => 1,
|
||||
];
|
||||
$this->be($this->emptyUser());
|
||||
$response = $this->post(route('new-user.submit'), $data);
|
||||
$response->assertStatus(302);
|
||||
$response->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\NewUserController
|
||||
*/
|
||||
public function testSubmitSingle(): void
|
||||
{
|
||||
|
@@ -34,6 +34,7 @@ use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Steam;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -57,7 +58,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::add
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testAdd(): void
|
||||
{
|
||||
@@ -74,7 +75,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::addMobile
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testAddMobile(): void
|
||||
{
|
||||
@@ -92,7 +93,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::create
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testCreate(): void
|
||||
{
|
||||
@@ -124,7 +125,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::delete
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testDelete(): void
|
||||
{
|
||||
@@ -139,7 +140,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::destroy
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testDestroy(): void
|
||||
{
|
||||
@@ -159,7 +160,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::edit
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testEdit(): void
|
||||
{
|
||||
@@ -189,8 +190,8 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::index
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testIndex(): void
|
||||
{
|
||||
@@ -217,7 +218,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::postAdd
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testPostAdd(): void
|
||||
{
|
||||
@@ -239,7 +240,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
/**
|
||||
* Add way too much
|
||||
*
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::postAdd
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testPostAddTooMuch(): void
|
||||
{
|
||||
@@ -258,7 +259,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::postRemove
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testPostRemove(): void
|
||||
{
|
||||
@@ -278,7 +279,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::postRemove
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testPostRemoveTooMuch(): void
|
||||
{
|
||||
@@ -297,7 +298,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::remove
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testRemove(): void
|
||||
{
|
||||
@@ -311,7 +312,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::removeMobile
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testRemoveMobile(): void
|
||||
{
|
||||
@@ -326,7 +327,25 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::show
|
||||
* Test setting of order/
|
||||
*
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testSetOrder(): void
|
||||
{
|
||||
// mock stuff
|
||||
$repository = $this->mock(PiggyBankRepositoryInterface::class);
|
||||
$repository->shouldReceive('setOrder')->once()->withArgs([Mockery::any(), 3])->andReturn(false);
|
||||
|
||||
$data = ['order' => '3'];
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('piggy-banks.set-order', [1]), $data);
|
||||
$response->assertStatus(200);
|
||||
$response->assertExactJson(['data' => 'OK']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
*/
|
||||
public function testShow(): void
|
||||
{
|
||||
@@ -340,7 +359,6 @@ class PiggyBankControllerTest extends TestCase
|
||||
$repository->shouldReceive('getCurrentAmount')->andReturn('1');
|
||||
|
||||
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('piggy-banks.show', [1]));
|
||||
$response->assertStatus(200);
|
||||
@@ -348,7 +366,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::store
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
* @covers \FireflyIII\Http\Requests\PiggyBankFormRequest
|
||||
*/
|
||||
public function testStore(): void
|
||||
@@ -374,7 +392,7 @@ class PiggyBankControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController::update
|
||||
* @covers \FireflyIII\Http\Controllers\PiggyBankController
|
||||
* @covers \FireflyIII\Http\Requests\PiggyBankFormRequest
|
||||
*/
|
||||
public function testUpdate(): void
|
||||
|
@@ -30,6 +30,7 @@ use FireflyIII\User;
|
||||
use Google2FA;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -108,7 +109,7 @@ class ProfileControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController::confirmEmailChange()
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController::confirmEmailChange()
|
||||
*/
|
||||
public function testConfirmEmailWithToken(): void
|
||||
{
|
||||
@@ -158,8 +159,112 @@ class ProfileControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController::index
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController
|
||||
*/
|
||||
public function testEnable2FADemo(): void
|
||||
{
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->once()->andReturn(true);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('profile.enable2FA'));
|
||||
$response->assertStatus(302);
|
||||
$response->assertRedirect(route('profile.index'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController
|
||||
*/
|
||||
public function testEnable2FANoSecret(): void
|
||||
{
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->once()->andReturn(false);
|
||||
|
||||
// ask about language:
|
||||
$langPreference = new Preference;
|
||||
$langPreference->data = 'en_US';
|
||||
Preferences::shouldReceive('get')->withArgs(['language', 'en_US'])->andReturn($langPreference)->times(2);
|
||||
|
||||
// ask about twoFactorAuthEnabled
|
||||
$truePref = new Preference;
|
||||
$truePref->data = true;
|
||||
Preferences::shouldReceive('get')->withArgs(['twoFactorAuthEnabled', false])->andReturn($truePref)->times(1);
|
||||
|
||||
// ask about range
|
||||
$rangePref = new Preference;
|
||||
$rangePref->data = '1M';
|
||||
Preferences::shouldReceive('get')->withArgs(['viewRange', '1M'])->andReturn($rangePref)->once();
|
||||
|
||||
// ask about list length:
|
||||
$listPref = new Preference;
|
||||
$listPref->data = '50';
|
||||
Preferences::shouldReceive('get')->withArgs(['list-length', '10'])->andReturn($listPref)->once();
|
||||
|
||||
|
||||
// ask about currency
|
||||
$currencyPref = new Preference;
|
||||
$currencyPref->data = 'EUR';
|
||||
Preferences::shouldReceive('getForUser')->once()->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($currencyPref);
|
||||
Preferences::shouldReceive('lastActivity')->once();
|
||||
Preferences::shouldReceive('get')->withArgs(['twoFactorAuthSecret'])->twice()->andReturnNull();
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('profile.enable2FA'));
|
||||
$response->assertStatus(302);
|
||||
$response->assertRedirect(route('profile.code'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController
|
||||
*/
|
||||
public function testEnable2FASecret(): void
|
||||
{
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->once()->andReturn(false);
|
||||
|
||||
// ask about language:
|
||||
$langPreference = new Preference;
|
||||
$langPreference->data = 'en_US';
|
||||
Preferences::shouldReceive('get')->withArgs(['language', 'en_US'])->andReturn($langPreference)->times(2);
|
||||
|
||||
// ask about twoFactorAuthEnabled
|
||||
$truePref = new Preference;
|
||||
$truePref->data = true;
|
||||
Preferences::shouldReceive('get')->withArgs(['twoFactorAuthEnabled', false])->andReturn($truePref)->times(1);
|
||||
|
||||
// ask about range
|
||||
$rangePref = new Preference;
|
||||
$rangePref->data = '1M';
|
||||
Preferences::shouldReceive('get')->withArgs(['viewRange', '1M'])->andReturn($rangePref)->once();
|
||||
|
||||
// ask about list length:
|
||||
$listPref = new Preference;
|
||||
$listPref->data = '50';
|
||||
Preferences::shouldReceive('get')->withArgs(['list-length', '10'])->andReturn($listPref)->once();
|
||||
|
||||
$secretPref= new Preference;
|
||||
$secretPref->data = 'X';
|
||||
Preferences::shouldReceive('get')->withArgs(['twoFactorAuthSecret'])->twice()->andReturn(null,$secretPref);
|
||||
|
||||
// set pref
|
||||
Preferences::shouldReceive('set')->once()->withArgs(['twoFactorAuthEnabled', 1]);
|
||||
|
||||
|
||||
// ask about currency
|
||||
$currencyPref = new Preference;
|
||||
$currencyPref->data = 'EUR';
|
||||
Preferences::shouldReceive('getForUser')->once()->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($currencyPref);
|
||||
Preferences::shouldReceive('lastActivity')->once();
|
||||
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('profile.enable2FA'));
|
||||
$response->assertStatus(302);
|
||||
$response->assertRedirect(route('profile.index'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\ProfileController
|
||||
*/
|
||||
public function testIndex(): void
|
||||
{
|
||||
|
@@ -25,19 +25,22 @@ namespace Tests\Feature\Controllers;
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Jobs\ExecuteRuleOnExistingTransactions;
|
||||
use FireflyIII\Jobs\Job;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||
use FireflyIII\TransactionRules\TransactionMatcher;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Queue;
|
||||
use Tests\TestCase;
|
||||
use Log;
|
||||
|
||||
/**
|
||||
* Class RuleControllerTest
|
||||
*
|
||||
@@ -58,24 +61,45 @@ class RuleControllerTest extends TestCase
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::create
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testCreate(): void
|
||||
{
|
||||
// mock stuff
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$billRepos = $this->mock(BillRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('rules.create', [1]));
|
||||
$response->assertStatus(200);
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
$response->assertViewHas('returnToBill', false);
|
||||
$response->assertViewHas('bill', null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::create
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getPreviousTriggers
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getPreviousActions
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testCreateBill(): void
|
||||
{
|
||||
// mock stuff
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$billRepos = $this->mock(BillRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
$billRepos->shouldReceive('find')->withArgs([1])->andReturn(Bill::find(1))->once();
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('rules.create', [1]) . '?return=true&fromBill=1');
|
||||
$response->assertStatus(200);
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
$response->assertViewHas('returnToBill', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testCreatePreviousInput(): void
|
||||
{
|
||||
@@ -100,7 +124,24 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::delete
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testCreateReturn(): void
|
||||
{
|
||||
// mock stuff
|
||||
$journalRepos = $this->mock(JournalRepositoryInterface::class);
|
||||
$billRepos = $this->mock(BillRepositoryInterface::class);
|
||||
$journalRepos->shouldReceive('firstNull')->once()->andReturn(new TransactionJournal);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('rules.create', [1]) . '?return=true');
|
||||
$response->assertStatus(200);
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
$response->assertViewHas('returnToBill', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testDelete(): void
|
||||
{
|
||||
@@ -115,7 +156,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::destroy
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testDestroy(): void
|
||||
{
|
||||
@@ -134,7 +175,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::down
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testDown(): void
|
||||
{
|
||||
@@ -151,9 +192,9 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::edit
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getCurrentActions
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getCurrentTriggers
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testEdit(): void
|
||||
{
|
||||
@@ -172,9 +213,9 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::edit
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getPreviousActions
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getPreviousTriggers
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testEditPreviousInput(): void
|
||||
{
|
||||
@@ -203,7 +244,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::execute
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testExecute(): void
|
||||
{
|
||||
@@ -233,10 +274,10 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::index
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::createDefaultRule
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::createDefaultRuleGroup
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testIndex(): void
|
||||
{
|
||||
@@ -259,7 +300,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::reorderRuleActions
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testReorderRuleActions(): void
|
||||
{
|
||||
@@ -277,7 +318,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::reorderRuleTriggers
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testReorderRuleTriggers(): void
|
||||
{
|
||||
@@ -295,7 +336,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::selectTransactions()
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testSelectTransactions(): void
|
||||
{
|
||||
@@ -309,7 +350,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::store
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Requests\RuleFormRequest
|
||||
*/
|
||||
public function testStore(): void
|
||||
@@ -349,8 +390,8 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::testTriggers
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getValidTriggerList
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testTestTriggers(): void
|
||||
{
|
||||
@@ -377,7 +418,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::testTriggersByRule()
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testTestTriggersByRule(): void
|
||||
{
|
||||
@@ -398,8 +439,8 @@ class RuleControllerTest extends TestCase
|
||||
/**
|
||||
* This actually hits an error and not the actually code but OK.
|
||||
*
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::testTriggers
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getValidTriggerList
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testTestTriggersError(): void
|
||||
{
|
||||
@@ -413,8 +454,8 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::testTriggers
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::getValidTriggerList
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testTestTriggersMax(): void
|
||||
{
|
||||
@@ -442,7 +483,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::up
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
*/
|
||||
public function testUp(): void
|
||||
{
|
||||
@@ -459,7 +500,7 @@ class RuleControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController::update
|
||||
* @covers \FireflyIII\Http\Controllers\RuleController
|
||||
* @covers \FireflyIII\Http\Requests\RuleFormRequest
|
||||
*/
|
||||
public function testUpdate(): void
|
||||
|
@@ -54,10 +54,10 @@ class TransactionControllerTest extends TestCase
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::index
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::getPeriodOverview
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::sumPerCurrency
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testIndex(): void
|
||||
{
|
||||
@@ -91,7 +91,7 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::index
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testIndexAll(): void
|
||||
{
|
||||
@@ -125,9 +125,9 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::index
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::getPeriodOverview
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::sumPerCurrency
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testIndexByDate(): void
|
||||
{
|
||||
@@ -168,10 +168,53 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::index
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::getPeriodOverview
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::sumPerCurrency
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testIndexByDateReversed(): void
|
||||
{
|
||||
$transaction = new Transaction;
|
||||
$transaction->transaction_currency_id = 1;
|
||||
$transaction->transaction_currency_symbol = 'x';
|
||||
$transaction->transaction_currency_code = 'ABC';
|
||||
$transaction->transaction_currency_dp = 2;
|
||||
$transaction->transaction_amount = '5';
|
||||
$collection = new Collection([$transaction]);
|
||||
|
||||
|
||||
// mock stuff
|
||||
$repository = $this->mock(JournalRepositoryInterface::class);
|
||||
$collector = $this->mock(JournalCollectorInterface::class);
|
||||
$transfer = $this->user()->transactionJournals()->inRandomOrder()->where('transaction_type_id', 3)->first();
|
||||
$repository->shouldReceive('firstNull')->once()->andReturn($transfer);
|
||||
$repository->shouldReceive('firstNull')->once()->andReturn($transfer);
|
||||
|
||||
$collector->shouldReceive('setTypes')->andReturnSelf();
|
||||
$collector->shouldReceive('setLimit')->andReturnSelf();
|
||||
$collector->shouldReceive('setPage')->andReturnSelf();
|
||||
$collector->shouldReceive('setAllAssetAccounts')->andReturnSelf();
|
||||
$collector->shouldReceive('addFilter')->andReturnSelf();
|
||||
$collector->shouldReceive('setRange')->andReturnSelf();
|
||||
$collector->shouldReceive('withBudgetInformation')->andReturnSelf();
|
||||
$collector->shouldReceive('withCategoryInformation')->andReturnSelf();
|
||||
$collector->shouldReceive('withOpposingAccount')->andReturnSelf();
|
||||
$collector->shouldReceive('removeFilter')->withArgs([InternalTransferFilter::class])->andReturnSelf();
|
||||
$collector->shouldReceive('getPaginatedJournals')->andReturn(new LengthAwarePaginator([], 0, 10));
|
||||
$collector->shouldReceive('getJournals')->andReturn($collection);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('transactions.index', ['transfer', '2016-01-01','2015-12-31']));
|
||||
$response->assertStatus(200);
|
||||
// has bread crumb
|
||||
$response->assertSee('<ol class="breadcrumb">');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testIndexDeposit(): void
|
||||
{
|
||||
@@ -211,10 +254,10 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::index
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::__construct
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::getPeriodOverview
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::sumPerCurrency
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testIndexWithdrawal(): void
|
||||
{
|
||||
@@ -254,7 +297,7 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::reconcile
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testReconcile(): void
|
||||
{
|
||||
@@ -271,7 +314,7 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::reorder
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testReorder(): void
|
||||
{
|
||||
@@ -293,8 +336,8 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::show
|
||||
* @covers \FireflyIII\Http\Controllers\Controller::isOpeningBalance
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
* @covers \FireflyIII\Http\Controllers\Controller
|
||||
*/
|
||||
public function testShow(): void
|
||||
{
|
||||
@@ -316,8 +359,8 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Controller::redirectToAccount
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController::show
|
||||
* @covers \FireflyIII\Http\Controllers\Controller
|
||||
* @covers \FireflyIII\Http\Controllers\TransactionController
|
||||
*/
|
||||
public function testShowOpeningBalance(): void
|
||||
{
|
||||
|
Reference in New Issue
Block a user