Fixed some basic tests.

This commit is contained in:
James Cole 2015-03-13 08:44:07 +01:00
parent 3f89057528
commit 3b11bd0593
7 changed files with 154 additions and 27 deletions

View File

@ -3,6 +3,7 @@
use Auth; use Auth;
use Cache; use Cache;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use Input; use Input;
use Preferences; use Preferences;
use Redirect; use Redirect;
@ -51,9 +52,10 @@ class HomeController extends Controller
/** /**
* @return \Illuminate\View\View * @return \Illuminate\View\View
*/ */
public function index() public function index(AccountRepositoryInterface $repository)
{ {
$count = Auth::user()->accounts()->accountTypeIn(['Asset account', 'Default account'])->count();
$count = $repository->countAssetAccounts();
$title = 'Firefly'; $title = 'Firefly';
$subTitle = 'What\'s playing?'; $subTitle = 'What\'s playing?';
$mainTitleIcon = 'fa-fire'; $mainTitleIcon = 'fa-fire';
@ -61,26 +63,10 @@ class HomeController extends Controller
$frontPage = Preferences::get('frontPageAccounts', []); $frontPage = Preferences::get('frontPageAccounts', []);
$start = Session::get('start', Carbon::now()->startOfMonth()); $start = Session::get('start', Carbon::now()->startOfMonth());
$end = Session::get('end', Carbon::now()->endOfMonth()); $end = Session::get('end', Carbon::now()->endOfMonth());
$accounts = $repository->getFrontpageAccounts($frontPage);
if ($frontPage->data == []) {
$accounts = Auth::user()->accounts()->accountTypeIn(['Default account', 'Asset account'])->orderBy('accounts.name', 'ASC')->get(['accounts.*']);
} else {
$accounts = Auth::user()->accounts()->whereIn('id', $frontPage->data)->get(['accounts.*']);
}
foreach ($accounts as $account) { foreach ($accounts as $account) {
$set = Auth::user() $set = $repository->getFrontpageTransactions($account, $start, $end);
->transactionjournals()
->with(['transactions', 'transactioncurrency', 'transactiontype'])
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')->where('accounts.id', $account->id)
->before($end)
->after($start)
->orderBy('transaction_journals.date', 'DESC')
->orderBy('transaction_journals.id', 'DESC')
->take(10)
->get(['transaction_journals.*']);
if (count($set) > 0) { if (count($set) > 0) {
$transactions[] = [$set, $account]; $transactions[] = [$set, $account];
} }

View File

@ -10,10 +10,12 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta; use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\Preference;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType; use FireflyIII\Models\TransactionType;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
use Log; use Log;
use Session; use Session;
@ -25,6 +27,14 @@ use Session;
class AccountRepository implements AccountRepositoryInterface class AccountRepository implements AccountRepositoryInterface
{ {
/**
* @return int
*/
public function countAssetAccounts()
{
return Auth::user()->accounts()->accountTypeIn(['Asset account', 'Default account'])->count();
}
/** /**
* @param Account $account * @param Account $account
* *
@ -37,6 +47,44 @@ class AccountRepository implements AccountRepositoryInterface
return true; return true;
} }
/**
* @param Preference $preference
*
* @return Collection
*/
public function getFrontpageAccounts(Preference $preference)
{
if ($preference->data == []) {
$accounts = Auth::user()->accounts()->accountTypeIn(['Default account', 'Asset account'])->orderBy('accounts.name', 'ASC')->get(['accounts.*']);
} else {
$accounts = Auth::user()->accounts()->whereIn('id', $preference->data)->orderBy('accounts.name', 'ASC')->get(['accounts.*']);
}
return $accounts;
}
/**
* @param Account $account
* @param Carbon $start
* @param Carbon $end
*
* @return mixed
*/
public function getFrontpageTransactions(Account $account, Carbon $start, Carbon $end)
{
return Auth::user()
->transactionjournals()
->with(['transactions', 'transactioncurrency', 'transactiontype'])
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')->where('accounts.id', $account->id)
->before($end)
->after($start)
->orderBy('transaction_journals.date', 'DESC')
->orderBy('transaction_journals.id', 'DESC')
->take(10)
->get(['transaction_journals.*']);
}
/** /**
* @param Account $account * @param Account $account
* @param int $page * @param int $page

View File

@ -4,7 +4,9 @@ namespace FireflyIII\Repositories\Account;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\Preference;
use Illuminate\Support\Collection;
use Carbon\Carbon;
/** /**
* Interface AccountRepositoryInterface * Interface AccountRepositoryInterface
* *
@ -19,6 +21,27 @@ interface AccountRepositoryInterface
*/ */
public function destroy(Account $account); public function destroy(Account $account);
/**
* @return int
*/
public function countAssetAccounts();
/**
* @param Preference $preference
*
* @return Collection
*/
public function getFrontpageAccounts(Preference $preference);
/**
* @param Account $account
* @param Carbon $start
* @param Carbon $end
*
* @return mixed
*/
public function getFrontpageTransactions(Account $account, Carbon $start, Carbon $end);
/** /**
* @param Account $account * @param Account $account
* @param string $range * @param string $range

View File

@ -45,12 +45,12 @@ class Preferences
if (is_null($pref)) { if (is_null($pref)) {
$pref = new Preference; $pref = new Preference;
$pref->name = $name; $pref->name = $name;
$pref->user()->associate(Auth::user());
} }
$pref->data = $value; $pref->data = $value;
$pref->save(); if (!is_null(Auth::user()->id)) {
$pref->user()->associate(Auth::user());
$pref->save();
}
return $pref; return $pref;

View File

@ -11,7 +11,7 @@
syntaxCheck="false"> syntaxCheck="false">
<testsuites> <testsuites>
<testsuite name="Application Test Suite"> <testsuite name="Application Test Suite">
<directory>./tests/</directory> <directory>./tests</directory>
</testsuite> </testsuite>
</testsuites> </testsuites>
<filter> <filter>
@ -21,9 +21,11 @@
</filter> </filter>
<!-- code coverage --> <!-- code coverage -->
<!--
<logging> <logging>
<log type="coverage-clover" target="./storage/coverage/clover.xml" charset="UTF-8" /> <log type="coverage-clover" target="./storage/coverage/clover.xml" charset="UTF-8" />
</logging> </logging>
-->
<php> <php>
<env name="APP_ENV" value="testing"/> <env name="APP_ENV" value="testing"/>

View File

@ -13,7 +13,7 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase
*/ */
public function createApplication() public function createApplication()
{ {
$app = require __DIR__ . '/../../bootstrap/app.php'; $app = require __DIR__ . '/../bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap(); $app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();

View File

@ -0,0 +1,68 @@
<?php
/**
* Generated by PHPUnit_SkeletonGenerator on 2015-03-08 at 20:05:14.
*/
class HomeControllerTest extends TestCase
{
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
public function setUp()
{
parent::setUp();
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
public function tearDown()
{
parent::tearDown();
}
/**
* @covers FireflyIII\Http\Controllers\HomeController::dateRange
*/
public function testDateRange()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}
/**
* @covers FireflyIII\Http\Controllers\HomeController::flush
*/
public function testFlush()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete('This test has not been implemented yet.');
}
/**
* @covers FireflyIII\Http\Controllers\HomeController::index
*/
public function testIndexNoLogin()
{
$response = $this->call('GET', '/');
$this->assertRedirectedTo('auth/login');
}
/**
* @covers FireflyIII\Http\Controllers\HomeController::index
*/
public function testIndexLoggedIn()
{
$this->be(new FireflyIII\User);
$response = $this->call('GET', '/');
$this->assertResponseOk();
}
}