More coverage.

This commit is contained in:
James Cole
2014-12-21 10:54:25 +01:00
parent af1349160a
commit 441f011fba
7 changed files with 474 additions and 100 deletions

View File

@@ -1,7 +1,7 @@
<?php
use Carbon\Carbon;
use FireflyIII\Chart\ChartInterface;
use Grumpydictator\Gchart\GChart as GChart;
use Illuminate\Database\Query\JoinClause;
/**
* Class GoogleChartController
@@ -16,13 +16,23 @@ class GoogleChartController extends BaseController
/** @var GChart */
protected $_chart;
/** @var Carbon */
protected $_end;
/** @var ChartInterface */
protected $_repository;
/** @var Carbon */
protected $_start;
/**
* @param GChart $chart
* @param GChart $chart
* @param ChartInterface $repository
*/
public function __construct(GChart $chart)
public function __construct(GChart $chart, ChartInterface $repository)
{
$this->_chart = $chart;
$this->_chart = $chart;
$this->_repository = $repository;
$this->_start = Session::get('start', Carbon::now()->startOfMonth());
$this->_end = Session::get('end', Carbon::now()->endOfMonth());
}
@@ -38,8 +48,8 @@ class GoogleChartController extends BaseController
$this->_chart->addColumn('Balance for ' . $account->name, 'number');
// TODO this can be combined in some method, it's coming up quite often, is it?
$start = Session::get('start', Carbon::now()->startOfMonth());
$end = Session::get('end');
$start = $this->_start;
$end = $this->_end;
$count = $account->transactions()->count();
if ($view == 'all' && $count > 0) {
@@ -79,22 +89,16 @@ class GoogleChartController extends BaseController
$pref = $preferences->get('frontpageAccounts', []);
/** @var \FireflyIII\Database\Account\Account $acct */
$acct = App::make('FireflyIII\Database\Account\Account');
if (count($pref->data) > 0) {
$accounts = $acct->getByIds($pref->data);
} else {
$accounts = $acct->getAssetAccounts();
}
$acct = App::make('FireflyIII\Database\Account\Account');
$accounts = count($pref->data) > 0 ? $acct->getByIds($pref->data) : $acct->getAssetAccounts();
/** @var Account $account */
foreach ($accounts as $account) {
$this->_chart->addColumn('Balance for ' . $account->name, 'number');
}
$start = Session::get('start', Carbon::now()->startOfMonth());
$end = Session::get('end', Carbon::now()->endOfMonth());
$current = clone $start;
$current = clone $this->_start;
while ($end >= $current) {
while ($this->_end >= $current) {
$row = [clone $current];
foreach ($accounts as $account) {
$row[] = Steam::balance($account, $current);
@@ -118,20 +122,27 @@ class GoogleChartController extends BaseController
$this->_chart->addColumn('Budgeted', 'number');
$this->_chart->addColumn('Spent', 'number');
Log::debug('Now in allBudgetsHomeChart()');
/** @var \FireflyIII\Database\Budget\Budget $bdt */
$bdt = App::make('FireflyIII\Database\Budget\Budget');
$budgets = $bdt->get();
/** @var Budget $budget */
foreach ($budgets as $budget) {
Log::debug('Now working budget #'.$budget->id.', '.$budget->name);
/** @var \LimitRepetition $repetition */
$repetition = $bdt->repetitionOnStartingOnDate($budget, Session::get('start', Carbon::now()->startOfMonth()));
$repetition = $bdt->repetitionOnStartingOnDate($budget, $this->_start);
if (is_null($repetition)) {
\Log::debug('Budget #'.$budget->id.' has no repetition on ' . $this->_start->format('Y-m-d'));
// use the session start and end for our search query
$searchStart = Session::get('start', Carbon::now()->startOfMonth());
$searchEnd = Session::get('end');
$searchStart = $this->_start;
$searchEnd = $this->_end;
$limit = 0; // the limit is zero:
} else {
\Log::debug('Budget #'.$budget->id.' has a repetition on ' . $this->_start->format('Y-m-d').'!');
// use the limit's start and end for our search query
$searchStart = $repetition->startdate;
$searchEnd = $repetition->enddate;
@@ -144,7 +155,7 @@ class GoogleChartController extends BaseController
}
}
$noBudgetSet = $bdt->transactionsWithoutBudgetInDateRange(Session::get('start', Carbon::now()->startOfMonth()), Session::get('end'));
$noBudgetSet = $bdt->transactionsWithoutBudgetInDateRange($this->_start, $this->_end);
$sum = $noBudgetSet->sum('amount') * -1;
$this->_chart->addRow('No budget', 0, $sum);
$this->_chart->generate();
@@ -161,24 +172,8 @@ class GoogleChartController extends BaseController
$this->_chart->addColumn('Spent', 'number');
// query!
// TODO move to some helper.
$set = \TransactionJournal::leftJoin(
'transactions',
function (JoinClause $join) {
$join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('amount', '>', 0);
}
)
->leftJoin(
'category_transaction_journal', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id'
)
->leftJoin('categories', 'categories.id', '=', 'category_transaction_journal.category_id')
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
->before(Session::get('end', Carbon::now()->endOfMonth()))
->after(Session::get('start', Carbon::now()->startOfMonth()))
->where('transaction_types.type', 'Withdrawal')
->groupBy('categories.id')
->orderBy('sum', 'DESC')
->get(['categories.id', 'categories.name', DB::Raw('SUM(`transactions`.`amount`) AS `sum`')]);
$set = $this->_repository->getCategorySummary($this->_start, $this->_end);
foreach ($set as $entry) {
$entry->name = strlen($entry->name) == 0 ? '(no category)' : $entry->name;
$this->_chart->addRow($entry->name, floatval($entry->sum));
@@ -191,6 +186,8 @@ class GoogleChartController extends BaseController
}
/**
* TODO still in use?
*
* @param Budget $budget
* @param LimitRepetition $repetition
*
@@ -223,6 +220,8 @@ class GoogleChartController extends BaseController
}
/**
* TODO still in use?
*
* @param Budget $component
* @param $year
*
@@ -231,9 +230,9 @@ class GoogleChartController extends BaseController
public function budgetsAndSpending(Budget $component, $year)
{
try {
$start = new Carbon('01-01-' . $year);
new Carbon('01-01-' . $year);
} catch (Exception $e) {
App::abort(500);
return View::make('error')->with('message', 'Invalid year.');
}
/** @var \FireflyIII\Database\Budget\Budget $repos */
@@ -243,7 +242,8 @@ class GoogleChartController extends BaseController
$this->_chart->addColumn('Budgeted', 'number');
$this->_chart->addColumn('Spent', 'number');
$end = clone $start;
$start = new Carbon('01-01-' . $year);
$end = clone $start;
$end->endOfYear();
while ($start <= $end) {
$spent = $repos->spentInMonth($component, $start);
@@ -268,6 +268,8 @@ class GoogleChartController extends BaseController
}
/**
* TODO still in use?
*
* @param Category $component
* @param $year
*
@@ -276,9 +278,9 @@ class GoogleChartController extends BaseController
public function categoriesAndSpending(Category $component, $year)
{
try {
$start = new Carbon('01-01-' . $year);
new Carbon('01-01-' . $year);
} catch (Exception $e) {
App::abort(500);
return View::make('error')->with('message', 'Invalid year.');
}
/** @var \FireflyIII\Database\Category\Category $repos */
@@ -288,7 +290,8 @@ class GoogleChartController extends BaseController
$this->_chart->addColumn('Budgeted', 'number');
$this->_chart->addColumn('Spent', 'number');
$end = clone $start;
$start = new Carbon('01-01-' . $year);
$end = clone $start;
$end->endOfYear();
while ($start <= $end) {
@@ -370,7 +373,7 @@ class GoogleChartController extends BaseController
}
/**
* TODO move to helper.
* TODO query move to helper.
*
* @return \Illuminate\Http\JsonResponse
* @throws \FireflyIII\Exception\FireflyException
@@ -379,31 +382,10 @@ class GoogleChartController extends BaseController
{
$paid = ['items' => [], 'amount' => 0];
$unpaid = ['items' => [], 'amount' => 0];
$start = Session::get('start', Carbon::now()->startOfMonth());
$end = Session::get('end', Carbon::now()->endOfMonth());
$this->_chart->addColumn('Name', 'string');
$this->_chart->addColumn('Amount', 'number');
$set = \RecurringTransaction::
leftJoin(
'transaction_journals', function (JoinClause $join) use ($start, $end) {
$join->on('recurring_transactions.id', '=', 'transaction_journals.recurring_transaction_id')
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
->where('transaction_journals.date', '<=', $end->format('Y-m-d'));
}
)
->leftJoin(
'transactions', function (JoinClause $join) {
$join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('transactions.amount', '>', 0);
}
)
->where('active', 1)
->groupBy('recurring_transactions.id')
->get(
['recurring_transactions.id', 'recurring_transactions.name', 'transaction_journals.description',
'transaction_journals.id as journalId',
DB::Raw('SUM(`recurring_transactions`.`amount_min` + `recurring_transactions`.`amount_max`) / 2 as `averageAmount`'),
'transactions.amount AS actualAmount']
);
$set = $this->_repository->getRecurringSummary($this->_start, $this->_end);
foreach ($set as $entry) {
if (intval($entry->journalId) == 0) {
@@ -422,6 +404,8 @@ class GoogleChartController extends BaseController
}
/**
* TODO see reports for better way to do this.
*
* @param $year
*
* @return \Illuminate\Http\JsonResponse
@@ -431,7 +415,7 @@ class GoogleChartController extends BaseController
try {
$start = new Carbon('01-01-' . $year);
} catch (Exception $e) {
App::abort(500);
return View::make('error')->with('message', 'Invalid year.');
}
$this->_chart->addColumn('Month', 'date');
$this->_chart->addColumn('Income', 'number');
@@ -460,6 +444,8 @@ class GoogleChartController extends BaseController
}
/**
* TODO see reports for better way to do this.
*
* @param $year
*
* @return \Illuminate\Http\JsonResponse
@@ -469,7 +455,7 @@ class GoogleChartController extends BaseController
try {
$start = new Carbon('01-01-' . $year);
} catch (Exception $e) {
App::abort(500);
return View::make('error')->with('message', 'Invalid year.');
}
$this->_chart->addColumn('Summary', 'string');
$this->_chart->addColumn('Income', 'number');

View File

@@ -36,26 +36,36 @@ class TestContentSeeder extends Seeder
$deleteBudget = Budget::create(['user_id' => $user->id, 'name' => 'Delete me']);
// some limits:
$limitOne = BudgetLimit::create(
['startdate' => '2014-01-01', 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly', 'budget_id' => $groceriesBudget->id]
$startDate = Carbon::now()->startOfMonth();
$endDate = Carbon::now()->endOfMonth();
$limitOne = BudgetLimit::create(
['startdate' => $startDate->format('Y-m-d'), 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly',
'budget_id' => $groceriesBudget->id]
);
$limitTwo = BudgetLimit::create(
['startdate' => '2014-01-01', 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly', 'budget_id' => $billsBudget->id]
$limitTwo = BudgetLimit::create(
['startdate' => $startDate->format('Y-m-d'), 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly',
'budget_id' => $billsBudget->id]
);
$limitThree = BudgetLimit::create(
['startdate' => '2014-01-01', 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly', 'budget_id' => $deleteBudget->id]
);
// and because we have no filters, some repetitions:
$repOne = LimitRepetition::create(['budget_limit_id' => $limitOne->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 200]);
$repTwo = LimitRepetition::create(['budget_limit_id' => $limitTwo->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 200]);
$repThree = LimitRepetition::create(['budget_limit_id' => $limitThree->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 200]);
$repOne = LimitRepetition::create(
['budget_limit_id' => $limitOne->id, 'startdate' => $startDate->format('Y-m-d'), 'enddate' => $endDate->format('Y-m-d'), 'amount' => 200]
);
$repTwo = LimitRepetition::create(
['budget_limit_id' => $limitTwo->id, 'startdate' => $startDate->format('Y-m-d'), 'enddate' => $endDate->format('Y-m-d'), 'amount' => 200]
);
$repThree = LimitRepetition::create(
['budget_limit_id' => $limitThree->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 200]
);
// create two categories:
$dailyGroceries = Category::create(['user_id' => $user->id, 'name' => 'DailyGroceries']);
$lunch = Category::create(['user_id' => $user->id, 'name' => 'Lunch']);
$house = Category::create(['user_id' => $user->id, 'name' => 'House']);
$deleteMe= Category::create(['user_id' => $user->id, 'name' => 'Delete me']);
$deleteMe = Category::create(['user_id' => $user->id, 'name' => 'Delete me']);
Component::create(['user_id' => $user->id, 'name' => 'Some Component 1', 'class' => 'Budget']);
Component::create(['user_id' => $user->id, 'name' => 'Some Component 2', 'class' => 'Budget']);
@@ -65,6 +75,58 @@ class TestContentSeeder extends Seeder
Component::create(['user_id' => $user->id, 'name' => 'Some Component 6', 'class' => 'Category']);
Component::create(['user_id' => $user->id, 'name' => 'Some Component 7', 'class' => 'Category']);
// piggy bank
$piggy = Piggybank::create(
[
'account_id' => $savings->id,
'name' => 'New camera',
'targetamount' => 2000,
'startdate' => Carbon::now()->format('Y-m-d'),
'targetdate' => '',
'repeats' => 0,
'rep_length' => null,
'rep_every' => 0,
'rep_times' => null,
'reminder' => null,
'reminder_skip' => 0,
'remind_me' => 0,
'order' => 0,
]
);
$piggyBankEvent = PiggyBankEvent::create(['piggybank_id' => 1, 'date' => $startDate->format('Y-m-d'), 'amount' => 100]);
// recurring transaction
$recurring = \RecurringTransaction::create(
[
'user_id' => $user->id,
'name' => 'Huur',
'match' => 'huur,portaal',
'amount_min' => 500,
'amount_max' => 700,
'date' => '2014-01-12',
'active' => 1,
'automatch' => 1,
'repeat_freq' => 'monthly',
'skip' => 0,
]
);
// recurring transaction
$secondRecurring = \RecurringTransaction::create(
[
'user_id' => $user->id,
'name' => 'Gas licht',
'match' => 'no,match',
'amount_min' => 500,
'amount_max' => 700,
'date' => '2014-01-12',
'active' => 1,
'automatch' => 1,
'repeat_freq' => 'monthly',
'skip' => 0,
]
);
// create some expense accounts.
$albert = Account::create(['user_id' => $user->id, 'account_type_id' => $expenseType->id, 'name' => 'Albert Heijn', 'active' => 1]);
$plus = Account::create(['user_id' => $user->id, 'account_type_id' => $expenseType->id, 'name' => 'PLUS', 'active' => 1]);
@@ -92,10 +154,11 @@ class TestContentSeeder extends Seeder
// create some expenses and incomes and what-not (for every month):
$start = new Carbon('2014-01-01');
$end = Carbon::now()->startOfMonth()->subDay();
$end = Carbon::now()->endOfMonth()->addDay();
while ($start <= $end) {
$this->createTransaction(
$checking, $portaal, 500, $withdrawal, 'Rent for ' . $start->format('F Y'), $start->format('Y-m-') . '01', $billsBudget, $house
$checking, $portaal, 500, $withdrawal, 'Huur Portaal for ' . $start->format('F Y'), $start->format('Y-m-') . '01', $billsBudget, $house,
$recurring
);
$this->createTransaction(
$checking, $vitens, 12, $withdrawal, 'Water for ' . $start->format('F Y'), $start->format('Y-m-') . '02', $billsBudget, $house
@@ -149,33 +212,37 @@ class TestContentSeeder extends Seeder
}
/**
* @param Account $from
* @param Account $to
* @param $amount
* @param TransactionType $type
* @param $description
* @param $date
* @param Account $from
* @param Account $to
* @param $amount
* @param TransactionType $type
* @param $description
* @param $date
*
* @param Budget $budget
* @param Category $category
* @param Budget $budget
* @param Category $category
* @param RecurringTransaction $recurring
*
* @return TransactionJournal
*/
public function createTransaction(
Account $from, Account $to, $amount, TransactionType $type, $description, $date, Budget $budget = null, Category $category = null
Account $from, Account $to, $amount, TransactionType $type, $description, $date, Budget $budget = null, Category $category = null,
$recurring = null
) {
$user = User::whereEmail('thegrumpydictator@gmail.com')->first();
$euro = TransactionCurrency::whereCode('EUR')->first();
$user = User::whereEmail('thegrumpydictator@gmail.com')->first();
$euro = TransactionCurrency::whereCode('EUR')->first();
$recurringID = is_null($recurring) ? null : $recurring->id;
/** @var TransactionJournal $journal */
$journal = TransactionJournal::create(
[
'user_id' => $user->id,
'transaction_type_id' => $type->id,
'transaction_currency_id' => $euro->id,
'description' => $description,
'completed' => 1,
'date' => $date
'user_id' => $user->id,
'transaction_type_id' => $type->id,
'transaction_currency_id' => $euro->id,
'recurring_transaction_id' => $recurringID,
'description' => $description,
'completed' => 1,
'date' => $date
]
);

View File

@@ -0,0 +1,75 @@
<?php
namespace FireflyIII\Chart;
use Carbon\Carbon;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
/**
* Class Chart
*
* @package FireflyIII\Chart
*/
class Chart implements ChartInterface
{
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getCategorySummary(Carbon $start, Carbon $end)
{
return \TransactionJournal::leftJoin(
'transactions',
function (JoinClause $join) {
$join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('amount', '>', 0);
}
)
->leftJoin(
'category_transaction_journal', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id'
)
->leftJoin('categories', 'categories.id', '=', 'category_transaction_journal.category_id')
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
->before($end)
->after($start)
->where('transaction_types.type', 'Withdrawal')
->groupBy('categories.id')
->orderBy('sum', 'DESC')
->get(['categories.id', 'categories.name', \DB::Raw('SUM(`transactions`.`amount`) AS `sum`')]);
}
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getRecurringSummary(Carbon $start, Carbon $end)
{
return \RecurringTransaction::
leftJoin(
'transaction_journals', function (JoinClause $join) use ($start, $end) {
$join->on('recurring_transactions.id', '=', 'transaction_journals.recurring_transaction_id')
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
->where('transaction_journals.date', '<=', $end->format('Y-m-d'));
}
)
->leftJoin(
'transactions', function (JoinClause $join) {
$join->on('transaction_journals.id', '=', 'transactions.transaction_journal_id')->where('transactions.amount', '>', 0);
}
)
->where('active', 1)
->groupBy('recurring_transactions.id')
->get(
['recurring_transactions.id', 'recurring_transactions.name', 'transaction_journals.description',
'transaction_journals.id as journalId',
\DB::Raw('SUM(`recurring_transactions`.`amount_min` + `recurring_transactions`.`amount_max`) / 2 as `averageAmount`'),
'transactions.amount AS actualAmount']
);
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace FireflyIII\Chart;
use Carbon\Carbon;
use Illuminate\Support\Collection;
/**
* Interface ChartInterface
*
* @package FireflyIII\Chart
*/
interface ChartInterface
{
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getCategorySummary(Carbon $start, Carbon $end);
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getRecurringSummary(Carbon $start, Carbon $end);
}

View File

@@ -237,6 +237,7 @@ class Budget implements CUD, CommonDatabaseCalls, BudgetInterface
}
/**
* This method includes the time because otherwise, SQLite doesn't understand it.
* @param \Budget $budget
* @param Carbon $date
*
@@ -246,9 +247,9 @@ class Budget implements CUD, CommonDatabaseCalls, BudgetInterface
{
return \LimitRepetition::
leftJoin('budget_limits', 'limit_repetitions.budget_limit_id', '=', 'budget_limits.id')
->where('limit_repetitions.startdate', $date->format('Y-m-d'))
->where('budget_limits.budget_id', $budget->id)
->first(['limit_repetitions.*']);
->where('limit_repetitions.startdate', $date->format('Y-m-d 00:00:00'))
->where('budget_limits.budget_id', $budget->id)
->first(['limit_repetitions.*']);
}
/**

View File

@@ -96,6 +96,9 @@ class FF3ServiceProvider extends ServiceProvider
// reports
$this->app->bind('FireflyIII\Report\ReportInterface', 'FireflyIII\Report\Report');
// chart
$this->app->bind('FireflyIII\Chart\ChartInterface', 'FireflyIII\Chart\Chart');
}
public function registerAliases()

View File

@@ -0,0 +1,211 @@
<?php
/**
* @SuppressWarnings("CamelCase")
* @SuppressWarnings("short")
* Class GoogleChartControllerCest
*/
class GoogleChartControllerCest
{
/**
* @param FunctionalTester $I
*/
public function _after(FunctionalTester $I)
{
}
/**
* @param FunctionalTester $I
*/
public function _before(FunctionalTester $I)
{
$I->amLoggedAs(['email' => 'thegrumpydictator@gmail.com', 'password' => 'james']);
}
/**
* @param FunctionalTester $I
*/
public function accountBalanceChart(FunctionalTester $I)
{
$I->wantTo('see the session balance chart of an account.');
$I->amOnPage('chart/account/1/session');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function accountAllBalanceChart(FunctionalTester $I)
{
$I->wantTo('see the complete balance chart of an account.');
$I->amOnPage('chart/account/1/all');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function allAccountsBalanceChart(FunctionalTester $I)
{
$I->wantTo('see the chart with the balances of all accounts');
$I->amOnPage('/chart/home/account');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function allBudgetsHomeChart(FunctionalTester $I)
{
$I->wantTo('see the chart with all budgets on it');
$I->amOnPage('/chart/home/budgets');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function allCategoriesHomeChart(FunctionalTester $I)
{
$I->wantTo('see the chart with all categories on it');
$I->amOnPage('/chart/home/categories');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function budgetLimitSpending(FunctionalTester $I)
{
$I->wantTo('see the chart for a budget and a repetition');
$I->amOnPage('/chart/budget/1/1');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function budgetsAndSpending(FunctionalTester $I)
{
$I->wantTo('see the chart for a budget in a specific year');
$I->amOnPage('/chart/budget/1/spending/2014');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function budgetsAndSpendingInvalidYear(FunctionalTester $I)
{
$I->wantTo('see the chart for a budget in an invalid year');
$I->amOnPage('/chart/budget/1/spending/XXXX');
$I->seeResponseCodeIs(200);
$I->see('Invalid year');
}
/**
* @param FunctionalTester $I
*/
public function categoriesAndSpending(FunctionalTester $I)
{
$I->wantTo('see the chart for a category in a specific year');
$I->amOnPage('/chart/category/1/spending/2014');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function categoriesAndSpendingInvalidYear(FunctionalTester $I)
{
$I->wantTo('see the chart for a category in an invalid year');
$I->amOnPage('/chart/category/1/spending/XXXX');
$I->seeResponseCodeIs(200);
$I->see('Invalid year');
}
/**
* @param FunctionalTester $I
*/
public function piggyBankHistory(FunctionalTester $I)
{
$I->wantTo('see the chart for the history of a piggy bank');
$I->amOnPage('/chart/piggyhistory/1');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function recurringOverview(FunctionalTester $I)
{
$I->wantTo('see the chart for the history of a recurring transaction');
$I->amOnPage('/chart/recurring/1');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function emptyRecurringOverview(FunctionalTester $I)
{
$I->wantTo('see the chart for the history of an empty recurring transaction');
$I->amOnPage('/chart/recurring/2');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function recurringTransactionsOverview(FunctionalTester $I)
{
$I->wantTo('see the chart for which recurring transactions I have yet to pay');
$I->amOnPage('/chart/home/recurring');
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function yearInExp(FunctionalTester $I)
{
$I->wantTo("see this year's expenses");
$I->amOnPage('/chart/reports/income-expenses/' . date('Y'));
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function yearInExpInvalidYear(FunctionalTester $I)
{
$I->wantTo("see the year's expenses of an invalid year");
$I->amOnPage('/chart/reports/income-expenses/XXXXX');
$I->seeResponseCodeIs(200);
$I->see('Invalid year');
}
/**
* @param FunctionalTester $I
*/
public function yearInExpSum(FunctionalTester $I)
{
$I->wantTo("see this year's expenses summarized");
$I->amOnPage('/chart/reports/income-expenses-sum/' . date('Y'));
$I->seeResponseCodeIs(200);
}
/**
* @param FunctionalTester $I
*/
public function yearInExpSumInvalidYear(FunctionalTester $I)
{
$I->wantTo("see the year's expenses summarized of an invalid year");
$I->amOnPage('/chart/reports/income-expenses-sum/XXXXX');
$I->seeResponseCodeIs(200);
$I->see('Invalid year');
}
}