diff --git a/app/controllers/TransactionController.php b/app/controllers/TransactionController.php index 3a8ccf0fe4..cd92e640a0 100644 --- a/app/controllers/TransactionController.php +++ b/app/controllers/TransactionController.php @@ -39,6 +39,8 @@ class TransactionController extends BaseController * * @param TransactionJournal $journal * + * @codeCoverageIgnore + * * @return array|\Illuminate\Http\JsonResponse */ public function alreadyRelated(TransactionJournal $journal) @@ -130,8 +132,10 @@ class TransactionController extends BaseController { $type = $transactionJournal->transactionType->type; $return = 'withdrawal'; - $this->_repository->destroy($transactionJournal); + Session::flash('success', 'Transaction "' . e($transactionJournal->description) . '" destroyed.'); + + $this->_repository->destroy($transactionJournal); switch ($type) { case 'Deposit': @@ -149,6 +153,8 @@ class TransactionController extends BaseController * TODO this needs cleaning up and thinking over. * * @return \Illuminate\Http\JsonResponse + * @codeCoverageIgnore + * */ public function doRelate() { @@ -259,6 +265,8 @@ class TransactionController extends BaseController * @param TransactionJournal $journal * * @return \Illuminate\View\View + * @codeCoverageIgnore + * */ public function relate(TransactionJournal $journal) { @@ -282,6 +290,8 @@ class TransactionController extends BaseController * * @param TransactionJournal $journal * + * @codeCoverageIgnore + * * @return \Illuminate\Http\JsonResponse */ public function relatedSearch(TransactionJournal $journal) @@ -385,6 +395,7 @@ class TransactionController extends BaseController * * @param TransactionJournal $journal * + * @codeCoverageIgnore * @return \Illuminate\Http\JsonResponse * @throws Exception */ @@ -420,39 +431,24 @@ class TransactionController extends BaseController $data = Input::except('_token'); $data['currency'] = 'EUR'; $data['what'] = strtolower($journal->transactionType->type); + $messages = $this->_repository->validate($data); - // always validate: - $messages = $this->_repository->validate($data); - - // flash messages: Session::flash('warnings', $messages['warnings']); Session::flash('successes', $messages['successes']); Session::flash('errors', $messages['errors']); if ($messages['errors']->count() > 0) { Session::flash('error', 'Could not update transaction: ' . $messages['errors']->first()); } - - - // return to update screen: if ($data['post_submit_action'] == 'validate_only' || $messages['errors']->count() > 0) { return Redirect::route('transactions.edit', $journal->id)->withInput(); } - - // update $this->_repository->update($journal, $data); Session::flash('success', 'Transaction "' . e($data['description']) . '" updated.'); - Event::fire('transactionJournal.update', [$journal]); // new and used. - - /* - * Also trigger on both transactions. - */ /** @var Transaction $transaction */ foreach ($journal->transactions()->get() as $transaction) { Event::fire('transaction.update', [$transaction]); } - - // go back to list if ($data['post_submit_action'] == 'update') { return Redirect::route('transactions.index', $data['what']); } diff --git a/app/database/seeds/TestContentSeeder.php b/app/database/seeds/TestContentSeeder.php index 111ca5bb5f..559887e47a 100644 --- a/app/database/seeds/TestContentSeeder.php +++ b/app/database/seeds/TestContentSeeder.php @@ -102,13 +102,15 @@ class TestContentSeeder extends Seeder ); + + PiggyBankEvent::create(['piggy_bank_id' => 1, 'date' => $startDate->format('Y-m-d'), 'amount' => 100]); PiggyBankRepetition::create( [ 'piggy_bank_id' => $piggy->id, 'startdate' => Carbon::now()->format('Y-m-d'), 'targetdate' => null, - 'currentamount' => 0 + 'currentamount' => 100 ] ); @@ -337,10 +339,35 @@ class TestContentSeeder extends Seeder } // create some big expenses, move some money around. - $this->createTransaction($savings, $checking, 1259, $transfer, 'Money for new PC', $end->format('Y-m') . '-11', $dollar); - $this->createTransaction($checking, $store, 1259, $withdrawal, 'New PC', $end->format('Y-m') . '-12', $euro); + $one = $this->createTransaction($savings, $checking, 1259, $transfer, 'Money for new PC', $end->format('Y-m') . '-11', $dollar); + $two = $this->createTransaction($checking, $store, 1259, $withdrawal, 'New PC', $end->format('Y-m') . '-12', $euro); - // create two budgets + // create a group for these two: + $group = TransactionGroup::create( + [ + 'user_id' => $user->id, + 'relation' => 'balance' + ] + ); + $group->transactionjournals()->save($one); + $group->transactionjournals()->save($two); + + + // piggy bank event + // add money to this piggy bank + // create a piggy bank event to match: + $intoPiggy = $this->createTransaction( + $checking, $savings, 100, $transfer, 'Money for piggy', + Carbon::now()->addDay()->format('Y-m-d'), $euro, $groceriesBudget, $house + ); + $event = PiggyBankEvent::create( + [ + 'piggy_bank_id' => $piggy->id, + 'transaction_journal_id' => $intoPiggy->id, + 'date' => Carbon::now()->addDay()->format('Y-m-d'), + 'amount' => 100 + ] + ); // create two categories diff --git a/app/views/transactions/create.blade.php b/app/views/transactions/create.blade.php index 5573bc0bce..5cb557e1fa 100644 --- a/app/views/transactions/create.blade.php +++ b/app/views/transactions/create.blade.php @@ -1,7 +1,7 @@ @extends('layouts.default') @section('content') {{ Breadcrumbs::renderIfExists(Route::getCurrentRoute()->getName(), $what) }} -{{Form::open(['class' => 'form-horizontal','url' => route('transactions.store',$what)])}} +{{Form::open(['class' => 'form-horizontal','id' => 'store','url' => route('transactions.store',$what)])}} {{Form::hidden('reminder',Input::get('reminder_id'))}}
diff --git a/app/views/transactions/delete.blade.php b/app/views/transactions/delete.blade.php index 4a496138c4..aef2335fc8 100644 --- a/app/views/transactions/delete.blade.php +++ b/app/views/transactions/delete.blade.php @@ -1,7 +1,7 @@ @extends('layouts.default') @section('content') {{ Breadcrumbs::renderIfExists(Route::getCurrentRoute()->getName(), $journal) }} -{{Form::open(['class' => 'form-horizontal','url' => route('transactions.destroy',$journal->id)])}} +{{Form::open(['class' => 'form-horizontal','id' => 'destroy','url' => route('transactions.destroy',$journal->id)])}}
diff --git a/app/views/transactions/edit.blade.php b/app/views/transactions/edit.blade.php index eb9aa0f51c..03f79385e7 100644 --- a/app/views/transactions/edit.blade.php +++ b/app/views/transactions/edit.blade.php @@ -1,7 +1,7 @@ @extends('layouts.default') @section('content') {{ Breadcrumbs::renderIfExists(Route::getCurrentRoute()->getName(), $journal) }} -{{Form::open(['class' => 'form-horizontal','url' => route('transactions.update',$journal->id)])}} +{{Form::open(['class' => 'form-horizontal','id' => 'update','url' => route('transactions.update',$journal->id)])}}
diff --git a/tests/functional/TransactionControllerCest.php b/tests/functional/TransactionControllerCest.php new file mode 100644 index 0000000000..f253f34f95 --- /dev/null +++ b/tests/functional/TransactionControllerCest.php @@ -0,0 +1,127 @@ +amLoggedAs(['email' => 'thegrumpydictator@gmail.com', 'password' => 'james']); + } + + public function create(FunctionalTester $I) + { + $I->wantTo('create a transaction'); + $I->amOnPage('/transactions/create/withdrawal?account_id=1'); + $I->see('Add a new withdrawal'); + } + + public function delete(FunctionalTester $I) + { + $I->wantTo('delete a transaction'); + $I->amOnPage('/transaction/delete/3'); + $I->see('Delete withdrawal "Huur Portaal for January 2014"'); + } + + public function destroyWithdrawal(FunctionalTester $I) + { + $I->wantTo('destroy a withdrawal'); + $I->amOnPage('/transaction/delete/3'); + $I->submitForm('#destroy', []); + $I->see('Transaction "Huur Portaal for January 2014" destroyed.'); + + } + + public function destroyDeposit(FunctionalTester $I) + { + $I->wantTo('destroy a deposit'); + $I->amOnPage('/transaction/delete/32'); + $I->submitForm('#destroy', []); + $I->see('Transaction "Salary" destroyed.'); + + } + + public function destroyTransfer(FunctionalTester $I) + { + $I->wantTo('destroy a transfer'); + $I->amOnPage('/transaction/delete/406'); + $I->submitForm('#destroy', []); + $I->see('Transaction "Money for new PC" destroyed.'); + + } + + public function edit(FunctionalTester $I) + { + $I->wantTo('edit a transaction'); + $I->amOnPage('/transaction/edit/408'); + $I->see('Edit transfer "Money for piggy"'); + } + + public function index(FunctionalTester $I) + { + $I->wantTo('see all withdrawals'); + $I->amOnPage('/transactions/withdrawal'); + $I->see('Expenses'); + } + + public function indexExpenses(FunctionalTester $I) + { + $I->wantTo('see all expenses'); + $I->amOnPage('/transactions/deposit'); + $I->see('Revenue, income and deposits'); + } + + public function indexTransfers(FunctionalTester $I) + { + $I->wantTo('see all transfers'); + $I->amOnPage('/transactions/transfers'); + $I->see('Transfers'); + } + + public function show(FunctionalTester $I) + { + $I->wantTo('see a transaction'); + $I->amOnPage('/transaction/show/406'); + $I->see('Transfer "Money for new PC"'); + $I->see('1.259'); + } + + public function store(FunctionalTester $I) + { + $I->wantTo('store a transaction'); + $I->amOnPage('/transactions/create/withdrawal'); + } + + public function update(FunctionalTester $I) + { + $I->wantTo('update a transaction'); + $I->amOnPage('/transaction/edit/3'); + $I->see('Huur Portaal for January 2014'); + $I->submitForm( + '#update', [ + 'description' => 'Huur Portaal for January 2014!', + 'account_id' => 1, + 'expense_account' => 'Portaal', + 'amount' => 500, + 'date' => '2014-01-01', + 'budget_id' => 2, + 'category' => 'House', + 'post_submit_action' => 'update' + ] + ); + $I->see('Huur Portaal for January 2014!'); + } + + +} \ No newline at end of file