mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
This should fix all tests, although coverage isn't quite there yet.
This commit is contained in:
parent
c99a8a6072
commit
ae95d60c46
@ -133,16 +133,16 @@ class PiggybankController extends BaseController
|
||||
break;
|
||||
case 'add':
|
||||
$maxAdd = $this->_repository->leftOnAccount($piggyBank->account);
|
||||
if (round($amount,2) <= round(min($maxAdd, $piggyBank->targetamount),2)) {
|
||||
Session::flash('success','Amount updated!');
|
||||
if (round($amount, 2) <= round(min($maxAdd, $piggyBank->targetamount), 2)) {
|
||||
Session::flash('success', 'Amount updated!');
|
||||
$this->_repository->modifyAmount($piggyBank, $amount);
|
||||
} else {
|
||||
Session::flash('warning','Could not!');
|
||||
Session::flash('warning', 'Could not!');
|
||||
}
|
||||
break;
|
||||
case 'remove':
|
||||
$maxRemove = $piggyBank->currentRelevantRep()->currentamount;
|
||||
if(round($amount,2) <= round($maxRemove,2)) {
|
||||
if (round($amount, 2) <= round($maxRemove, 2)) {
|
||||
$this->_repository->modifyAmount($piggyBank, ($amount * -1));
|
||||
}
|
||||
break;
|
||||
@ -250,13 +250,4 @@ class PiggybankController extends BaseController
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Piggybank $piggybank
|
||||
*/
|
||||
public function updateAmount(Piggybank $piggybank)
|
||||
{
|
||||
Event::fire('piggybanks.change');
|
||||
$this->_repository->updateAmount($piggybank, Input::get('amount'));
|
||||
}
|
||||
}
|
@ -27,7 +27,7 @@ class EloquentLimitTrigger
|
||||
*/
|
||||
public function updateLimitRepetitions()
|
||||
{
|
||||
if (!\Auth::check()) {
|
||||
if (!\Auth::check() || is_null(\Auth::user())) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -30,118 +30,121 @@ class EloquentPiggybankTrigger
|
||||
public function updatePiggybankRepetitions()
|
||||
{
|
||||
// grab all piggy banks.
|
||||
$piggybanks = \Auth::user()->piggybanks()->with(['piggybankrepetitions'])->where('repeats', 0)->get();
|
||||
$today = new Carbon;
|
||||
/** @var \Piggybank $piggy */
|
||||
foreach ($piggybanks as $piggy) {
|
||||
if (count($piggy->piggybankrepetitions) == 0) {
|
||||
if (\Auth::check()) {
|
||||
$piggybanks = \Auth::user()->piggybanks()->with(['piggybankrepetitions'])->where('repeats', 0)->get();
|
||||
$today = new Carbon;
|
||||
/** @var \Piggybank $piggy */
|
||||
foreach ($piggybanks as $piggy) {
|
||||
if (count($piggy->piggybankrepetitions) == 0) {
|
||||
$rep = new \PiggybankRepetition;
|
||||
$rep->piggybank()->associate($piggy);
|
||||
$rep->targetdate = $piggy->targetdate;
|
||||
$rep->startdate = $piggy->startdate;
|
||||
$rep->currentamount = 0;
|
||||
try {
|
||||
$rep->save();
|
||||
} catch (QueryException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
// whatever we did here, we now have all repetitions for this
|
||||
// piggy bank, and we can find transactions that fall within
|
||||
// that repetition (to fix the "saved amount".
|
||||
$reps = $piggy->piggybankrepetitions()->get();
|
||||
/** @var \PiggybankRepetition $rep */
|
||||
foreach ($reps as $rep) {
|
||||
if ($rep->currentamount == 0) {
|
||||
$query = \Transaction::where('piggybank_id', $piggy->id)->leftJoin(
|
||||
'transaction_journals', 'transaction_journals.id', '=',
|
||||
'transactions.transaction_journal_id'
|
||||
);
|
||||
if (!is_null($rep->startdate)) {
|
||||
$query->where('transaction_journals.date', '>=', $rep->startdate->format('Y-m-d'));
|
||||
}
|
||||
if (!is_null($rep->targetdate)) {
|
||||
$query->where(
|
||||
'transaction_journals.date', '<=', $rep->targetdate->format('Y-m-d')
|
||||
);
|
||||
}
|
||||
$sum = $query->sum('transactions.amount');
|
||||
$rep->currentamount = floatval($sum);
|
||||
}
|
||||
$rep->save();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
unset($piggy, $piggybanks, $rep);
|
||||
|
||||
// grab all repeated transactions.
|
||||
$repeatedExpenses = \Auth::user()->piggybanks()->with(['piggybankrepetitions'])->where('repeats', 1)->get();
|
||||
/** @var \Piggybank $repeated */
|
||||
foreach ($repeatedExpenses as $repeated) {
|
||||
// loop from start to today or something
|
||||
$rep = new \PiggybankRepetition;
|
||||
$rep->piggybank()->associate($piggy);
|
||||
$rep->targetdate = $piggy->targetdate;
|
||||
$rep->startdate = $piggy->startdate;
|
||||
$rep->piggybank()->associate($repeated);
|
||||
$rep->startdate = $repeated->startdate;
|
||||
$rep->targetdate = $repeated->targetdate;
|
||||
$rep->currentamount = 0;
|
||||
try {
|
||||
$rep->save();
|
||||
} catch (QueryException $e) {
|
||||
}
|
||||
}
|
||||
unset($rep);
|
||||
|
||||
// whatever we did here, we now have all repetitions for this
|
||||
// piggy bank, and we can find transactions that fall within
|
||||
// that repetition (to fix the "saved amount".
|
||||
$reps = $piggy->piggybankrepetitions()->get();
|
||||
/** @var \PiggybankRepetition $rep */
|
||||
foreach ($reps as $rep) {
|
||||
if ($rep->currentamount == 0) {
|
||||
$query = \Transaction::where('piggybank_id', $piggy->id)->leftJoin(
|
||||
if ($repeated->targetdate <= $today) {
|
||||
// add 1 month to startdate, or maybe X period, like 3 weeks.
|
||||
$startTarget = clone $repeated->targetdate;
|
||||
while ($startTarget <= $today) {
|
||||
$startCurrent = clone $startTarget;
|
||||
|
||||
// add some kind of period to start current making $endCurrent.
|
||||
$endCurrent = clone $startCurrent;
|
||||
switch ($repeated->rep_length) {
|
||||
default:
|
||||
die('No rep lengt!');
|
||||
break;
|
||||
case 'day':
|
||||
$endCurrent->addDays($repeated->rep_every);
|
||||
break;
|
||||
case 'week':
|
||||
$endCurrent->addWeeks($repeated->rep_every);
|
||||
break;
|
||||
case 'month':
|
||||
$endCurrent->addMonths($repeated->rep_every);
|
||||
break;
|
||||
case 'year':
|
||||
$endCurrent->addYears($repeated->rep_every);
|
||||
break;
|
||||
}
|
||||
|
||||
$rep = new \PiggybankRepetition;
|
||||
$rep->piggybank()->associate($repeated);
|
||||
$rep->startdate = $startCurrent;
|
||||
$rep->targetdate = $endCurrent;
|
||||
$rep->currentamount = 0;
|
||||
$startTarget = $endCurrent;
|
||||
try {
|
||||
$rep->save();
|
||||
} catch (QueryException $e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
$reps = $repeated->piggybankrepetitions()->get();
|
||||
/** @var \PiggybankRepetition $rep */
|
||||
foreach ($reps as $rep) {
|
||||
$sum = \Transaction::where('piggybank_id', $repeated->id)->leftJoin(
|
||||
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
||||
);
|
||||
if (!is_null($rep->startdate)) {
|
||||
$query->where('transaction_journals.date', '>=', $rep->startdate->format('Y-m-d'));
|
||||
}
|
||||
if (!is_null($rep->targetdate)) {
|
||||
$query->where(
|
||||
)->where('transaction_journals.date', '>=', $rep->startdate->format('Y-m-d'))->where(
|
||||
'transaction_journals.date', '<=', $rep->targetdate->format('Y-m-d')
|
||||
);
|
||||
}
|
||||
$sum = $query->sum('transactions.amount');
|
||||
)->sum('transactions.amount');
|
||||
$rep->currentamount = floatval($sum);
|
||||
$rep->save();
|
||||
|
||||
|
||||
}
|
||||
$rep->save();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
unset($piggy, $piggybanks, $rep);
|
||||
|
||||
// grab all repeated transactions.
|
||||
$repeatedExpenses = \Auth::user()->piggybanks()->with(['piggybankrepetitions'])->where('repeats', 1)->get();
|
||||
/** @var \Piggybank $repeated */
|
||||
foreach ($repeatedExpenses as $repeated) {
|
||||
// loop from start to today or something
|
||||
$rep = new \PiggybankRepetition;
|
||||
$rep->piggybank()->associate($repeated);
|
||||
$rep->startdate = $repeated->startdate;
|
||||
$rep->targetdate = $repeated->targetdate;
|
||||
$rep->currentamount = 0;
|
||||
try {
|
||||
$rep->save();
|
||||
} catch (QueryException $e) {
|
||||
}
|
||||
unset($rep);
|
||||
|
||||
if ($repeated->targetdate <= $today) {
|
||||
// add 1 month to startdate, or maybe X period, like 3 weeks.
|
||||
$startTarget = clone $repeated->targetdate;
|
||||
while ($startTarget <= $today) {
|
||||
$startCurrent = clone $startTarget;
|
||||
|
||||
// add some kind of period to start current making $endCurrent.
|
||||
$endCurrent = clone $startCurrent;
|
||||
switch ($repeated->rep_length) {
|
||||
default:
|
||||
die('No rep lengt!');
|
||||
break;
|
||||
case 'day':
|
||||
$endCurrent->addDays($repeated->rep_every);
|
||||
break;
|
||||
case 'week':
|
||||
$endCurrent->addWeeks($repeated->rep_every);
|
||||
break;
|
||||
case 'month':
|
||||
$endCurrent->addMonths($repeated->rep_every);
|
||||
break;
|
||||
case 'year':
|
||||
$endCurrent->addYears($repeated->rep_every);
|
||||
break;
|
||||
}
|
||||
|
||||
$rep = new \PiggybankRepetition;
|
||||
$rep->piggybank()->associate($repeated);
|
||||
$rep->startdate = $startCurrent;
|
||||
$rep->targetdate = $endCurrent;
|
||||
$rep->currentamount = 0;
|
||||
$startTarget = $endCurrent;
|
||||
try {
|
||||
$rep->save();
|
||||
} catch (QueryException $e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
$reps = $repeated->piggybankrepetitions()->get();
|
||||
/** @var \PiggybankRepetition $rep */
|
||||
foreach ($reps as $rep) {
|
||||
$sum = \Transaction::where('piggybank_id', $repeated->id)->leftJoin(
|
||||
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
||||
)->where('transaction_journals.date', '>=', $rep->startdate->format('Y-m-d'))->where(
|
||||
'transaction_journals.date', '<=', $rep->targetdate->format('Y-m-d')
|
||||
)->sum('transactions.amount');
|
||||
$rep->currentamount = floatval($sum);
|
||||
$rep->save();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -233,6 +233,7 @@ class BudgetControllerTest extends TestCase
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
||||
$this->_repository->shouldReceive('update')->andReturn($budget);
|
||||
Event::shouldReceive('fire')->with('budgets.change');
|
||||
|
||||
$this->action('POST', 'BudgetController@update', $budget->id);
|
||||
$this->assertRedirectedToRoute('budgets.index.budget');
|
||||
@ -247,6 +248,8 @@ class BudgetControllerTest extends TestCase
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id);
|
||||
$this->_repository->shouldReceive('update')->andReturn($budget);
|
||||
Event::shouldReceive('fire')->with('budgets.change');
|
||||
//$this->_user->shouldReceive('budgets')->andReturn([]); // trigger
|
||||
|
||||
$this->action('POST', 'BudgetController@update', [$budget->id, 'from' => 'date']);
|
||||
$this->assertRedirectedToRoute('budgets.index');
|
||||
|
@ -32,14 +32,6 @@ class PiggybankControllerTest extends TestCase
|
||||
m::close();
|
||||
}
|
||||
|
||||
public function testCreate()
|
||||
{
|
||||
$this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->once()->andReturn([]);
|
||||
|
||||
$this->action('GET', 'PiggybankController@create');
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testDelete()
|
||||
{
|
||||
$piggyBank = f::create('Piggybank');
|
||||
@ -67,6 +59,9 @@ class PiggybankControllerTest extends TestCase
|
||||
$piggyBank->account()->first()->user_id
|
||||
);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||
$this->_piggybanks->shouldReceive('destroy')->andReturn(true);
|
||||
Event::shouldReceive('fire')->with('piggybanks.change');
|
||||
|
||||
|
||||
$this->action('POST', 'PiggybankController@destroy', $piggyBank->id);
|
||||
$this->assertResponseStatus(302);
|
||||
@ -103,7 +98,11 @@ class PiggybankControllerTest extends TestCase
|
||||
$three = f::create('Piggybank');
|
||||
$three->account()->associate($aTwo);
|
||||
$this->_piggybanks->shouldReceive('get')->andReturn([$one, $two, $three]);
|
||||
$this->_piggybanks->shouldReceive('count')->andReturn(1);
|
||||
$this->_piggybanks->shouldReceive('countRepeating')->andReturn(0);
|
||||
$this->_piggybanks->shouldReceive('countNonrepeating')->andReturn(0);
|
||||
Event::shouldReceive('fire')->with('piggybanks.change');
|
||||
|
||||
|
||||
$this->action('GET', 'PiggybankController@index');
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
@ -123,30 +122,7 @@ class PiggybankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testStore()
|
||||
{
|
||||
$piggyBank = f::create('Piggybank');
|
||||
$this->_piggybanks->shouldReceive('store')->andReturn($piggyBank);
|
||||
$this->action('POST', 'PiggybankController@store');
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
public function testStoreFails()
|
||||
{
|
||||
$piggyBank = f::create('Piggybank');
|
||||
unset($piggyBank->amount);
|
||||
$this->_piggybanks->shouldReceive('store')->andReturn($piggyBank);
|
||||
$this->action('POST', 'PiggybankController@store');
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
public function testStoreRedirect()
|
||||
{
|
||||
$piggyBank = f::create('Piggybank');
|
||||
$this->_piggybanks->shouldReceive('store')->andReturn($piggyBank);
|
||||
$this->action('POST', 'PiggybankController@store', ['create' => '1']);
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
public function testUpdate()
|
||||
{
|
||||
@ -161,6 +137,7 @@ class PiggybankControllerTest extends TestCase
|
||||
$piggyBank->account()->first()->user_id
|
||||
);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||
Event::shouldReceive('fire')->with('piggybanks.change');
|
||||
|
||||
$this->action('POST', 'PiggybankController@update', $piggyBank->id);
|
||||
$this->assertResponseStatus(302);
|
||||
@ -180,26 +157,13 @@ class PiggybankControllerTest extends TestCase
|
||||
$piggyBank->account()->first()->user_id
|
||||
);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||
Event::shouldReceive('fire')->with('piggybanks.change');
|
||||
|
||||
$this->action('POST', 'PiggybankController@update', $piggyBank->id);
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
public function testUpdateAmount()
|
||||
{
|
||||
$piggyBank = f::create('Piggybank');
|
||||
$this->_piggybanks->shouldReceive('updateAmount')->andReturn($piggyBank);
|
||||
// for binding
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->andReturn(
|
||||
$piggyBank->account()->first()->user_id
|
||||
);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email');
|
||||
|
||||
$this->action('POST', 'PiggybankController@updateAmount', $piggyBank->id);
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -16,6 +16,7 @@ class TransactionControllerTest extends TestCase
|
||||
|
||||
protected $_accounts;
|
||||
protected $_budgets;
|
||||
protected $_piggies;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
@ -26,6 +27,7 @@ class TransactionControllerTest extends TestCase
|
||||
$this->_repository = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$this->_accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$this->_budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$this->_piggies = $this->mock('Firefly\Storage\Piggybank\PiggybankRepositoryInterface');
|
||||
|
||||
}
|
||||
|
||||
@ -38,6 +40,8 @@ class TransactionControllerTest extends TestCase
|
||||
{
|
||||
$this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]);
|
||||
$this->_budgets->shouldReceive('getAsSelectList')->andReturn([]);
|
||||
$this->_piggies->shouldReceive('get')->andReturn([]);
|
||||
|
||||
$this->action('GET', 'TransactionController@create', ['what' => 'deposit']);
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
@ -46,6 +50,7 @@ class TransactionControllerTest extends TestCase
|
||||
{
|
||||
$this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]);
|
||||
$this->_budgets->shouldReceive('getAsSelectList')->andReturn([]);
|
||||
$this->_piggies->shouldReceive('get')->andReturn([]);
|
||||
$this->action('GET', 'TransactionController@create', ['what' => 'transfer']);
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
@ -54,6 +59,7 @@ class TransactionControllerTest extends TestCase
|
||||
{
|
||||
$this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]);
|
||||
$this->_budgets->shouldReceive('getAsSelectList')->andReturn([]);
|
||||
$this->_piggies->shouldReceive('get')->andReturn([]);
|
||||
$this->action('GET', 'TransactionController@create', ['what' => 'withdrawal']);
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
@ -21,8 +21,7 @@
|
||||
piggy bank
|
||||
@endif
|
||||
by transferring it from one of your accounts to "{{{$piggybank->account->name}}}". However,
|
||||
since there is still {{mf($maxAdd)}} on that account not locked in any piggy bank or repeated expense,
|
||||
you can also add it manually.
|
||||
since there is still {{mf($maxAdd)}} you can add manually.
|
||||
|
||||
@else
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user