First tests for transaction controller.

This commit is contained in:
James Cole 2014-12-30 22:25:30 +01:00
parent 15b023d116
commit ee5afaa6bc
6 changed files with 174 additions and 24 deletions

View File

@ -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']);
}

View File

@ -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

View File

@ -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'))}}
<div class="row">

View File

@ -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)])}}
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">

View File

@ -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)])}}
<div class="row">

View File

@ -0,0 +1,127 @@
<?php
/**
* Class TransactionControllerCest
*/
class TransactionControllerCest
{
/**
* @param FunctionalTester $I
*/
public function _after(FunctionalTester $I)
{
}
/**
* @param FunctionalTester $I
*/
public function _before(FunctionalTester $I)
{
$I->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 &quot;Huur Portaal for January 2014&quot; destroyed.');
}
public function destroyDeposit(FunctionalTester $I)
{
$I->wantTo('destroy a deposit');
$I->amOnPage('/transaction/delete/32');
$I->submitForm('#destroy', []);
$I->see('Transaction &quot;Salary&quot; destroyed.');
}
public function destroyTransfer(FunctionalTester $I)
{
$I->wantTo('destroy a transfer');
$I->amOnPage('/transaction/delete/406');
$I->submitForm('#destroy', []);
$I->see('Transaction &quot;Money for new PC&quot; destroyed.');
}
public function edit(FunctionalTester $I)
{
$I->wantTo('edit a transaction');
$I->amOnPage('/transaction/edit/408');
$I->see('Edit transfer &quot;Money for piggy&quot;');
}
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!');
}
}