mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Merge branch 'release/3.4.0.9'
This commit is contained in:
commit
3d9755ca8c
23
.codeclimate.yml
Normal file
23
.codeclimate.yml
Normal file
@ -0,0 +1,23 @@
|
||||
# Save as .codeclimate.yml (note leading .) in project root directory
|
||||
languages:
|
||||
JavaScript: true
|
||||
PHP: true
|
||||
exclude_paths:
|
||||
- "public/packages/maximebf/php-debugbar/debugbar.js"
|
||||
- "public/packages/maximebf/php-debugbar/widgets.js"
|
||||
- "public/packages/maximebf/php-debugbar/openhandler.js"
|
||||
- "public/packages/maximebf/php-debugbar/widgets/sqlqueries/widget.js"
|
||||
- "public/js/bootstrap3-typeahead.min.js"
|
||||
- "public/js/bootstrap-sortable.js"
|
||||
- "public/js/bootstrap-tagsinput.min.js"
|
||||
- "public/js/bootstrap-tagsinput.min.js.map"
|
||||
- "public/js/daterangepicker.js"
|
||||
- "public/js/jquery-2.1.3.min.js"
|
||||
- "public/js/jquery-2.1.3.min.js.map"
|
||||
- "public/js/jquery-ui.min.js"
|
||||
- "public/js/metisMenu.js"
|
||||
- "public/js/moment.min.js"
|
||||
- "public/js/sb-admin-2.js"
|
||||
- "tests/*"
|
||||
- "database/*"
|
||||
- "storage/*"
|
@ -16,4 +16,5 @@ EMAIL_DRIVER=smtp
|
||||
EMAIL_USERNAME=
|
||||
EMAIL_PASSWORD=
|
||||
ANALYTICS_ID=
|
||||
EMAIL_PRETEND=false
|
||||
EMAIL_PRETEND=false
|
||||
RUNCLEANUP=true
|
@ -1,5 +1,5 @@
|
||||
# Firefly III
|
||||
#### v3.4.0.8
|
||||
#### v3.4.0.9
|
||||
|
||||
[](https://travis-ci.org/JC5/firefly-iii)
|
||||
[](http://stillmaintained.com/JC5/firefly-iii)
|
||||
|
@ -18,6 +18,8 @@ class ConnectJournalToPiggyBank
|
||||
/**
|
||||
* Create the event handler.
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -15,14 +15,14 @@ class Budget
|
||||
{
|
||||
/** @var Collection */
|
||||
protected $budgetLines;
|
||||
/** @var float */
|
||||
protected $budgeted = 0;
|
||||
/** @var float */
|
||||
protected $left = 0;
|
||||
/** @var float */
|
||||
protected $overspent = 0;
|
||||
/** @var float */
|
||||
protected $spent = 0;
|
||||
/** @var string */
|
||||
protected $budgeted = '0';
|
||||
/** @var string */
|
||||
protected $left = '0';
|
||||
/** @var string */
|
||||
protected $overspent = '0';
|
||||
/** @var string */
|
||||
protected $spent = '0';
|
||||
|
||||
/**
|
||||
*
|
||||
@ -45,7 +45,9 @@ class Budget
|
||||
*/
|
||||
public function addBudgeted($add)
|
||||
{
|
||||
$this->budgeted += floatval($add);
|
||||
$add = strval(round($add, 2));
|
||||
bcscale(2);
|
||||
$this->budgeted = bcadd($this->budgeted, $add);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -53,7 +55,9 @@ class Budget
|
||||
*/
|
||||
public function addLeft($add)
|
||||
{
|
||||
$this->left += floatval($add);
|
||||
$add = strval(round($add, 2));
|
||||
bcscale(2);
|
||||
$this->left = bcadd($this->left, $add);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -61,7 +65,9 @@ class Budget
|
||||
*/
|
||||
public function addOverspent($add)
|
||||
{
|
||||
$this->overspent += floatval($add);
|
||||
$add = strval(round($add, 2));
|
||||
bcscale(2);
|
||||
$this->overspent = bcadd($this->overspent, $add);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,7 +75,9 @@ class Budget
|
||||
*/
|
||||
public function addSpent($add)
|
||||
{
|
||||
$this->spent += floatval($add);
|
||||
$add = strval(round($add, 2));
|
||||
bcscale(2);
|
||||
$this->spent = bcadd($this->spent, $add);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -81,7 +89,7 @@ class Budget
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @return string
|
||||
*/
|
||||
public function getBudgeted()
|
||||
{
|
||||
@ -89,7 +97,7 @@ class Budget
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $budgeted
|
||||
* @param string $budgeted
|
||||
*/
|
||||
public function setBudgeted($budgeted)
|
||||
{
|
||||
@ -97,7 +105,7 @@ class Budget
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @return string
|
||||
*/
|
||||
public function getLeft()
|
||||
{
|
||||
@ -105,7 +113,7 @@ class Budget
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $left
|
||||
* @param string $left
|
||||
*/
|
||||
public function setLeft($left)
|
||||
{
|
||||
@ -113,7 +121,7 @@ class Budget
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @return string
|
||||
*/
|
||||
public function getOverspent()
|
||||
{
|
||||
@ -121,15 +129,15 @@ class Budget
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $overspent
|
||||
* @param string $overspent
|
||||
*/
|
||||
public function setOverspent($overspent)
|
||||
{
|
||||
$this->overspent = $overspent;
|
||||
$this->overspent = strval(round($overspent, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @return string
|
||||
*/
|
||||
public function getSpent()
|
||||
{
|
||||
@ -137,11 +145,11 @@ class Budget
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $spent
|
||||
* @param string $spent
|
||||
*/
|
||||
public function setSpent($spent)
|
||||
{
|
||||
$this->spent = $spent;
|
||||
$this->spent = strval(round($spent, 2));
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,16 +17,14 @@ class BudgetLine
|
||||
|
||||
/** @var BudgetModel */
|
||||
protected $budget;
|
||||
|
||||
/** @var LimitRepetition */
|
||||
protected $repetition;
|
||||
|
||||
/** @var float */
|
||||
protected $budgeted = 0;
|
||||
/** @var float */
|
||||
protected $left = 0;
|
||||
/** @var float */
|
||||
protected $overspent = 0;
|
||||
/** @var LimitRepetition */
|
||||
protected $repetition;
|
||||
/** @var float */
|
||||
protected $spent = 0;
|
||||
|
||||
@ -94,22 +92,6 @@ class BudgetLine
|
||||
$this->overspent = $overspent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getSpent()
|
||||
{
|
||||
return $this->spent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $spent
|
||||
*/
|
||||
public function setSpent($spent)
|
||||
{
|
||||
$this->spent = $spent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return LimitRepetition
|
||||
*/
|
||||
@ -126,5 +108,21 @@ class BudgetLine
|
||||
$this->repetition = $repetition;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
*/
|
||||
public function getSpent()
|
||||
{
|
||||
return $this->spent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $spent
|
||||
*/
|
||||
public function setSpent($spent)
|
||||
{
|
||||
$this->spent = $spent;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -24,8 +24,8 @@ class Category
|
||||
|
||||
/** @var Collection */
|
||||
protected $categories;
|
||||
/** @var float */
|
||||
protected $total = 0;
|
||||
/** @var string */
|
||||
protected $total = '0';
|
||||
|
||||
/**
|
||||
*
|
||||
@ -50,7 +50,9 @@ class Category
|
||||
*/
|
||||
public function addTotal($add)
|
||||
{
|
||||
$this->total += floatval($add);
|
||||
$add = strval(round($add, 2));
|
||||
bcscale(2);
|
||||
$this->total = bcadd($this->total, $add);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,11 +71,11 @@ class Category
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @return string
|
||||
*/
|
||||
public function getTotal()
|
||||
{
|
||||
return $this->total;
|
||||
return strval(round($this->total, 2));
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,8 +17,8 @@ class Expense
|
||||
{
|
||||
/** @var Collection */
|
||||
protected $expenses;
|
||||
/** @var float */
|
||||
protected $total;
|
||||
/** @var string */
|
||||
protected $total = '0';
|
||||
|
||||
/**
|
||||
*
|
||||
@ -37,14 +37,15 @@ class Expense
|
||||
$accountId = $entry->account_id;
|
||||
if (!$this->expenses->has($accountId)) {
|
||||
$newObject = new stdClass;
|
||||
$newObject->amount = floatval($entry->amount);
|
||||
$newObject->amount = strval(round($entry->amount, 2));
|
||||
$newObject->name = $entry->name;
|
||||
$newObject->count = 1;
|
||||
$newObject->id = $accountId;
|
||||
$this->expenses->put($accountId, $newObject);
|
||||
} else {
|
||||
$existing = $this->expenses->get($accountId);
|
||||
$existing->amount += floatval($entry->amount);
|
||||
bcscale(2);
|
||||
$existing = $this->expenses->get($accountId);
|
||||
$existing->amount = bcadd($existing->amount, $entry->amount);
|
||||
$existing->count++;
|
||||
$this->expenses->put($accountId, $existing);
|
||||
}
|
||||
@ -55,7 +56,9 @@ class Expense
|
||||
*/
|
||||
public function addToTotal($add)
|
||||
{
|
||||
$this->total += floatval($add);
|
||||
$add = strval(round($add, 2));
|
||||
bcscale(2);
|
||||
$this->total = bcadd($this->total, $add);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -73,10 +76,10 @@ class Expense
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @return string
|
||||
*/
|
||||
public function getTotal()
|
||||
{
|
||||
return $this->total;
|
||||
return strval(round($this->total, 2));
|
||||
}
|
||||
}
|
||||
|
@ -38,14 +38,15 @@ class Income
|
||||
$accountId = $entry->account_id;
|
||||
if (!$this->incomes->has($accountId)) {
|
||||
$newObject = new stdClass;
|
||||
$newObject->amount = floatval($entry->amount);
|
||||
$newObject->amount = strval(round($entry->amount, 2));
|
||||
$newObject->name = $entry->name;
|
||||
$newObject->count = 1;
|
||||
$newObject->id = $accountId;
|
||||
$this->incomes->put($accountId, $newObject);
|
||||
} else {
|
||||
$existing = $this->incomes->get($accountId);
|
||||
$existing->amount += floatval($entry->amount);
|
||||
bcscale(2);
|
||||
$existing = $this->incomes->get($accountId);
|
||||
$existing->amount = bcadd($existing->amount, $entry->amount);
|
||||
$existing->count++;
|
||||
$this->incomes->put($accountId, $existing);
|
||||
}
|
||||
@ -56,7 +57,9 @@ class Income
|
||||
*/
|
||||
public function addToTotal($add)
|
||||
{
|
||||
$this->total += floatval($add);
|
||||
$add = strval(round($add, 2));
|
||||
bcscale(2);
|
||||
$this->total = bcadd($this->total, $add);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -78,7 +81,7 @@ class Income
|
||||
*/
|
||||
public function getTotal()
|
||||
{
|
||||
return $this->total;
|
||||
return strval(round($this->total, 2));
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,6 +34,7 @@ class ReportHelper implements ReportHelperInterface
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param ReportQueryInterface $query
|
||||
*
|
||||
*/
|
||||
@ -64,11 +65,13 @@ class ReportHelper implements ReportHelperInterface
|
||||
$diff = 0;
|
||||
|
||||
// remove cash account, if any:
|
||||
$accounts =$accounts->filter(function(Account $account) {
|
||||
if($account->accountType->type != 'Cash account') {
|
||||
return $account;
|
||||
}
|
||||
});
|
||||
$accounts = $accounts->filter(
|
||||
function (Account $account) {
|
||||
if ($account->accountType->type != 'Cash account') {
|
||||
return $account;
|
||||
}
|
||||
} // @codeCoverageIgnore
|
||||
);
|
||||
|
||||
// summarize:
|
||||
foreach ($accounts as $account) {
|
||||
|
@ -5,12 +5,10 @@ namespace FireflyIII\Helpers\Report;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use Crypt;
|
||||
use DB;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
use Illuminate\Support\Collection;
|
||||
use Steam;
|
||||
@ -74,7 +72,7 @@ class ReportQuery implements ReportQueryInterface
|
||||
if ($journal->amount != 0) {
|
||||
return $journal;
|
||||
}
|
||||
}
|
||||
} // @codeCoverageIgnore
|
||||
);
|
||||
|
||||
return $data;
|
||||
@ -138,7 +136,6 @@ class ReportQuery implements ReportQueryInterface
|
||||
* This method returns all "income" journals in a certain period, which are both transfers from a shared account
|
||||
* and "ordinary" deposits. The query used is almost equal to ReportQueryInterface::journalsByRevenueAccount but it does
|
||||
* not group and returns different fields.
|
||||
|
||||
*
|
||||
* @param Carbon $start
|
||||
* @param Carbon $end
|
||||
@ -191,7 +188,7 @@ class ReportQuery implements ReportQueryInterface
|
||||
if ($journal->amount != 0) {
|
||||
return $journal;
|
||||
}
|
||||
}
|
||||
} // @codeCoverageIgnore
|
||||
);
|
||||
|
||||
return $data;
|
||||
@ -237,13 +234,11 @@ class ReportQuery implements ReportQueryInterface
|
||||
Auth::user()->transactionjournals()
|
||||
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->where('transactions.amount', '<', 0)
|
||||
->transactionTypes(['Withdrawal'])
|
||||
->where('transactions.account_id', $account->id)
|
||||
->before($end)
|
||||
->after($start)
|
||||
->whereNull('budget_transaction_journal.budget_id')
|
||||
->sum('transactions.amount')
|
||||
->whereNull('budget_transaction_journal.budget_id')->get(['transaction_journals.*'])->sum('amount')
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ use View;
|
||||
class AccountController extends Controller
|
||||
{
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -36,6 +36,8 @@ class PasswordController extends Controller
|
||||
* @param \Illuminate\Contracts\Auth\Guard $auth
|
||||
* @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
*/
|
||||
public function __construct(Guard $auth, PasswordBroker $passwords)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ class BillController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ class BudgetController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -21,7 +21,7 @@ class CategoryController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ abstract class Controller extends BaseController
|
||||
protected $monthFormat;
|
||||
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ class CurrencyController extends Controller
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -6,6 +6,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use Input;
|
||||
use Preferences;
|
||||
use Redirect;
|
||||
use Route;
|
||||
use Session;
|
||||
use Steam;
|
||||
|
||||
@ -87,5 +88,78 @@ class HomeController extends Controller
|
||||
return view('index', compact('count', 'title', 'savings', 'subTitle', 'mainTitleIcon', 'transactions', 'savingsTotal', 'piggyBankAccounts'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
|
||||
*/
|
||||
public function routes()
|
||||
{
|
||||
$directory = '/vagrant_data/Sites/firefly-iii-help';
|
||||
$languages = array_keys(Config::get('firefly.lang'));
|
||||
$routes = [];
|
||||
$ignored = [
|
||||
'debugbar.openhandler', 'debugbar.assets.css', 'debugbar.assets.js', 'register', 'routes', 'daterange',
|
||||
'flush', 'delete-account-post', 'change-password-post', 'logout', 'login', 'tags.hideTagHelp',
|
||||
'budgets.postIncome', 'flush'
|
||||
];
|
||||
|
||||
$ignoreMatch = ['.store', '.update', '.destroy', 'json.'];
|
||||
|
||||
$routeCollection = Route::getRoutes();
|
||||
/** @var \Illuminate\Routing\Route $object */
|
||||
foreach ($routeCollection as $object) {
|
||||
// get name:
|
||||
$name = $object->getName();
|
||||
// has name and not in ignore list?
|
||||
if (strlen($name) > 0 && !in_array($name, $ignored)) {
|
||||
|
||||
// not in ignoreMatch?
|
||||
$continue = true;
|
||||
foreach ($ignoreMatch as $ignore) {
|
||||
$match = strpos($name, $ignore);
|
||||
if (!($match === false)) {
|
||||
$continue = false;
|
||||
}
|
||||
}
|
||||
unset($ignore, $match);
|
||||
|
||||
if ($continue) {
|
||||
|
||||
$routes[] = $name;
|
||||
|
||||
// check all languages:
|
||||
foreach ($languages as $lang) {
|
||||
$file = $directory . '/' . $lang . '/' . $name . '.md';
|
||||
if (!file_exists($file)) {
|
||||
touch($file);
|
||||
echo $name . '<br />';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// loop directories with language file.
|
||||
// tag the ones not in the list of approved routes.
|
||||
foreach ($languages as $lang) {
|
||||
$dir = $directory . '/' . $lang;
|
||||
$set = scandir($dir);
|
||||
foreach ($set as $entry) {
|
||||
if ($entry != '.' && $entry != '..') {
|
||||
$name = str_replace('.md', '', $entry);
|
||||
if (!in_array($name, $routes)) {
|
||||
$file = $dir . '/' . $entry;
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
echo 'Done!';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ class PiggyBankController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -17,7 +17,7 @@ class PreferencesController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -23,6 +23,8 @@ class ReportController extends Controller
|
||||
protected $helper;
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param ReportHelperInterface $helper
|
||||
*/
|
||||
public function __construct(ReportHelperInterface $helper)
|
||||
|
@ -32,7 +32,7 @@ use View;
|
||||
class TagController extends Controller
|
||||
{
|
||||
/**
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -26,6 +26,7 @@ use View;
|
||||
class TransactionController extends Controller
|
||||
{
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
|
@ -37,6 +37,7 @@ class Kernel extends HttpKernel
|
||||
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
|
||||
'guest' => 'FireflyIII\Http\Middleware\RedirectIfAuthenticated',
|
||||
'range' => 'FireflyIII\Http\Middleware\Range',
|
||||
'cleanup' => 'FireflyIII\Http\Middleware\Cleanup',
|
||||
'reminders' => 'FireflyIII\Http\Middleware\Reminders',
|
||||
'piggybanks' => 'FireflyIII\Http\Middleware\PiggyBanks',
|
||||
|
||||
|
283
app/Http/Middleware/Cleanup.php
Normal file
283
app/Http/Middleware/Cleanup.php
Normal file
@ -0,0 +1,283 @@
|
||||
<?php namespace FireflyIII\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\BudgetLimit;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Models\LimitRepetition;
|
||||
use FireflyIII\Models\PiggyBank;
|
||||
use FireflyIII\Models\PiggyBankEvent;
|
||||
use FireflyIII\Models\PiggyBankRepetition;
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Models\Reminder;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Contracts\Auth\Guard;
|
||||
use Illuminate\Http\Request;
|
||||
use Session;
|
||||
|
||||
/**
|
||||
* Class Cleanup
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @package FireflyIII\Http\Middleware
|
||||
*/
|
||||
class Cleanup
|
||||
{
|
||||
|
||||
/**
|
||||
* The Guard implementation.
|
||||
*
|
||||
* @var Guard
|
||||
*/
|
||||
protected $auth;
|
||||
|
||||
/**
|
||||
* Create a new filter instance.
|
||||
*
|
||||
* @param Guard $auth
|
||||
*
|
||||
*/
|
||||
public function __construct(Guard $auth)
|
||||
{
|
||||
$this->auth = $auth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle(Request $request, Closure $next)
|
||||
{
|
||||
if ($this->auth->guest()) {
|
||||
if ($request->ajax()) {
|
||||
return response('Unauthorized.', 401);
|
||||
} else {
|
||||
return redirect()->guest('auth/login');
|
||||
}
|
||||
}
|
||||
$run = env('RUNCLEANUP') == 'true' ? true : false;
|
||||
$count = 0;
|
||||
|
||||
if ($run) {
|
||||
// encrypt account name
|
||||
$set = Account::where('encrypted', 0)->take(5)->get();
|
||||
/** @var Account $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$name = $entry->name;
|
||||
$entry->name = $name;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $name);
|
||||
|
||||
// encrypt bill name
|
||||
$set = Bill::where('name_encrypted', 0)->take(5)->get();
|
||||
/** @var Bill $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$name = $entry->name;
|
||||
$entry->name = $name;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $name);
|
||||
|
||||
// encrypt bill match
|
||||
$set = Bill::where('match_encrypted', 0)->take(5)->get();
|
||||
/** @var Bill $entry */
|
||||
foreach ($set as $entry) {
|
||||
$match = $entry->match;
|
||||
$entry->match = $match;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $match);
|
||||
|
||||
// encrypt budget name
|
||||
$set = Budget::where('encrypted', 0)->take(5)->get();
|
||||
/** @var Budget $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$name = $entry->name;
|
||||
$entry->name = $name;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $name);
|
||||
|
||||
// encrypt category name
|
||||
$set = Category::where('encrypted', 0)->take(5)->get();
|
||||
/** @var Category $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$name = $entry->name;
|
||||
$entry->name = $name;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $name);
|
||||
|
||||
// encrypt piggy bank name
|
||||
$set = PiggyBank::where('encrypted', 0)->take(5)->get();
|
||||
/** @var PiggyBank $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$name = $entry->name;
|
||||
$entry->name = $name;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $name);
|
||||
|
||||
// encrypt transaction journal description
|
||||
$set = TransactionJournal::where('encrypted', 0)->take(5)->get();
|
||||
/** @var TransactionJournal $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$description = $entry->description;
|
||||
$entry->description = $description;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $description);
|
||||
|
||||
// encrypt reminder metadata
|
||||
$set = Reminder::where('encrypted', 0)->take(5)->get();
|
||||
/** @var Reminder $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$metadata = $entry->metadata;
|
||||
$entry->metadata = $metadata;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $metadata);
|
||||
|
||||
// encrypt account virtual balance amount
|
||||
$set = Account::whereNull('virtual_balance_encrypted')->take(5)->get();
|
||||
/** @var Account $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->amount;
|
||||
$entry->virtual_balance = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
// encrypt bill amount_min
|
||||
$set = Bill::whereNull('amount_min_encrypted')->take(5)->get();
|
||||
/** @var Bill $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->amount_min;
|
||||
$entry->amount_min = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
// encrypt bill amount_max
|
||||
$set = Bill::whereNull('amount_max_encrypted')->take(5)->get();
|
||||
/** @var Bill $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->amount_max;
|
||||
$entry->amount_max = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
// encrypt budget limit amount
|
||||
$set = BudgetLimit::whereNull('amount_encrypted')->take(5)->get();
|
||||
/** @var BudgetLimit $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->amount;
|
||||
$entry->amount = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
// encrypt limit repetition amount
|
||||
$set = LimitRepetition::whereNull('amount_encrypted')->take(5)->get();
|
||||
/** @var LimitRepetition $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->amount;
|
||||
$entry->amount = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
//encrypt piggy bank event amount
|
||||
$set = PiggyBankEvent::whereNull('amount_encrypted')->take(5)->get();
|
||||
/** @var PiggyBankEvent $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->amount;
|
||||
$entry->amount = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
// encrypt piggy bank repetition currentamount
|
||||
$set = PiggyBankRepetition::whereNull('currentamount_encrypted')->take(5)->get();
|
||||
/** @var PiggyBankRepetition $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->currentamount;
|
||||
$entry->currentamount = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
// encrypt piggy bank targetamount
|
||||
$set = PiggyBank::whereNull('targetamount_encrypted')->take(5)->get();
|
||||
/** @var PiggyBank $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->targetamount;
|
||||
$entry->targetamount = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
|
||||
//encrypt preference name
|
||||
$set = Preference::whereNull('name_encrypted')->take(5)->get();
|
||||
/** @var Preference $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$name = $entry->name;
|
||||
$entry->name = $name;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $name);
|
||||
//encrypt preference data (add field)
|
||||
$set = Preference::whereNull('data_encrypted')->take(5)->get();
|
||||
/** @var Preference $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$data = $entry->data;
|
||||
$entry->data = $data;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $data);
|
||||
|
||||
// encrypt transaction amount
|
||||
$set = Transaction::whereNull('amount_encrypted')->take(5)->get();
|
||||
/** @var Transaction $entry */
|
||||
foreach ($set as $entry) {
|
||||
$count++;
|
||||
$amount = $entry->amount;
|
||||
$entry->amount = $amount;
|
||||
$entry->save();
|
||||
}
|
||||
unset($set, $entry, $amount);
|
||||
}
|
||||
if ($count == 0 && $run) {
|
||||
Session::flash('warning', 'Please open the .env file and change RUNCLEANUP=true to RUNCLEANUP=false');
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
<?php
|
||||
use Carbon\Carbon;
|
||||
use DaveJamesMiller\Breadcrumbs\Generator;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Budget;
|
||||
@ -71,7 +70,7 @@ Breadcrumbs::register(
|
||||
$breadcrumbs->parent('accounts.show', $account);
|
||||
$what = Config::get('firefly.shortNamesByFullName.' . $account->accountType->type);
|
||||
|
||||
$breadcrumbs->push(trans('breadcrumbs.edit_'.$what.'_account', ['name' => e($account->name)]), route('accounts.edit', $account->id));
|
||||
$breadcrumbs->push(trans('breadcrumbs.edit_' . $what . '_account', ['name' => e($account->name)]), route('accounts.edit', $account->id));
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -193,13 +193,14 @@ Route::controllers(
|
||||
]
|
||||
);
|
||||
|
||||
Route::get('/routes', ['uses' => 'HomeController@routes', 'as' => 'routes']);
|
||||
|
||||
/**
|
||||
* Home Controller
|
||||
*/
|
||||
Route::group(
|
||||
['middleware' => ['auth', 'range', 'reminders', 'piggybanks']], function () {
|
||||
Route::get('/', ['uses' => 'HomeController@index', 'as' => 'index']);
|
||||
Route::get('/', ['uses' => 'HomeController@index', 'as' => 'index', 'middleware' => 'cleanup']);
|
||||
Route::get('/home', ['uses' => 'HomeController@index', 'as' => 'home']);
|
||||
Route::post('/daterange', ['uses' => 'HomeController@dateRange', 'as' => 'daterange']);
|
||||
Route::get('/flush', ['uses' => 'HomeController@flush', 'as' => 'flush']);
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?php namespace FireflyIII\Models;
|
||||
|
||||
use App;
|
||||
use Crypt;
|
||||
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
@ -18,6 +17,7 @@ class Account extends Model
|
||||
use SoftDeletes, ValidatingTrait;
|
||||
|
||||
protected $fillable = ['user_id', 'account_type_id', 'name', 'active', 'virtual_balance'];
|
||||
protected $hidden = ['virtual_balance_encrypted', 'encrypted'];
|
||||
protected $rules
|
||||
= [
|
||||
'user_id' => 'required|exists:users,id',
|
||||
@ -50,12 +50,6 @@ class Account extends Model
|
||||
}
|
||||
// create it!
|
||||
$account = Account::create($fields);
|
||||
if (is_null($account->id)) {
|
||||
// could not create account:
|
||||
App::abort(500, 'Could not create new account with data: ' . json_encode($fields) . ' because ' . json_encode($account->getErrors()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
return $account;
|
||||
|
||||
@ -117,6 +111,8 @@ class Account extends Model
|
||||
*
|
||||
* @param $fieldName
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getMeta($fieldName)
|
||||
@ -145,9 +141,7 @@ class Account extends Model
|
||||
return Crypt::decrypt($value);
|
||||
}
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
return $value;
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
/**
|
||||
@ -203,6 +197,16 @@ class Account extends Model
|
||||
$this->attributes['encrypted'] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function setVirtualBalanceAttribute($value)
|
||||
{
|
||||
$this->attributes['virtual_balance'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
|
@ -4,6 +4,7 @@ use Crypt;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* Class Bill
|
||||
*
|
||||
* @package FireflyIII\Models
|
||||
@ -14,6 +15,8 @@ class Bill extends Model
|
||||
protected $fillable
|
||||
= ['name', 'match', 'amount_min', 'match_encrypted', 'name_encrypted', 'user_id', 'amount_max', 'date', 'repeat_freq', 'skip', 'automatch', 'active',];
|
||||
|
||||
protected $hidden = ['amount_min_encrypted', 'amount_max_encrypted', 'name_encrypted', 'match_encrypted'];
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
@ -34,9 +37,7 @@ class Bill extends Model
|
||||
return Crypt::decrypt($value);
|
||||
}
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
return $value;
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
/**
|
||||
@ -51,9 +52,23 @@ class Bill extends Model
|
||||
return Crypt::decrypt($value);
|
||||
}
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
return $value;
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setAmountMaxAttribute($value)
|
||||
{
|
||||
$this->attributes['amount_max'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setAmountMinAttribute($value)
|
||||
{
|
||||
$this->attributes['amount_min'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -15,7 +15,8 @@ class Budget extends Model
|
||||
|
||||
use SoftDeletes;
|
||||
|
||||
protected $fillable = ['user_id', 'name'];
|
||||
protected $fillable = ['user_id', 'name', 'active'];
|
||||
protected $hidden = ['encrypted'];
|
||||
|
||||
/**
|
||||
*
|
||||
@ -46,9 +47,7 @@ class Budget extends Model
|
||||
return Crypt::decrypt($value);
|
||||
}
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
return $value;
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -11,6 +11,8 @@ use Illuminate\Database\Eloquent\Model;
|
||||
class BudgetLimit extends Model
|
||||
{
|
||||
|
||||
protected $hidden = ['amount_encrypted'];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
@ -35,4 +37,12 @@ class BudgetLimit extends Model
|
||||
return $this->hasMany('FireflyIII\Models\LimitRepetition');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setAmountAttribute($value)
|
||||
{
|
||||
$this->attributes['amount'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?php namespace FireflyIII\Models;
|
||||
|
||||
use App;
|
||||
use Crypt;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
@ -16,24 +15,7 @@ class Category extends Model
|
||||
use SoftDeletes;
|
||||
|
||||
protected $fillable = ['user_id', 'name'];
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return array
|
||||
*/
|
||||
public function getDates()
|
||||
{
|
||||
return ['created_at', 'updated_at', 'deleted_at'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||
*/
|
||||
public function transactionjournals()
|
||||
{
|
||||
return $this->belongsToMany('FireflyIII\Models\TransactionJournal', 'category_transaction_journal', 'category_id');
|
||||
}
|
||||
protected $hidden = ['encrypted'];
|
||||
|
||||
/**
|
||||
* @param array $fields
|
||||
@ -59,11 +41,6 @@ class Category extends Model
|
||||
}
|
||||
// create it!
|
||||
$category = Category::create($fields);
|
||||
if (is_null($category->id)) {
|
||||
// could not create account:
|
||||
App::abort(500, 'Could not create new category with data: ' . json_encode($fields));
|
||||
|
||||
}
|
||||
|
||||
return $category;
|
||||
|
||||
@ -71,22 +48,11 @@ class Category extends Model
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
* @return array
|
||||
*/
|
||||
public function user()
|
||||
public function getDates()
|
||||
{
|
||||
return $this->belongsTo('FireflyIII\User');
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*/
|
||||
public function setNameAttribute($value)
|
||||
{
|
||||
$this->attributes['name'] = Crypt::encrypt($value);
|
||||
$this->attributes['encrypted'] = true;
|
||||
return ['created_at', 'updated_at', 'deleted_at'];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -106,4 +72,33 @@ class Category extends Model
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*/
|
||||
public function setNameAttribute($value)
|
||||
{
|
||||
$this->attributes['name'] = Crypt::encrypt($value);
|
||||
$this->attributes['encrypted'] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||
*/
|
||||
public function transactionjournals()
|
||||
{
|
||||
return $this->belongsToMany('FireflyIII\Models\TransactionJournal', 'category_transaction_journal', 'category_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo('FireflyIII\User');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,19 +1,20 @@
|
||||
<?php namespace FireflyIII\Models;
|
||||
|
||||
use Auth;
|
||||
use DB;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class LimitRepetition
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @package FireflyIII\Models
|
||||
*/
|
||||
class LimitRepetition extends Model
|
||||
{
|
||||
|
||||
protected $hidden = ['amount_encrypted'];
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function budgetLimit()
|
||||
@ -22,7 +23,6 @@ class LimitRepetition extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return array
|
||||
*/
|
||||
public function getDates()
|
||||
@ -31,24 +31,11 @@ class LimitRepetition extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @param $value
|
||||
*/
|
||||
public function spentInRepetition()
|
||||
public function setAmountAttribute($value)
|
||||
{
|
||||
$sum = DB::table('transactions')
|
||||
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
||||
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('budget_limits', 'budget_limits.budget_id', '=', 'budget_transaction_journal.budget_id')
|
||||
->leftJoin('limit_repetitions', 'limit_repetitions.budget_limit_id', '=', 'budget_limits.id')
|
||||
->where('transaction_journals.date', '>=', $this->startdate->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $this->enddate->format('Y-m-d'))
|
||||
->where('transaction_journals.user_id', Auth::user()->id)
|
||||
->whereNull('transactions.deleted_at')
|
||||
->where('transactions.amount', '>', 0)
|
||||
->where('limit_repetitions.id', '=', $this->id)
|
||||
->sum('transactions.amount');
|
||||
|
||||
return floatval($sum);
|
||||
$this->attributes['amount'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
/**
|
||||
* Class PiggyBank
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @package FireflyIII\Models
|
||||
*/
|
||||
class PiggyBank extends Model
|
||||
@ -14,10 +16,10 @@ class PiggyBank extends Model
|
||||
use SoftDeletes;
|
||||
|
||||
protected $fillable
|
||||
= ['name', 'account_id', 'order', 'reminder_skip', 'targetamount', 'startdate', 'targetdate', 'reminder', 'remind_me'];
|
||||
= ['name', 'account_id', 'order', 'reminder_skip', 'targetamount', 'startdate', 'targetdate', 'reminder', 'remind_me'];
|
||||
protected $hidden = ['targetamount_encrypted', 'encrypted'];
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function account()
|
||||
@ -45,7 +47,6 @@ class PiggyBank extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function piggyBankRepetitions()
|
||||
@ -54,7 +55,6 @@ class PiggyBank extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return array
|
||||
*/
|
||||
public function getDates()
|
||||
@ -63,48 +63,6 @@ class PiggyBank extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getRemindMeAttribute($value)
|
||||
{
|
||||
return intval($value) == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function piggyBankEvents()
|
||||
{
|
||||
return $this->hasMany('FireflyIII\Models\PiggyBankEvent');
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
|
||||
*/
|
||||
public function reminders()
|
||||
{
|
||||
return $this->morphMany('FireflyIII\Models\Reminder', 'remindersable');
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*/
|
||||
public function setNameAttribute($value)
|
||||
{
|
||||
$this->attributes['name'] = Crypt::encrypt($value);
|
||||
$this->attributes['encrypted'] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*
|
||||
@ -117,8 +75,51 @@ class PiggyBank extends Model
|
||||
return Crypt::decrypt($value);
|
||||
}
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
return $value;
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param $value
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getRemindMeAttribute($value)
|
||||
{
|
||||
return intval($value) == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function piggyBankEvents()
|
||||
{
|
||||
return $this->hasMany('FireflyIII\Models\PiggyBankEvent');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
|
||||
*/
|
||||
public function reminders()
|
||||
{
|
||||
return $this->morphMany('FireflyIII\Models\Reminder', 'remindersable');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param $value
|
||||
*/
|
||||
public function setNameAttribute($value)
|
||||
{
|
||||
$this->attributes['name'] = Crypt::encrypt($value);
|
||||
$this->attributes['encrypted'] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setTargetamountAttribute($value)
|
||||
{
|
||||
$this->attributes['targetamount'] = strval(round($value, 2));
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,14 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* Class PiggyBankEvent
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @package FireflyIII\Models
|
||||
*/
|
||||
class PiggyBankEvent extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['piggy_bank_id', 'transaction_journal_id', 'date', 'amount'];
|
||||
protected $hidden = ['amount_encrypted'];
|
||||
|
||||
/**
|
||||
* @return array
|
||||
@ -29,6 +31,14 @@ class PiggyBankEvent extends Model
|
||||
return $this->belongsTo('FireflyIII\Models\PiggyBank');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setAmountAttribute($value)
|
||||
{
|
||||
$this->attributes['amount'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
|
@ -14,6 +14,7 @@ class PiggyBankRepetition extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['piggy_bank_id', 'startdate', 'targetdate', 'currentamount'];
|
||||
protected $hidden = ['currentamount_encrypted'];
|
||||
|
||||
/**
|
||||
* @return array
|
||||
@ -66,4 +67,12 @@ class PiggyBankRepetition extends Model
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setCurrentamountAttribute($value)
|
||||
{
|
||||
$this->attributes['currentamount'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?php namespace FireflyIII\Models;
|
||||
|
||||
use Crypt;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
@ -12,6 +13,7 @@ class Preference extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['user_id', 'data', 'name'];
|
||||
protected $hidden = ['data_encrypted', 'name_encrypted'];
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
@ -20,7 +22,12 @@ class Preference extends Model
|
||||
*/
|
||||
public function getDataAttribute($value)
|
||||
{
|
||||
return json_decode($value);
|
||||
if (is_null($this->data_encrypted)) {
|
||||
return json_decode($value);
|
||||
}
|
||||
$data = Crypt::decrypt($this->data_encrypted);
|
||||
|
||||
return json_decode($data);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -31,12 +38,37 @@ class Preference extends Model
|
||||
return ['created_at', 'updated_at'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*
|
||||
* @return float|int
|
||||
*/
|
||||
public function getNameAttribute($value)
|
||||
{
|
||||
if (is_null($this->name_encrypted)) {
|
||||
return $value;
|
||||
}
|
||||
$value = Crypt::decrypt($this->name_encrypted);
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setDataAttribute($value)
|
||||
{
|
||||
$this->attributes['data'] = json_encode($value);
|
||||
$this->attributes['data'] = '';//json_encode($value);
|
||||
$this->attributes['data_encrypted'] = Crypt::encrypt(json_encode($value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setNameAttribute($value)
|
||||
{
|
||||
$this->attributes['name_encrypted'] = Crypt::encrypt($value);
|
||||
$this->attributes['name'] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -8,6 +8,8 @@ use Illuminate\Database\Eloquent\Model;
|
||||
/**
|
||||
* Class Reminder
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @package FireflyIII\Models
|
||||
*/
|
||||
class Reminder extends Model
|
||||
@ -15,9 +17,9 @@ class Reminder extends Model
|
||||
|
||||
|
||||
protected $fillable = ['user_id', 'startdate', 'metadata', 'enddate', 'active', 'notnow', 'remindersable_id', 'remindersable_type',];
|
||||
protected $hidden = ['encrypted'];
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*
|
||||
@ -29,7 +31,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return array
|
||||
*/
|
||||
public function getDates()
|
||||
@ -38,7 +39,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*
|
||||
@ -54,7 +54,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*
|
||||
@ -66,7 +65,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
|
||||
*/
|
||||
public function remindersable()
|
||||
@ -75,7 +73,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param EloquentBuilder $query
|
||||
* @param Carbon $start
|
||||
@ -89,7 +86,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param EloquentBuilder $query
|
||||
*
|
||||
@ -104,7 +100,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param $value
|
||||
*/
|
||||
@ -115,7 +110,6 @@ class Reminder extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function user()
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
namespace FireflyIII\Models;
|
||||
|
||||
use App;
|
||||
use Crypt;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
@ -57,12 +56,6 @@ class Tag extends Model
|
||||
$fields['tagMode'] = 'nothing';
|
||||
$fields['description'] = isset($fields['description']) && !is_null($fields['description']) ? $fields['description'] : '';
|
||||
$tag = Tag::create($fields);
|
||||
if (is_null($tag->id)) {
|
||||
// could not create account:
|
||||
App::abort(500, 'Could not create new tag with data: ' . json_encode($fields) . ' because ' . json_encode($tag->getErrors()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
return $tag;
|
||||
|
||||
|
@ -16,6 +16,7 @@ class Transaction extends Model
|
||||
{
|
||||
|
||||
protected $fillable = ['account_id', 'transaction_journal_id', 'description', 'amount'];
|
||||
protected $hidden = ['encrypted'];
|
||||
protected $rules
|
||||
= [
|
||||
'account_id' => 'required|exists:accounts,id',
|
||||
@ -33,6 +34,24 @@ class Transaction extends Model
|
||||
return $this->belongsTo('FireflyIII\Models\Account');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*
|
||||
* @return float|int
|
||||
*/
|
||||
public function getAmountAttribute($value)
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getDates()
|
||||
{
|
||||
return ['created_at', 'updated_at', 'deleted_at'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param EloquentBuilder $query
|
||||
* @param Carbon $date
|
||||
@ -56,11 +75,11 @@ class Transaction extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @param $value
|
||||
*/
|
||||
public function getDates()
|
||||
public function setAmountAttribute($value)
|
||||
{
|
||||
return ['created_at', 'updated_at', 'deleted_at'];
|
||||
$this->attributes['amount'] = strval(round($value, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,7 +6,6 @@ use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
use Watson\Validating\ValidatingTrait;
|
||||
|
||||
/**
|
||||
@ -19,9 +18,9 @@ class TransactionJournal extends Model
|
||||
use SoftDeletes, ValidatingTrait;
|
||||
|
||||
protected $fillable = ['user_id', 'transaction_type_id', 'bill_id', 'transaction_currency_id', 'description', 'completed', 'date', 'encrypted'];
|
||||
|
||||
protected $hidden = ['encrypted'];
|
||||
protected $rules
|
||||
= [
|
||||
= [
|
||||
'user_id' => 'required|exists:users,id',
|
||||
'transaction_type_id' => 'required|exists:transaction_types,id',
|
||||
'bill_id' => 'exists:bills,id',
|
||||
@ -60,15 +59,15 @@ class TransactionJournal extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
* @return float
|
||||
* @return string
|
||||
*/
|
||||
public function getActualAmountAttribute()
|
||||
{
|
||||
$amount = 0;
|
||||
$amount = '0';
|
||||
/** @var Transaction $t */
|
||||
foreach ($this->transactions as $t) {
|
||||
if ($t->amount > 0) {
|
||||
$amount = floatval($t->amount);
|
||||
$amount = $t->amount;
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,11 +79,12 @@ class TransactionJournal extends Model
|
||||
*/
|
||||
public function getAmountAttribute()
|
||||
{
|
||||
$amount = 0;
|
||||
$amount = '0';
|
||||
bcscale(2);
|
||||
/** @var Transaction $t */
|
||||
foreach ($this->transactions as $t) {
|
||||
if ($t->amount > 0) {
|
||||
$amount = floatval($t->amount);
|
||||
$amount = $t->amount;
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,16 +94,16 @@ class TransactionJournal extends Model
|
||||
if ($this->tags->count() == 0) {
|
||||
return $amount;
|
||||
}
|
||||
|
||||
// if journal is part of advancePayment AND journal is a withdrawal,
|
||||
// then journal is being repaid by other journals, so the actual amount will lower:
|
||||
/** @var Tag $advancePayment */
|
||||
$advancePayment = $this->tags()->where('tagMode', 'advancePayment')->first();
|
||||
if ($advancePayment && $this->transactionType->type == 'Withdrawal') {
|
||||
|
||||
// loop other deposits, remove from our amount.
|
||||
$others = $advancePayment->transactionJournals()->transactionTypes(['Deposit'])->get();
|
||||
foreach ($others as $other) {
|
||||
$amount -= $other->actualAmount;
|
||||
$amount = bcsub($amount, $other->actualAmount);
|
||||
}
|
||||
|
||||
return $amount;
|
||||
@ -112,25 +112,24 @@ class TransactionJournal extends Model
|
||||
// if this journal is part of an advancePayment AND the journal is a deposit,
|
||||
// then the journal amount is correcting a withdrawal, and the amount is zero:
|
||||
if ($advancePayment && $this->transactionType->type == 'Deposit') {
|
||||
return 0;
|
||||
return '0';
|
||||
}
|
||||
|
||||
|
||||
// is balancing act?
|
||||
$balancingAct = $this->tags()->where('tagMode', 'balancingAct')->first();
|
||||
if ($balancingAct) {
|
||||
// this is the transfer
|
||||
|
||||
if ($balancingAct) {
|
||||
// this is the expense:
|
||||
if ($this->transactionType->type == 'Withdrawal') {
|
||||
$transfer = $balancingAct->transactionJournals()->transactionTypes(['Transfer'])->first();
|
||||
if ($transfer) {
|
||||
$amount -= $transfer->actualAmount;
|
||||
$amount = bcsub($amount, $transfer->actualAmount);
|
||||
|
||||
return $amount;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // @codeCoverageIgnore
|
||||
} // @codeCoverageIgnore
|
||||
|
||||
return $amount;
|
||||
}
|
||||
@ -181,16 +180,16 @@ class TransactionJournal extends Model
|
||||
*/
|
||||
public function getCorrectedActualAmountAttribute()
|
||||
{
|
||||
$amount = 0;
|
||||
$amount = '0';
|
||||
$type = $this->transactionType->type;
|
||||
/** @var Transaction $t */
|
||||
foreach ($this->transactions as $t) {
|
||||
if ($t->amount > 0 && $type != 'Withdrawal') {
|
||||
$amount = floatval($t->amount);
|
||||
$amount = $t->amount;
|
||||
break;
|
||||
}
|
||||
if ($t->amount < 0 && $type == 'Withdrawal') {
|
||||
$amount = floatval($t->amount);
|
||||
$amount = $t->amount;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -223,6 +222,21 @@ class TransactionJournal extends Model
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Account
|
||||
*/
|
||||
public function getDestinationAccountAttribute()
|
||||
{
|
||||
/** @var Transaction $transaction */
|
||||
foreach ($this->transactions()->get() as $transaction) {
|
||||
if (floatval($transaction->amount) > 0) {
|
||||
return $transaction->account;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->transactions()->first()->account;
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
@ -273,24 +287,6 @@ class TransactionJournal extends Model
|
||||
return $query->where('transaction_journals.date', '<=', $date->format('Y-m-d 00:00:00'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param EloquentBuilder $query
|
||||
* @param $amount
|
||||
*/
|
||||
public function scopeLessThan(EloquentBuilder $query, $amount)
|
||||
{
|
||||
if (is_null($this->joinedTransactions)) {
|
||||
$query->leftJoin(
|
||||
'transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id'
|
||||
);
|
||||
$this->joinedTransactions = true;
|
||||
}
|
||||
|
||||
$query->where('transactions.amount', '<=', $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
@ -304,24 +300,6 @@ class TransactionJournal extends Model
|
||||
return $query->where('date', '=', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the account to which the money was moved.
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
* @param EloquentBuilder $query
|
||||
* @param Account $account
|
||||
*/
|
||||
public function scopeToAccountIs(EloquentBuilder $query, Account $account)
|
||||
{
|
||||
$query->leftJoin(
|
||||
'transactions', function (JoinClause $join) {
|
||||
$join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')->where('transactions.amount', '>', 0);
|
||||
}
|
||||
);
|
||||
$query->where('transactions.account_id', $account->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @codeCoverageIgnore
|
||||
*
|
||||
|
@ -287,7 +287,7 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
*/
|
||||
public function getTransfersInRange(Account $account, Carbon $start, Carbon $end)
|
||||
{
|
||||
return TransactionJournal::whereIn(
|
||||
$set = TransactionJournal::whereIn(
|
||||
'id', function (Builder $q) use ($account, $start, $end) {
|
||||
$q->select('transaction_journals.id')
|
||||
->from('transactions')
|
||||
@ -297,11 +297,19 @@ class AccountRepository implements AccountRepositoryInterface
|
||||
->where('transaction_journals.user_id', Auth::user()->id)
|
||||
->where('transaction_journals.date', '>=', $start->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $end->format('Y-m-d'))
|
||||
->where('transactions.amount', '>', 0)
|
||||
->where('transaction_types.type', 'Transfer');
|
||||
|
||||
}
|
||||
)->get();
|
||||
$filtered = $set->filter(
|
||||
function (TransactionJournal $journal) use ($account) {
|
||||
if ($journal->destination_account->id == $account->id) {
|
||||
return $journal;
|
||||
}
|
||||
} // @codeCoverageIgnore
|
||||
);
|
||||
|
||||
return $filtered;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -10,7 +10,6 @@ use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Navigation;
|
||||
@ -108,16 +107,10 @@ class BillRepository implements BillRepositoryInterface
|
||||
public function getJournals(Bill $bill)
|
||||
{
|
||||
return $bill->transactionjournals()->withRelevantData()
|
||||
->leftJoin(
|
||||
'transactions', function (JoinClause $join) {
|
||||
$join->on('transactions.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->where('transactions.amount', '>', 0);
|
||||
}
|
||||
)
|
||||
->orderBy('transaction_journals.date', 'DESC')
|
||||
->orderBy('transaction_journals.order', 'ASC')
|
||||
->orderBy('transaction_journals.id', 'DESC')
|
||||
->get(['transaction_journals.*', 'transactions.amount']);
|
||||
->get(['transaction_journals.*']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -250,9 +250,8 @@ class BudgetRepository implements BudgetRepositoryInterface
|
||||
)
|
||||
->after($start)
|
||||
->before($end)
|
||||
->lessThan(0)
|
||||
->transactionTypes(['Withdrawal'])
|
||||
->sum('transactions.amount');
|
||||
->get(['transaction_journals.*'])->sum('amount');
|
||||
|
||||
return floatval($noBudgetSet) * -1;
|
||||
}
|
||||
@ -269,13 +268,13 @@ class BudgetRepository implements BudgetRepositoryInterface
|
||||
{
|
||||
if ($shared === true) {
|
||||
// get everything:
|
||||
$sum = floatval($budget->transactionjournals()->before($end)->after($start)->lessThan(0)->get(['transaction_journals.*'])->sum('amount'));
|
||||
$sum = floatval($budget->transactionjournals()->before($end)->after($start)->get(['transaction_journals.*'])->sum('amount'));
|
||||
} else {
|
||||
// get all journals in this month where the asset account is NOT shared.
|
||||
$sum = $budget->transactionjournals()
|
||||
->before($end)
|
||||
->after($start)
|
||||
->lessThan(0)
|
||||
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
|
||||
->leftJoin(
|
||||
'account_meta', function (JoinClause $join) {
|
||||
@ -310,7 +309,6 @@ class BudgetRepository implements BudgetRepositoryInterface
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param Budget $budget
|
||||
* @param array $data
|
||||
|
@ -5,7 +5,6 @@ namespace FireflyIII\Repositories\Category;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use Crypt;
|
||||
use DB;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
@ -86,7 +85,7 @@ class CategoryRepository implements CategoryRepositoryInterface
|
||||
$result[$categoryId]['sum'] += floatval($entry->amount);
|
||||
} else {
|
||||
$isEncrypted = intval($entry->category_encrypted) == 1 ? true : false;
|
||||
$name = strlen($entry->name) == 0 ? trans('firefly.noCategory') : $entry->name;
|
||||
$name = strlen($entry->name) == 0 ? trans('firefly.no_category') : $entry->name;
|
||||
$name = $isEncrypted ? Crypt::decrypt($name) : $name;
|
||||
$result[$categoryId] = [
|
||||
'name' => $name,
|
||||
@ -202,7 +201,7 @@ class CategoryRepository implements CategoryRepositoryInterface
|
||||
->before($end)
|
||||
->after($start)
|
||||
->transactionTypes(['Withdrawal'])
|
||||
->lessThan(0)
|
||||
->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
|
||||
->leftJoin(
|
||||
'account_meta', function (JoinClause $join) {
|
||||
|
@ -76,15 +76,20 @@ class JournalRepository implements JournalRepositoryInterface
|
||||
*/
|
||||
public function getAmountBefore(TransactionJournal $journal, Transaction $transaction)
|
||||
{
|
||||
return floatval(
|
||||
$transaction->account->transactions()->leftJoin(
|
||||
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
||||
)
|
||||
->where('transaction_journals.date', '<=', $journal->date->format('Y-m-d'))
|
||||
->where('transaction_journals.order', '>=', $journal->order)
|
||||
->where('transaction_journals.id', '!=', $journal->id)
|
||||
->sum('transactions.amount')
|
||||
);
|
||||
$set = $transaction->account->transactions()->leftJoin(
|
||||
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
||||
)
|
||||
->where('transaction_journals.date', '<=', $journal->date->format('Y-m-d'))
|
||||
->where('transaction_journals.order', '>=', $journal->order)
|
||||
->where('transaction_journals.id', '!=', $journal->id)
|
||||
->get(['transactions.*']);
|
||||
$sum = 0;
|
||||
foreach ($set as $entry) {
|
||||
$sum += $entry->amount;
|
||||
}
|
||||
|
||||
return $sum;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,9 +78,13 @@ class TagRepository implements TagRepositoryInterface
|
||||
|
||||
/** @var Tag $tag */
|
||||
foreach ($tags as $tag) {
|
||||
$transfer = $tag->transactionjournals()->after($start)->before($end)->toAccountIs($account)->transactionTypes(['Transfer'])->first();
|
||||
if ($transfer) {
|
||||
$amount += $transfer->amount;
|
||||
$journals = $tag->transactionjournals()->after($start)->before($end)->transactionTypes(['Transfer'])->get(['transaction_journals.*']);
|
||||
|
||||
/** @var TransactionJournal $journal */
|
||||
foreach ($journals as $journal) {
|
||||
if ($journal->destination_account->id == $account->id) {
|
||||
$amount += $journal->amount;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,16 +34,21 @@ class Steam
|
||||
$firstDate = is_null($firstDateObject) ? clone $date : new Carbon($firstDateObject->date);
|
||||
$date = $date < $firstDate ? $firstDate : $date;
|
||||
|
||||
$balance = floatval(
|
||||
$account->transactions()->leftJoin(
|
||||
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
||||
)->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->sum('transactions.amount')
|
||||
);
|
||||
if (!$ignoreVirtualBalance) {
|
||||
$balance += floatval($account->virtual_balance);
|
||||
bcscale(2);
|
||||
$set = $account->transactions()->leftJoin(
|
||||
'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id'
|
||||
)->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->get(['transactions.*']);
|
||||
$balance = '0';
|
||||
foreach ($set as $entry) {
|
||||
$balance = bcadd($balance, $entry->amount);
|
||||
}
|
||||
|
||||
return $balance;
|
||||
if (!$ignoreVirtualBalance) {
|
||||
$balance = bcadd($balance, $account->virtual_balance);
|
||||
//$balance += floatval($account->virtual_balance);
|
||||
}
|
||||
|
||||
return round($balance, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,7 +3,6 @@
|
||||
namespace FireflyIII\Support\Twig;
|
||||
|
||||
use Auth;
|
||||
use DB;
|
||||
use FireflyIII\Models\LimitRepetition;
|
||||
use Twig_Extension;
|
||||
use Twig_SimpleFunction;
|
||||
@ -20,25 +19,6 @@ class Budget extends Twig_Extension
|
||||
*/
|
||||
public function getFunctions()
|
||||
{
|
||||
$functions[] = new Twig_SimpleFunction(
|
||||
'spentInRepetition', function (LimitRepetition $repetition) {
|
||||
$sum = DB::table('transactions')
|
||||
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
|
||||
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->leftJoin('budget_limits', 'budget_limits.budget_id', '=', 'budget_transaction_journal.budget_id')
|
||||
->leftJoin('limit_repetitions', 'limit_repetitions.budget_limit_id', '=', 'budget_limits.id')
|
||||
->where('transaction_journals.date', '>=', $repetition->startdate->format('Y-m-d'))
|
||||
->where('transaction_journals.date', '<=', $repetition->enddate->format('Y-m-d'))
|
||||
->where('transaction_journals.user_id', Auth::user()->id)
|
||||
->whereNull('transactions.deleted_at')
|
||||
->where('transactions.amount', '>', 0)
|
||||
->where('limit_repetitions.id', '=', $repetition->id)
|
||||
->sum('transactions.amount');
|
||||
|
||||
return floatval($sum);
|
||||
}
|
||||
);
|
||||
|
||||
$functions[] = new Twig_SimpleFunction(
|
||||
'spentInRepetitionCorrected', function (LimitRepetition $repetition) {
|
||||
$sum
|
||||
|
@ -84,7 +84,7 @@ class Journal extends Twig_Extension
|
||||
if ($tag->tagMode == 'balancingAct') {
|
||||
// return tag formatted for a "balancing act", even if other
|
||||
// tags are present.
|
||||
$amount = App::make('amount')->formatJournal($journal, false);
|
||||
$amount = App::make('amount')->format($journal->actual_amount, false);
|
||||
|
||||
return '<a href="' . route('tags.show', $tag->id) . '" class="label label-success" title="' . $amount
|
||||
. '"><i class="fa fa-fw fa-refresh"></i> ' . $tag->tag . '</a>';
|
||||
|
148
database/migrations/2015_05_22_172026_changes_for_v3409.php
Normal file
148
database/migrations/2015_05_22_172026_changes_for_v3409.php
Normal file
@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ShortMethodName)
|
||||
*
|
||||
* Class ChangesForV3409
|
||||
*/
|
||||
class ChangesForV3409 extends Migration
|
||||
{
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
// remove decryption, but this will destroy amounts.
|
||||
|
||||
Schema::table(
|
||||
'accounts', function (Blueprint $table) {
|
||||
$table->dropColumn('virtual_balance_encrypted');
|
||||
}
|
||||
);
|
||||
|
||||
Schema::table(
|
||||
'bills', function (Blueprint $table) {
|
||||
$table->dropColumn('amount_min_encrypted');
|
||||
$table->dropColumn('amount_max_encrypted');
|
||||
}
|
||||
);
|
||||
|
||||
Schema::table(
|
||||
'budget_limits', function (Blueprint $table) {
|
||||
|
||||
$table->dropColumn('amount_encrypted');
|
||||
}
|
||||
);
|
||||
Schema::table(
|
||||
'limit_repetitions', function (Blueprint $table) {
|
||||
$table->dropColumn('amount_encrypted');
|
||||
}
|
||||
);
|
||||
Schema::table(
|
||||
'piggy_bank_events', function (Blueprint $table) {
|
||||
$table->dropColumn('amount_encrypted');
|
||||
}
|
||||
);
|
||||
Schema::table(
|
||||
'piggy_bank_repetitions', function (Blueprint $table) {
|
||||
$table->dropColumn('currentamount_encrypted');
|
||||
}
|
||||
);
|
||||
|
||||
Schema::table(
|
||||
'piggy_banks', function (Blueprint $table) {
|
||||
$table->dropColumn('targetamount_encrypted');
|
||||
}
|
||||
);
|
||||
Schema::table(
|
||||
'preferences', function (Blueprint $table) {
|
||||
$table->dropColumn('name_encrypted');
|
||||
$table->dropColumn('data_encrypted');
|
||||
}
|
||||
);
|
||||
|
||||
Schema::table(
|
||||
'transactions', function (Blueprint $table) {
|
||||
$table->dropColumn('amount_encrypted');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
// encrypt account virtual balance:
|
||||
Schema::table(
|
||||
'accounts', function (Blueprint $table) {
|
||||
$table->string('virtual_balance_encrypted')->nullable()->after('virtual_balance');
|
||||
}
|
||||
);
|
||||
|
||||
// encrypt bill amount_min and amount_max:
|
||||
Schema::table(
|
||||
'bills', function (Blueprint $table) {
|
||||
$table->string('amount_min_encrypted')->nullable()->after('amount_min');
|
||||
$table->string('amount_max_encrypted')->nullable()->after('amount_max');
|
||||
}
|
||||
);
|
||||
|
||||
// encrypt budget limit amount
|
||||
Schema::table(
|
||||
'budget_limits', function (Blueprint $table) {
|
||||
$table->string('amount_encrypted')->nullable()->after('amount');
|
||||
}
|
||||
);
|
||||
// encrypt limit repetition amount
|
||||
Schema::table(
|
||||
'limit_repetitions', function (Blueprint $table) {
|
||||
$table->string('amount_encrypted')->nullable()->after('amount');
|
||||
}
|
||||
);
|
||||
// encrypt piggy bank event amount
|
||||
Schema::table(
|
||||
'piggy_bank_events', function (Blueprint $table) {
|
||||
$table->string('amount_encrypted')->nullable()->after('amount');
|
||||
}
|
||||
);
|
||||
// encrypt piggy bank repetition currentamount
|
||||
Schema::table(
|
||||
'piggy_bank_repetitions', function (Blueprint $table) {
|
||||
$table->string('currentamount_encrypted')->nullable()->after('currentamount');
|
||||
}
|
||||
);
|
||||
|
||||
// encrypt piggy bank targetamount
|
||||
Schema::table(
|
||||
'piggy_banks', function (Blueprint $table) {
|
||||
$table->string('targetamount_encrypted')->nullable()->after('targetamount');
|
||||
}
|
||||
);
|
||||
// encrypt preference name (add field)
|
||||
// encrypt preference data (add field)
|
||||
Schema::table(
|
||||
'preferences', function (Blueprint $table) {
|
||||
$table->text('name_encrypted')->nullable()->after('name');
|
||||
$table->text('data_encrypted')->nullable()->after('data');
|
||||
}
|
||||
);
|
||||
|
||||
// encrypt transaction amount
|
||||
Schema::table(
|
||||
'transactions', function (Blueprint $table) {
|
||||
$table->string('amount_encrypted')->nullable()->after('amount');
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -134,7 +134,9 @@ class TestDataSeeder extends Seeder
|
||||
|
||||
$acc_a = Account::create(['user_id' => $user->id, 'account_type_id' => $assetType->id, 'name' => 'Checking account', 'active' => 1]);
|
||||
$acc_b = Account::create(['user_id' => $user->id, 'account_type_id' => $assetType->id, 'name' => 'Savings account', 'active' => 1]);
|
||||
$acc_c = Account::create(['user_id' => $user->id, 'account_type_id' => $assetType->id, 'name' => 'Delete me', 'active' => 1]);
|
||||
$acc_c = Account::create(
|
||||
['user_id' => $user->id, 'account_type_id' => $assetType->id, 'name' => 'Delete me', 'active' => 1, 'virtual_balance' => 123.45]
|
||||
);
|
||||
|
||||
// create account meta:
|
||||
AccountMeta::create(['account_id' => $acc_a->id, 'name' => 'accountRole', 'data' => 'defaultAsset']);
|
||||
@ -514,27 +516,6 @@ class TestDataSeeder extends Seeder
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $name
|
||||
*
|
||||
* @return PiggyBank|null
|
||||
*/
|
||||
protected function findPiggyBank($name)
|
||||
{
|
||||
// account
|
||||
$user = User::whereEmail('thegrumpydictator@gmail.com')->first();
|
||||
/** @var Budget $budget */
|
||||
foreach (PiggyBank::get() as $piggyBank) {
|
||||
$account = $piggyBank->account()->first();
|
||||
if ($piggyBank->name == $name && $user->id == $account->user_id) {
|
||||
return $piggyBank;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $name
|
||||
*
|
||||
@ -680,5 +661,26 @@ class TestDataSeeder extends Seeder
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $name
|
||||
*
|
||||
* @return PiggyBank|null
|
||||
*/
|
||||
protected function findPiggyBank($name)
|
||||
{
|
||||
// account
|
||||
$user = User::whereEmail('thegrumpydictator@gmail.com')->first();
|
||||
/** @var Budget $budget */
|
||||
foreach (PiggyBank::get() as $piggyBank) {
|
||||
$account = $piggyBank->account()->first();
|
||||
if ($piggyBank->name == $name && $user->id == $account->user_id) {
|
||||
return $piggyBank;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -29,8 +29,6 @@ return [
|
||||
'transactionsWithoutBudgetDate' => 'Expenses without budget in :date',
|
||||
'createBudget' => 'New budget',
|
||||
'inactiveBudgets' => 'Inactive budgets',
|
||||
'newCategory' => 'New category',
|
||||
'withoutCategory' => 'Without a category',
|
||||
|
||||
'details_for_asset' => 'Details for asset account ":name"',
|
||||
'details_for_expense' => 'Details for expense account ":name"',
|
||||
@ -53,6 +51,14 @@ return [
|
||||
'make_new_expense_account' => 'New expense account',
|
||||
'make_new_revenue_account' => 'New revenue account',
|
||||
|
||||
// categories:
|
||||
'new_category' => 'New category',
|
||||
'without_category' => 'Without a category',
|
||||
'update_category' => 'Wijzig categorie',
|
||||
'categories' => 'Categories',
|
||||
'no_category' => '(no category)',
|
||||
'category' => 'Category',
|
||||
|
||||
// new user:
|
||||
'welcome' => 'Welcome to Firefly!',
|
||||
'createNewAsset' => 'Create a new asset account to get started. This will allow you to create transactions and start your financial management',
|
||||
@ -94,7 +100,6 @@ return [
|
||||
'Expense account' => 'Expense account',
|
||||
'Revenue account' => 'Revenue account',
|
||||
'budgets' => 'Budgets',
|
||||
'categories' => 'Categories',
|
||||
'tags' => 'Tags',
|
||||
'reports' => 'Reports',
|
||||
'transactions' => 'Transactions',
|
||||
@ -171,9 +176,7 @@ return [
|
||||
'spent' => 'Spent',
|
||||
'overspent' => 'Overspent',
|
||||
'left' => 'Left',
|
||||
'noCategory' => '(no category)',
|
||||
'noBudget' => '(no budget)',
|
||||
'category' => 'Category',
|
||||
'maxAmount' => 'Maximum amount',
|
||||
'minAmount' => 'Minumum amount',
|
||||
'billEntry' => 'Current bill entry',
|
||||
|
@ -29,8 +29,6 @@ return [
|
||||
'transactionsWithoutBudgetDate' => 'Uitgaven zonder budget in :date',
|
||||
'createBudget' => 'Maak nieuw budget',
|
||||
'inactiveBudgets' => 'Inactieve budgetten',
|
||||
'newCategory' => 'Nieuwe categorie',
|
||||
'withoutCategory' => 'Zonder categorie',
|
||||
|
||||
'details_for_asset' => 'Overzicht voor betaalrekening ":name"',
|
||||
'details_for_expense' => 'Overzicht voor crediteur ":name"',
|
||||
@ -53,6 +51,14 @@ return [
|
||||
'make_new_expense_account' => 'Nieuwe crediteur',
|
||||
'make_new_revenue_account' => 'Nieuwe debiteur',
|
||||
|
||||
// categories:
|
||||
'new_category' => 'Nieuwe categorie',
|
||||
'without_category' => 'Zonder categorie',
|
||||
'update_category' => 'Wijzig categorie',
|
||||
'categories' => 'Categorieën',
|
||||
'no_category' => '(geen categorie)',
|
||||
'category' => 'Categorie',
|
||||
|
||||
// new user:
|
||||
'welcome' => 'Welkom bij Firefly!',
|
||||
'createNewAsset' => 'Maak om te beginnen een nieuwe betaalrekening. Dit is je start van je financiële beheer.',
|
||||
@ -94,7 +100,6 @@ return [
|
||||
'Expense account' => 'Crediteur',
|
||||
'Revenue account' => 'Debiteur',
|
||||
'budgets' => 'Budgetten',
|
||||
'categories' => 'Categorieën',
|
||||
'tags' => 'Tags',
|
||||
'reports' => 'Overzichten',
|
||||
'transactions' => 'Transacties',
|
||||
@ -134,10 +139,10 @@ return [
|
||||
'accountBalances' => 'Rekeningsaldi',
|
||||
'balanceStartOfYear' => 'Saldo aan het begin van het jaar',
|
||||
'balanceEndOfYear' => 'Saldo aan het einde van het jaar',
|
||||
'balanceStartOfMonth' => 'Saldo aan het einde van de maand',
|
||||
'balanceStartOfMonth' => 'Saldo aan het begin van de maand',
|
||||
'balanceEndOfMonth' => 'Saldo aan het einde van de maand',
|
||||
|
||||
'balanceStart' => 'Saldo aan het einde van de periode',
|
||||
'balanceStart' => 'Saldo aan het begin van de periode',
|
||||
'balanceEnd' => 'Saldo aan het einde van de periode',
|
||||
|
||||
'reportsOwnAccounts' => 'Overzichten voor je eigen betaalrekeningen',
|
||||
@ -171,9 +176,7 @@ return [
|
||||
'spent' => 'Uitgegeven',
|
||||
'overspent' => 'Teveel uitgegeven',
|
||||
'left' => 'Over',
|
||||
'noCategory' => '(geen categorie)',
|
||||
'noBudget' => '(geen budget)',
|
||||
'category' => 'Categorie',
|
||||
'maxAmount' => 'Maximaal bedrag',
|
||||
'minAmount' => 'Minimaal bedrag',
|
||||
'billEntry' => 'Bedrag voor deze rekening',
|
||||
|
@ -18,4 +18,4 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -34,7 +34,7 @@
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<p>
|
||||
<button type="submit" class="btn btn-lg btn-success">
|
||||
Update category
|
||||
{{ 'update_category'|_ }}
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right" role="menu">
|
||||
<li><a href="{{ route('categories.create') }}"><i class="fa fa-plus fa-fw"></i> {{ 'newCategory'|_ }}</a></li>
|
||||
<li><a href="{{ route('categories.create') }}"><i class="fa fa-plus fa-fw"></i> {{ 'new_category'|_ }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,7 +9,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td><a href="{{ route('categories.noCategory') }}"><em>{{ 'withoutCategory'|_ }}</em></a></td>
|
||||
<td><a href="{{ route('categories.noCategory') }}"><em>{{ 'without_category'|_ }}</em></a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
{% for category in categories %}
|
||||
|
@ -10,11 +10,11 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'out'|_ }}</td>
|
||||
<td><span class="text-danger">{{ (expenses.getTotal * -1)|formatAmountPlain }}</span></td>
|
||||
<td><span class="text-danger">{{ (expenses.getTotal)|formatAmountPlain }}</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'difference'|_ }}</td>
|
||||
<td>{{ (incomes.getTotal + expenses.getTotal)|formatAmount }}</td>
|
||||
<td>{{ (incomes.getTotal + (expenses.getTotal * -1))|formatAmount }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
@ -47,6 +47,9 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function createAccount()
|
||||
{
|
||||
if (is_null($this->account)) {
|
||||
@ -54,6 +57,9 @@ class AccountControllerTest extends TestCase
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$pref = FactoryMuffin::create('FireflyIII\Models\Preference');
|
||||
@ -79,6 +85,9 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
|
||||
@ -89,6 +98,9 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
// fake an account.
|
||||
@ -106,6 +118,9 @@ class AccountControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::edit
|
||||
*/
|
||||
public function testEdit()
|
||||
{
|
||||
// fake an account.
|
||||
@ -139,6 +154,9 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
// an account:
|
||||
@ -166,6 +184,9 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
// an account:
|
||||
@ -181,6 +202,9 @@ class AccountControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
// an account:
|
||||
@ -211,6 +235,9 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::store
|
||||
*/
|
||||
public function testStoreAndRedirect()
|
||||
{
|
||||
// an account:
|
||||
@ -242,6 +269,9 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
|
||||
@ -272,6 +302,9 @@ class AccountControllerTest extends TestCase
|
||||
$this->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\AccountController::update
|
||||
*/
|
||||
public function testUpdateAndRedirect()
|
||||
{
|
||||
|
||||
|
@ -36,6 +36,9 @@ class AuthControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Auth\AuthController::postRegister
|
||||
*/
|
||||
public function testPostRegister()
|
||||
{
|
||||
|
||||
@ -50,6 +53,9 @@ class AuthControllerTest extends TestCase
|
||||
$this->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Auth\AuthController::postRegister
|
||||
*/
|
||||
public function testPostRegisterFails()
|
||||
{
|
||||
|
||||
|
@ -38,6 +38,9 @@ class BillControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
// go!
|
||||
@ -56,6 +59,9 @@ class BillControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -65,6 +71,9 @@ class BillControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -79,6 +88,9 @@ class BillControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::edit
|
||||
*/
|
||||
public function testEdit()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -95,6 +107,9 @@ class BillControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -116,6 +131,9 @@ class BillControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::rescan
|
||||
*/
|
||||
public function testRescan()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -135,6 +153,9 @@ class BillControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::rescan
|
||||
*/
|
||||
public function testRescanInactive()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -148,6 +169,9 @@ class BillControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -170,6 +194,9 @@ class BillControllerTest extends TestCase
|
||||
$this->call('GET', '/bills/show/' . $bill->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -185,6 +212,9 @@ class BillControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', 'Bill "' . e($bill->name) . '" stored.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::store
|
||||
*/
|
||||
public function testStoreAndRedirect()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -200,6 +230,9 @@ class BillControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', 'Bill "' . e($bill->name) . '" stored.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -215,6 +248,9 @@ class BillControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', 'Bill "' . e($bill->name) . '" updated.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BillController::update
|
||||
*/
|
||||
public function testUpdateAndRedirect()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
|
@ -39,6 +39,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::amount
|
||||
*/
|
||||
public function testAmount()
|
||||
{
|
||||
$repository = $this->mock('FireflyIII\Repositories\Budget\BudgetRepositoryInterface');
|
||||
@ -54,6 +57,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -63,6 +69,9 @@ class BudgetControllerTest extends TestCase
|
||||
$this->assertViewHas('subTitle', 'Create a new budget');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -75,6 +84,9 @@ class BudgetControllerTest extends TestCase
|
||||
$this->assertSessionHas('budgets.delete.url');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -89,6 +101,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::edit
|
||||
*/
|
||||
public function testEdit()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -102,6 +117,9 @@ class BudgetControllerTest extends TestCase
|
||||
$this->assertSessionHas('budgets.edit.url');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -127,6 +145,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::noBudget
|
||||
*/
|
||||
public function testNoBudget()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -140,6 +161,9 @@ class BudgetControllerTest extends TestCase
|
||||
$this->assertViewHas('subTitle');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::postUpdateIncome
|
||||
*/
|
||||
public function testPostUpdateIncome()
|
||||
{
|
||||
|
||||
@ -160,6 +184,9 @@ class BudgetControllerTest extends TestCase
|
||||
$this->assertRedirectedToRoute('budgets.index');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -179,6 +206,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::show
|
||||
*/
|
||||
public function testShowInvalidRepetition()
|
||||
{
|
||||
|
||||
@ -203,6 +233,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
// a budget:
|
||||
@ -228,6 +261,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::store
|
||||
*/
|
||||
public function testStoreAndRedirect()
|
||||
{
|
||||
// a budget:
|
||||
@ -254,6 +290,9 @@ class BudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
|
||||
@ -280,6 +319,9 @@ class BudgetControllerTest extends TestCase
|
||||
$this->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::update
|
||||
*/
|
||||
public function testUpdateAndRedirect()
|
||||
{
|
||||
|
||||
@ -307,6 +349,9 @@ class BudgetControllerTest extends TestCase
|
||||
$this->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\BudgetController::updateIncome
|
||||
*/
|
||||
public function testUpdateIncome()
|
||||
{
|
||||
|
||||
|
@ -40,6 +40,9 @@ class CategoryControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
@ -50,6 +53,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertViewHas('subTitle', 'Create a new category');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
|
||||
@ -61,6 +67,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertViewHas('subTitle', 'Delete category "' . e($category->name) . '"');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
@ -74,6 +83,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', 'The category "' . e($category->name) . '" was deleted.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::edit
|
||||
*/
|
||||
public function testEdit()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
@ -84,6 +96,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertViewHas('subTitle', 'Edit category "' . e($category->name) . '"');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$collection = new Collection;
|
||||
@ -102,6 +117,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertViewHas('categories');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::noCategory
|
||||
*/
|
||||
public function testNoCategory()
|
||||
{
|
||||
$collection = new Collection;
|
||||
@ -123,6 +141,9 @@ class CategoryControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
@ -145,6 +166,10 @@ class CategoryControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
// create
|
||||
@ -164,7 +189,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', 'New category "' . $category->name . '" stored!');
|
||||
}
|
||||
|
||||
//
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::store
|
||||
*/
|
||||
public function testStoreAndRedirect()
|
||||
{
|
||||
// create
|
||||
@ -185,6 +212,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', 'New category "' . $category->name . '" stored!');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
// create
|
||||
@ -204,6 +234,9 @@ class CategoryControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', 'Category "' . $category->name . '" updated.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CategoryController::update
|
||||
*/
|
||||
public function testUpdateAndRedirect()
|
||||
{
|
||||
// create
|
||||
|
@ -37,6 +37,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -49,6 +52,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::defaultCurrency
|
||||
*/
|
||||
public function testDefaultCurrency()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -60,6 +66,9 @@ class CurrencyControllerTest extends TestCase
|
||||
$this->assertSessionHas('success', $currency->name . ' is now the default currency.');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -75,6 +84,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::delete
|
||||
*/
|
||||
public function testDeleteUnable()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -90,6 +102,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -105,6 +120,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::destroy
|
||||
*/
|
||||
public function testDestroyUnable()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -120,6 +138,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::edit
|
||||
*/
|
||||
public function testEdit()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -134,6 +155,9 @@ class CurrencyControllerTest extends TestCase
|
||||
$this->assertViewHas('currency');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -148,6 +172,9 @@ class CurrencyControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -166,6 +193,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::store
|
||||
*/
|
||||
public function testStoreAndReturn()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -184,6 +214,9 @@ class CurrencyControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -200,6 +233,9 @@ class CurrencyControllerTest extends TestCase
|
||||
$this->assertSessionHas('success');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\CurrencyController::update
|
||||
*/
|
||||
public function testUpdateAndReturn()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -38,6 +38,7 @@ class HelpControllerTest extends TestCase
|
||||
|
||||
/**
|
||||
* Everything present and accounted for, and in cache:
|
||||
* @covers FireflyIII\Http\Controllers\HelpController::show
|
||||
*/
|
||||
public function testGetHelpText()
|
||||
{
|
||||
@ -58,6 +59,7 @@ class HelpControllerTest extends TestCase
|
||||
|
||||
/**
|
||||
* Everything present and accounted for, but not cached
|
||||
* @covers FireflyIII\Http\Controllers\HelpController::show
|
||||
*/
|
||||
public function testGetHelpTextNoCache()
|
||||
{
|
||||
@ -80,6 +82,7 @@ class HelpControllerTest extends TestCase
|
||||
|
||||
/**
|
||||
* No such route.
|
||||
* @covers FireflyIII\Http\Controllers\HelpController::show
|
||||
*/
|
||||
public function testGetHelpTextNoRoute()
|
||||
{
|
||||
|
@ -66,7 +66,7 @@ class HomeControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @covers FireflyIII\Http\Controllers\HomeController::flush
|
||||
*/
|
||||
public function testFlush()
|
||||
{
|
||||
|
@ -37,6 +37,9 @@ class JsonControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::boxBillsPaid
|
||||
*/
|
||||
public function testBoxBillsPaid()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -66,6 +69,9 @@ class JsonControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::boxBillsUnpaid
|
||||
*/
|
||||
public function testBoxBillsUnpaid()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
@ -92,6 +98,9 @@ class JsonControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::boxIn
|
||||
*/
|
||||
public function testBoxIn()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -106,6 +115,9 @@ class JsonControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::boxOut
|
||||
*/
|
||||
public function testBoxOut()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -120,6 +132,9 @@ class JsonControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::categories
|
||||
*/
|
||||
public function testCategories()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
@ -133,6 +148,9 @@ class JsonControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::expenseAccounts
|
||||
*/
|
||||
public function testExpenseAccounts()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
@ -146,6 +164,9 @@ class JsonControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::revenueAccounts
|
||||
*/
|
||||
public function testRevenueAccounts()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
@ -159,6 +180,9 @@ class JsonControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::tags
|
||||
*/
|
||||
public function testTags()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -177,6 +201,9 @@ class JsonControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\JsonController::transactionJournals
|
||||
*/
|
||||
public function testTransactionJournals()
|
||||
{
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
|
@ -42,6 +42,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::add
|
||||
*/
|
||||
public function testAdd()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -60,6 +63,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
@ -84,6 +90,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -95,6 +104,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertViewHas('subTitle', 'Delete "' . e($piggyBank->name) . '"');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -110,6 +122,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::edit
|
||||
*/
|
||||
public function testEdit()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -137,6 +152,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::edit
|
||||
*/
|
||||
public function testEditNullDate()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -164,6 +182,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$piggyBank1 = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -194,6 +215,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::order
|
||||
*/
|
||||
public function testOrder()
|
||||
{
|
||||
$piggyBank1 = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -214,6 +238,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::postAdd
|
||||
*/
|
||||
public function testPostAdd()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -232,6 +259,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::postAdd
|
||||
*/
|
||||
public function testPostAddOverdraw()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -250,6 +280,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::postRemove
|
||||
*/
|
||||
public function testPostRemove()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -286,7 +319,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::remove
|
||||
*/
|
||||
public function testRemove()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -300,6 +335,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -316,6 +354,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -338,6 +379,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::store
|
||||
*/
|
||||
public function testStoreCreateAnother()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -361,6 +405,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -383,6 +430,9 @@ class PiggyBankControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PiggyBankController::update
|
||||
*/
|
||||
public function testUpdateReturnToEdit()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
|
@ -37,6 +37,9 @@ class PreferencesControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PreferencesController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -69,6 +72,9 @@ class PreferencesControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\PreferencesController::postIndex
|
||||
*/
|
||||
public function testPostIndex()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -34,6 +34,9 @@ class ProfileControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::changePassword
|
||||
*/
|
||||
public function testChangePassword()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -43,6 +46,9 @@ class ProfileControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::deleteAccount
|
||||
*/
|
||||
public function testDeleteAccount()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -52,6 +58,9 @@ class ProfileControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -61,6 +70,10 @@ class ProfileControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::postChangePassword
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::validatePassword
|
||||
*/
|
||||
public function testPostChangePassword()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -83,6 +96,10 @@ class ProfileControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::postChangePassword
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::validatePassword
|
||||
*/
|
||||
public function testPostChangePasswordInvalidCurrent()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -105,6 +122,10 @@ class ProfileControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::postChangePassword
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::validatePassword
|
||||
*/
|
||||
public function testPostChangePasswordNoNewPassword()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -128,6 +149,9 @@ class ProfileControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::postDeleteAccount
|
||||
*/
|
||||
public function testPostDeleteAccount()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -147,6 +171,9 @@ class ProfileControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ProfileController::postDeleteAccount
|
||||
*/
|
||||
public function testPostDeleteAccountInvalidPassword()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -36,6 +36,9 @@ class ReminderControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReminderController::act
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
|
||||
@ -47,6 +50,9 @@ class ReminderControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReminderController::dismiss
|
||||
*/
|
||||
public function testDismiss()
|
||||
{
|
||||
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
|
||||
@ -57,6 +63,9 @@ class ReminderControllerTest extends TestCase
|
||||
$this->assertRedirectedTo('/');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReminderController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -75,6 +84,9 @@ class ReminderControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReminderController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
|
||||
@ -86,6 +98,9 @@ class ReminderControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReminderController::show
|
||||
*/
|
||||
public function testShowDismissed()
|
||||
{
|
||||
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
|
||||
|
@ -37,6 +37,9 @@ class ReportControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReportController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -66,6 +69,9 @@ class ReportControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReportController::month
|
||||
*/
|
||||
public function testMonth()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -93,6 +99,9 @@ class ReportControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReportController::month
|
||||
*/
|
||||
public function testMonthShared()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -119,6 +128,9 @@ class ReportControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\ReportController::year
|
||||
*/
|
||||
public function testYear()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -36,6 +36,9 @@ class SearchControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\SearchController::index
|
||||
*/
|
||||
public function testSearch()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -37,6 +37,9 @@ class TagControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -46,6 +49,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -55,6 +61,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -66,6 +75,9 @@ class TagControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::edit
|
||||
*/
|
||||
public function testEdit()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -75,6 +87,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::edit
|
||||
*/
|
||||
public function testEditBalancingAct()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -93,6 +108,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::edit
|
||||
*/
|
||||
public function testEditThreeExpenses()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -116,6 +134,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::hideTagHelp
|
||||
*/
|
||||
public function testHideTagHelp()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -125,6 +146,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::index
|
||||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -134,6 +158,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::edit
|
||||
*/
|
||||
public function testMultipleDeposits()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -156,6 +183,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
@ -165,6 +195,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -179,6 +212,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::store
|
||||
*/
|
||||
public function testStoreWithLocation()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -214,6 +250,9 @@ class TagControllerTest extends TestCase
|
||||
$this->assertResponseStatus(302);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TagController::update
|
||||
*/
|
||||
public function testUpdateWithLocation()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
|
@ -39,7 +39,9 @@ class TransactionControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::create
|
||||
*/
|
||||
public function testCreate()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -57,6 +59,9 @@ class TransactionControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
@ -66,6 +71,9 @@ class TransactionControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::destroy
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
@ -84,6 +92,7 @@ class TransactionControllerTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::edit
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
*/
|
||||
public function testEdit()
|
||||
@ -136,6 +145,9 @@ class TransactionControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::index
|
||||
*/
|
||||
public function testIndexRevenue()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -152,6 +164,9 @@ class TransactionControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::index
|
||||
*/
|
||||
public function testIndexTransfer()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -167,6 +182,9 @@ class TransactionControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::index
|
||||
*/
|
||||
public function testIndexWithdrawal()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -182,6 +200,9 @@ class TransactionControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::reorder
|
||||
*/
|
||||
public function testReorder()
|
||||
{
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
@ -203,6 +224,9 @@ class TransactionControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::show
|
||||
*/
|
||||
public function testShow()
|
||||
{
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
@ -231,8 +255,9 @@ class TransactionControllerTest extends TestCase
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::store
|
||||
*/
|
||||
public function testStore()
|
||||
public function testStoreCreateAnother()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
@ -254,7 +279,7 @@ class TransactionControllerTest extends TestCase
|
||||
'budget_id' => '0',
|
||||
'create_another' => '1',
|
||||
'category' => '',
|
||||
'tags' => '',
|
||||
'tags' => 'fat-test',
|
||||
'piggy_bank_id' => '0',
|
||||
'_token' => 'replaceMe',
|
||||
];
|
||||
@ -277,6 +302,53 @@ class TransactionControllerTest extends TestCase
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::store
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$this->be($account->user);
|
||||
|
||||
$data = [
|
||||
'reminder_id' => '',
|
||||
'what' => 'withdrawal',
|
||||
'description' => 'Bla bla bla',
|
||||
'account_id' => $account->id,
|
||||
'expense_account' => 'Bla bla',
|
||||
'amount' => '100',
|
||||
'amount_currency_id' => $currency->id,
|
||||
'date' => '2015-05-05',
|
||||
'budget_id' => '0',
|
||||
'category' => '',
|
||||
'tags' => 'fat-test',
|
||||
'piggy_bank_id' => '0',
|
||||
'_token' => 'replaceMe',
|
||||
];
|
||||
|
||||
// mock!
|
||||
$repository = $this->mock('FireflyIII\Repositories\Journal\JournalRepositoryInterface');
|
||||
|
||||
// fake!
|
||||
$repository->shouldReceive('store')->andReturn($journal);
|
||||
$repository->shouldReceive('deactivateReminder')->andReturnNull();
|
||||
|
||||
|
||||
$this->call('POST', '/transactions/store/withdrawal', $data);
|
||||
|
||||
//$this->assertSessionHas('errors','bla');
|
||||
$this->assertResponseStatus(302);
|
||||
$this->assertSessionHas('success');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::store
|
||||
*/
|
||||
public function testStoreTransfer()
|
||||
{
|
||||
@ -314,7 +386,7 @@ class TransactionControllerTest extends TestCase
|
||||
'budget_id' => '0',
|
||||
'create_another' => '1',
|
||||
'category' => '',
|
||||
'tags' => '',
|
||||
'tags' => 'fat-test',
|
||||
'piggy_bank_id' => $piggy->id,
|
||||
'_token' => 'replaceMe',
|
||||
];
|
||||
@ -337,6 +409,7 @@ class TransactionControllerTest extends TestCase
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
@ -362,7 +435,7 @@ class TransactionControllerTest extends TestCase
|
||||
'date' => '2015-05-31',
|
||||
'budget_id' => '0',
|
||||
'category' => 'Lunch',
|
||||
'tags' => '',
|
||||
'tags' => 'fat-test',
|
||||
'piggy_bank_id' => '0',
|
||||
];
|
||||
|
||||
@ -385,6 +458,7 @@ class TransactionControllerTest extends TestCase
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Http\Controllers\TransactionController::update
|
||||
*/
|
||||
public function testUpdateWithRedirect()
|
||||
{
|
||||
@ -411,7 +485,7 @@ class TransactionControllerTest extends TestCase
|
||||
'budget_id' => '0',
|
||||
'category' => 'Lunch',
|
||||
'return_to_edit' => 1,
|
||||
'tags' => '',
|
||||
'tags' => 'fat-test',
|
||||
'piggy_bank_id' => '0',
|
||||
];
|
||||
|
||||
|
@ -28,6 +28,9 @@ class ChartAccountControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\AccountController::all
|
||||
*/
|
||||
public function testAll()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -64,6 +67,9 @@ class ChartAccountControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\AccountController::all
|
||||
*/
|
||||
public function testAllShared()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -93,6 +99,9 @@ class ChartAccountControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\AccountController::frontpage
|
||||
*/
|
||||
public function testFrontpage()
|
||||
{
|
||||
$accounts = new Collection([FactoryMuffin::create('FireflyIII\Models\Account')]);
|
||||
@ -110,6 +119,9 @@ class ChartAccountControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\AccountController::single
|
||||
*/
|
||||
public function testSingle()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
@ -30,6 +30,9 @@ class ChartBillControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\BillController::frontpage
|
||||
*/
|
||||
public function testFrontpage()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -55,7 +58,7 @@ class ChartBillControllerTest extends TestCase
|
||||
$accounts->shouldReceive('getCreditCards')->andReturn($creditCards);
|
||||
$accounts->shouldReceive('getTransfersInRange')->andReturn(new Collection);
|
||||
$repository->shouldReceive('createFakeBill')->andReturn($bills->first());
|
||||
Steam::shouldReceive('balance')->andReturn(-10,0);
|
||||
Steam::shouldReceive('balance')->andReturn(-10, 0);
|
||||
|
||||
|
||||
$this->call('GET', '/chart/bill/frontpage');
|
||||
@ -63,6 +66,9 @@ class ChartBillControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\BillController::single
|
||||
*/
|
||||
public function testSingle()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
|
@ -27,6 +27,9 @@ class ChartBudgetControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\BudgetController::budget
|
||||
*/
|
||||
public function testBudget()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
@ -38,6 +41,9 @@ class ChartBudgetControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\BudgetController::budgetLimit
|
||||
*/
|
||||
public function testBudgetLimit()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -68,6 +74,9 @@ class ChartBudgetControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\BudgetController::frontpage
|
||||
*/
|
||||
public function testFrontpage()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -116,6 +125,9 @@ class ChartBudgetControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\BudgetController::year
|
||||
*/
|
||||
public function testYear()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -136,6 +148,9 @@ class ChartBudgetControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\BudgetController::year
|
||||
*/
|
||||
public function testYearShared()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -26,18 +26,24 @@ class ChartCategoryControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\CategoryController::all
|
||||
*/
|
||||
public function testAll()
|
||||
{
|
||||
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$this->be($category->user);
|
||||
|
||||
$this->call('GET', '/chart/category/'.$category->id.'/all');
|
||||
$this->call('GET', '/chart/category/' . $category->id . '/all');
|
||||
$this->assertResponseOk();
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\CategoryController::frontpage
|
||||
*/
|
||||
public function testFrontpage()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -62,15 +68,21 @@ class ChartCategoryControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\CategoryController::month
|
||||
*/
|
||||
public function testMonth()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$this->be($category->user);
|
||||
|
||||
$this->call('GET', '/chart/category/'.$category->id.'/month');
|
||||
$this->call('GET', '/chart/category/' . $category->id . '/month');
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\CategoryController::year
|
||||
*/
|
||||
public function testYear()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -89,6 +101,9 @@ class ChartCategoryControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\CategoryController::year
|
||||
*/
|
||||
public function testYearShared()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -25,6 +25,9 @@ class ChartPiggyBankControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\PiggyBankController::history
|
||||
*/
|
||||
public function testHistory()
|
||||
{
|
||||
$piggy = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
|
@ -25,6 +25,9 @@ class ChartReportControllerTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\ReportController::yearInOut
|
||||
*/
|
||||
public function testYearInOut()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -35,6 +38,9 @@ class ChartReportControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\ReportController::yearInOut
|
||||
*/
|
||||
public function testYearInOutShared()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -45,6 +51,9 @@ class ChartReportControllerTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\ReportController::yearInOutSummarized
|
||||
*/
|
||||
public function testYearInOutSummarized()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -54,6 +63,9 @@ class ChartReportControllerTest extends TestCase
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Http\Controllers\Chart\ReportController::yearInOutSummarized
|
||||
*/
|
||||
public function testYearInOutSummarizedShared()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
@ -192,7 +192,7 @@ FactoryMuffin::define(
|
||||
return RandomString::generateRandomString(3);
|
||||
},
|
||||
'symbol' => function () {
|
||||
return RandomString::generateRandomString(1);
|
||||
return RandomString::generateRandomString(2);
|
||||
},
|
||||
'name' => 'word'
|
||||
]
|
||||
|
@ -32,6 +32,7 @@ class ConnectJournalToPiggyBankTest extends TestCase
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Handlers\Events\ConnectJournalToPiggyBank::handle
|
||||
*/
|
||||
public function testNoRepetition()
|
||||
{
|
||||
@ -86,6 +87,9 @@ class ConnectJournalToPiggyBankTest extends TestCase
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Handlers\Events\ConnectJournalToPiggyBank::handle
|
||||
*/
|
||||
public function testNoSuchPiggy()
|
||||
{
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
@ -102,6 +106,7 @@ class ConnectJournalToPiggyBankTest extends TestCase
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Handlers\Events\ConnectJournalToPiggyBank::handle
|
||||
*/
|
||||
public function testWithRepetition()
|
||||
{
|
||||
@ -162,6 +167,7 @@ class ConnectJournalToPiggyBankTest extends TestCase
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
* @covers FireflyIII\Handlers\Events\ConnectJournalToPiggyBank::handle
|
||||
*/
|
||||
public function testWithRepetitionReversed()
|
||||
{
|
||||
|
@ -38,6 +38,9 @@ class ReminderHelperTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminder
|
||||
*/
|
||||
public function testCreateReminder()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
@ -52,6 +55,9 @@ class ReminderHelperTest extends TestCase
|
||||
$this->assertEquals($piggyBank->targetamount, $result->metadata->leftToSave);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminder
|
||||
*/
|
||||
public function testCreateReminderHaveAlready()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
@ -72,6 +78,9 @@ class ReminderHelperTest extends TestCase
|
||||
$this->assertEquals($reminder->id, $result->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminder
|
||||
*/
|
||||
public function testCreateReminderNoTarget()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
@ -88,7 +97,7 @@ class ReminderHelperTest extends TestCase
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::createReminders
|
||||
*/
|
||||
public function testCreateReminders()
|
||||
{
|
||||
@ -108,6 +117,9 @@ class ReminderHelperTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderRanges
|
||||
*/
|
||||
public function testGetReminderRangesNull()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -115,6 +127,9 @@ class ReminderHelperTest extends TestCase
|
||||
$this->assertEquals([], $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderRanges
|
||||
*/
|
||||
public function testGetReminderRangesWithTargetDate()
|
||||
{
|
||||
/** @var \FireflyIII\Models\PiggyBank $piggyBank */
|
||||
@ -131,6 +146,9 @@ class ReminderHelperTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderRanges
|
||||
*/
|
||||
public function testGetReminderRangesWithoutTargetDate()
|
||||
{
|
||||
/** @var \FireflyIII\Models\PiggyBank $piggyBank */
|
||||
@ -146,6 +164,9 @@ class ReminderHelperTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderText
|
||||
*/
|
||||
public function testGetReminderTextDate()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
@ -161,6 +182,9 @@ class ReminderHelperTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderText
|
||||
*/
|
||||
public function testGetReminderTextNoPiggy()
|
||||
{
|
||||
$reminder = FactoryMuffin::create('FireflyIII\Models\Reminder');
|
||||
@ -169,6 +193,9 @@ class ReminderHelperTest extends TestCase
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Reminders\ReminderHelper::getReminderText
|
||||
*/
|
||||
public function testGetReminderTextNullDate()
|
||||
{
|
||||
$piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
|
||||
|
@ -42,7 +42,6 @@ class ReportHelperTest extends TestCase
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportHelper::getAccountReport
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::getAllAccounts
|
||||
*/
|
||||
public function testGetAccountReport()
|
||||
{
|
||||
@ -68,8 +67,6 @@ class ReportHelperTest extends TestCase
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportHelper::getBalanceReport
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::getAllAccounts
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::spentInBudgetCorrected
|
||||
*/
|
||||
public function testGetBalanceReport()
|
||||
{
|
||||
@ -217,7 +214,6 @@ class ReportHelperTest extends TestCase
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportHelper::getExpenseReport
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::expenseInPeriodCorrected
|
||||
*/
|
||||
public function testGetExpenseReport()
|
||||
{
|
||||
@ -278,7 +274,6 @@ class ReportHelperTest extends TestCase
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportHelper::getIncomeReport
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::incomeInPeriodCorrected
|
||||
*/
|
||||
public function testGetIncomeReport()
|
||||
{
|
||||
|
@ -1,13 +1,12 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\Report\ReportQuery;
|
||||
use FireflyIII\Models\AccountMeta;
|
||||
use FireflyIII\Models\PiggyBankRepetition;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
/**
|
||||
* @SuppressWarnings(PHPMD.TooManyMethods)
|
||||
* Class ReportQueryTest
|
||||
*/
|
||||
class ReportQueryTest extends TestCase
|
||||
@ -37,64 +36,366 @@ class ReportQueryTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testBalancedTransactionsList()
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::expenseInPeriodCorrected
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::queryJournalsWithTransactions
|
||||
*/
|
||||
public function testExpenseInPeriodCorrected()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$start = new Carbon('2015-01-01');
|
||||
$end = new Carbon('2015-02-01');
|
||||
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$type = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
|
||||
$date = new Carbon('2015-01-12');
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$journal->date = $date;
|
||||
$journal->user_id = $user->id;
|
||||
$journal->transaction_type_id = $type->id;
|
||||
$journal->save();
|
||||
|
||||
// two transactions:
|
||||
$account1 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account2 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account1->account_type_id = $asset->id;
|
||||
$account1->user_id = $user->id;
|
||||
$account2->account_type_id = $expense->id;
|
||||
$account2->user_id = $user->id;
|
||||
$account1->save();
|
||||
$account2->save();
|
||||
|
||||
AccountMeta::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'name' => 'accountRole',
|
||||
'data' => 'defaultAsset'
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account2->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => 100
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => -100
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
$this->be($user);
|
||||
|
||||
|
||||
$set = $this->object->expenseInPeriodCorrected($start, $end, false);
|
||||
|
||||
|
||||
$this->assertCount(10, $set);
|
||||
}
|
||||
|
||||
public function testBalancedTransactionsSum()
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::expenseInPeriodCorrected
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::queryJournalsWithTransactions
|
||||
*/
|
||||
public function testExpenseInPeriodCorrectedShared()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$start = new Carbon('2015-01-01');
|
||||
$end = new Carbon('2015-02-01');
|
||||
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$type = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
|
||||
$date = new Carbon('2015-01-12');
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$journal->date = $date;
|
||||
$journal->user_id = $user->id;
|
||||
$journal->transaction_type_id = $type->id;
|
||||
$journal->save();
|
||||
|
||||
// two transactions:
|
||||
$account1 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account2 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account1->account_type_id = $asset->id;
|
||||
$account1->user_id = $user->id;
|
||||
$account2->account_type_id = $expense->id;
|
||||
$account2->user_id = $user->id;
|
||||
$account1->save();
|
||||
$account2->save();
|
||||
|
||||
AccountMeta::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'name' => 'accountRole',
|
||||
'data' => 'defaultAsset'
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account2->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => 100
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => -100
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
$this->be($user);
|
||||
|
||||
$set = $this->object->expenseInPeriodCorrected($start, $end, true);
|
||||
|
||||
$this->assertCount(10, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::getAllAccounts
|
||||
*/
|
||||
public function testGetAllAccounts()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$start = new Carbon('2015-01-01');
|
||||
$end = new Carbon('2015-02-01');
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account->account_type_id = $asset->id;
|
||||
$account->user_id = $user->id;
|
||||
$account->save();
|
||||
}
|
||||
|
||||
Steam::shouldReceive('balance')->andReturn(0);
|
||||
|
||||
$this->be($user);
|
||||
|
||||
$set = $this->object->getAllAccounts($start, $end, false);
|
||||
$this->assertCount(10, $set);
|
||||
}
|
||||
|
||||
public function testGetBudgetSummary()
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::getAllAccounts
|
||||
*/
|
||||
public function testGetAllAccountsShared()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$start = new Carbon('2015-01-01');
|
||||
$end = new Carbon('2015-02-01');
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account->account_type_id = $asset->id;
|
||||
$account->user_id = $user->id;
|
||||
$account->save();
|
||||
}
|
||||
|
||||
Steam::shouldReceive('balance')->andReturn(0);
|
||||
|
||||
$this->be($user);
|
||||
|
||||
$set = $this->object->getAllAccounts($start, $end, true);
|
||||
$this->assertCount(10, $set);
|
||||
}
|
||||
|
||||
public function testGetTransactionsWithoutBudget()
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::incomeInPeriodCorrected
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::queryJournalsWithTransactions
|
||||
*/
|
||||
public function testIncomeInPeriodCorrected()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$start = new Carbon('2015-01-01');
|
||||
$end = new Carbon('2015-02-01');
|
||||
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$type = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
|
||||
$date = new Carbon('2015-01-12');
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$journal->date = $date;
|
||||
$journal->user_id = $user->id;
|
||||
$journal->transaction_type_id = $type->id;
|
||||
$journal->save();
|
||||
|
||||
// two transactions:
|
||||
$account1 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account2 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account1->account_type_id = $asset->id;
|
||||
$account1->user_id = $user->id;
|
||||
$account2->account_type_id = $expense->id;
|
||||
$account2->user_id = $user->id;
|
||||
$account1->save();
|
||||
$account2->save();
|
||||
|
||||
AccountMeta::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'name' => 'accountRole',
|
||||
'data' => 'defaultAsset'
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account2->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => -100
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => 100
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
$this->be($user);
|
||||
|
||||
$set = $this->object->incomeInPeriodCorrected($start, $end, false);
|
||||
|
||||
$this->assertCount(10, $set);
|
||||
}
|
||||
|
||||
public function testIncomeInPeriod()
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::incomeInPeriodCorrected
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::queryJournalsWithTransactions
|
||||
*/
|
||||
public function testIncomeInPeriodCorrectedShared()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$start = new Carbon('2015-01-01');
|
||||
$end = new Carbon('2015-02-01');
|
||||
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$type = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\AccountType');
|
||||
|
||||
$date = new Carbon('2015-01-12');
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$journal->date = $date;
|
||||
$journal->user_id = $user->id;
|
||||
$journal->transaction_type_id = $type->id;
|
||||
$journal->save();
|
||||
|
||||
// two transactions:
|
||||
$account1 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account2 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account1->account_type_id = $asset->id;
|
||||
$account1->user_id = $user->id;
|
||||
$account2->account_type_id = $expense->id;
|
||||
$account2->user_id = $user->id;
|
||||
$account1->save();
|
||||
$account2->save();
|
||||
|
||||
AccountMeta::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'name' => 'accountRole',
|
||||
'data' => 'defaultAsset'
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account2->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => -100
|
||||
]
|
||||
);
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account1->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => 100
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
$this->be($user);
|
||||
|
||||
$set = $this->object->incomeInPeriodCorrected($start, $end, true);
|
||||
|
||||
$this->assertCount(10, $set);
|
||||
}
|
||||
|
||||
public function testJournalsByBudget()
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::spentInBudgetCorrected
|
||||
*/
|
||||
public function testSpentInBudgetCorrected()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account->user_id = $user->id;
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$budget->user_id = $user->id;
|
||||
|
||||
$account->save();
|
||||
$budget->save();
|
||||
|
||||
$this->be($user);
|
||||
|
||||
$result = $this->object->spentInBudgetCorrected($account, $budget, new Carbon, new Carbon);
|
||||
$this->assertEquals(0, $result);
|
||||
|
||||
}
|
||||
|
||||
public function testJournalsByCategory()
|
||||
/**
|
||||
* @covers FireflyIII\Helpers\Report\ReportQuery::spentNoBudget
|
||||
*/
|
||||
public function testSpentNoBudget()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$account->user_id = $user->id;
|
||||
|
||||
$account->save();
|
||||
|
||||
$this->be($user);
|
||||
|
||||
$result = $this->object->spentNoBudget($account, new Carbon, new Carbon);
|
||||
$this->assertEquals(0, $result);
|
||||
}
|
||||
|
||||
public function testJournalsByExpenseAccount()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
}
|
||||
|
||||
public function testJournalsByRevenueAccount()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
}
|
||||
|
||||
public function testSharedExpenses()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
}
|
||||
|
||||
public function testSharedExpensesByCategory()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
140
tests/models/AccountModelTest.php
Normal file
140
tests/models/AccountModelTest.php
Normal file
@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
use FireflyIII\Models\Account;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Class AccountModelTest
|
||||
*/
|
||||
class AccountModelTest 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();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called before the first test of this test class is run.
|
||||
*
|
||||
* @since Method available since Release 3.4.0
|
||||
*/
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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\Models\Account::firstOrCreateEncrypted
|
||||
*/
|
||||
public function testFirstOrCreateEncrypted()
|
||||
{
|
||||
// create account:
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
|
||||
// search for account with the same properties:
|
||||
$search = [
|
||||
'name' => $account->name,
|
||||
'account_type_id' => $account->account_type_id,
|
||||
'user_id' => $account->user_id
|
||||
];
|
||||
|
||||
$result = Account::firstOrCreateEncrypted($search);
|
||||
|
||||
// should be the same account:
|
||||
|
||||
$this->assertEquals($account->id, $result->id);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\Account::firstOrCreateEncrypted
|
||||
*/
|
||||
public function testFirstOrCreateEncryptedNew()
|
||||
{
|
||||
// create account:
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
||||
// search for account with the same properties:
|
||||
$search = [
|
||||
'name' => 'Some new account',
|
||||
'account_type_id' => $account->account_type_id,
|
||||
'user_id' => $account->user_id,
|
||||
'active' => 1,
|
||||
];
|
||||
|
||||
$result = Account::firstOrCreateEncrypted($search);
|
||||
|
||||
// should not be the same account:
|
||||
|
||||
$this->assertNotEquals($account->id, $result->id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\Account::firstOrNullEncrypted
|
||||
*/
|
||||
public function testFirstOrNullEncrypted()
|
||||
{
|
||||
// create account:
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
|
||||
// search for account with the same properties:
|
||||
$search = [
|
||||
'name' => $account->name,
|
||||
'account_type_id' => $account->account_type_id,
|
||||
'user_id' => $account->user_id
|
||||
];
|
||||
|
||||
$result = Account::firstOrNullEncrypted($search);
|
||||
|
||||
// should be the same account:
|
||||
|
||||
$this->assertEquals($account->id, $result->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\Account::firstOrNullEncrypted
|
||||
*/
|
||||
public function testFirstOrNullEncryptedNew()
|
||||
{
|
||||
// create account:
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
||||
// search for account with the same properties:
|
||||
$search = [
|
||||
'name' => 'Some new account',
|
||||
'account_type_id' => $account->account_type_id,
|
||||
'user_id' => $account->user_id,
|
||||
'active' => 1,
|
||||
];
|
||||
|
||||
$result = Account::firstOrNullEncrypted($search);
|
||||
|
||||
// should not be the same account:
|
||||
|
||||
$this->assertNull($result);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
76
tests/models/CategoryModelTest.php
Normal file
76
tests/models/CategoryModelTest.php
Normal file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
use FireflyIII\Models\Category;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
|
||||
/**
|
||||
* Class CategoryModelTest
|
||||
*/
|
||||
class CategoryModelTest 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();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called before the first test of this test class is run.
|
||||
*
|
||||
* @since Method available since Release 3.4.0
|
||||
*/
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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\Models\Category::firstOrCreateEncrypted
|
||||
*/
|
||||
public function testFirstOrCreateEncrypted()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
|
||||
$search = [
|
||||
'name' => $category->name,
|
||||
'user_id' => $category->user_id
|
||||
];
|
||||
|
||||
$result = Category::firstOrCreateEncrypted($search);
|
||||
|
||||
$this->assertEquals($result->id, $category->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\Category::firstOrCreateEncrypted
|
||||
*/
|
||||
public function testFirstOrCreateEncryptedNew()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
|
||||
$search = [
|
||||
'name' => 'Some category name',
|
||||
'user_id' => $category->user_id
|
||||
];
|
||||
|
||||
$result = Category::firstOrCreateEncrypted($search);
|
||||
|
||||
$this->assertNotEquals($result->id, $category->id);
|
||||
}
|
||||
|
||||
}
|
77
tests/models/TagModelTest.php
Normal file
77
tests/models/TagModelTest.php
Normal file
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
use FireflyIII\Models\Tag;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Class TagModelTest
|
||||
*/
|
||||
class TagModelTest 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();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called before the first test of this test class is run.
|
||||
*
|
||||
* @since Method available since Release 3.4.0
|
||||
*/
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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\Models\Tag::firstOrCreateEncrypted
|
||||
*/
|
||||
public function testFirstOrCreateEncryptedNew()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
|
||||
$search = [
|
||||
'tagMode' => 'something',
|
||||
'tag' => 'Something else',
|
||||
'user_id' => $tag->user_id,
|
||||
];
|
||||
|
||||
$result = Tag::firstOrCreateEncrypted($search);
|
||||
|
||||
$this->assertNotEquals($tag->id, $result->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\Tag::firstOrCreateEncrypted
|
||||
*/
|
||||
public function testFirstOrCreateEncrypted()
|
||||
{
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
|
||||
$search = [
|
||||
'tagMode' => 'something',
|
||||
'tag' => $tag->tag,
|
||||
'user_id' => $tag->user_id,
|
||||
];
|
||||
|
||||
$result = Tag::firstOrCreateEncrypted($search);
|
||||
|
||||
$this->assertEquals($tag->id, $result->id);
|
||||
}
|
||||
|
||||
}
|
388
tests/models/TransactionJournalModelTest.php
Normal file
388
tests/models/TransactionJournalModelTest.php
Normal file
@ -0,0 +1,388 @@
|
||||
<?php
|
||||
|
||||
use FireflyIII\Models\Transaction;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Class TransactionJournalModelTest
|
||||
*/
|
||||
class TransactionJournalModelTest 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();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called before the first test of this test class is run.
|
||||
*
|
||||
* @since Method available since Release 3.4.0
|
||||
*/
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
parent::setUpBeforeClass();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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\Models\TransactionJournal::getActualAmountAttribute
|
||||
*/
|
||||
public function testGetActualAmountAttribute()
|
||||
{
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => 123.45
|
||||
]
|
||||
);
|
||||
$amount = $journal->actual_amount;
|
||||
$this->assertEquals('123.45', $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getAmountAttribute
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
*/
|
||||
public function testGetAmountAttributeAdvancePayment()
|
||||
{
|
||||
// make types:
|
||||
$withdrawalType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
// make tag
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
$tag->tagMode = 'advancePayment';
|
||||
$tag->save();
|
||||
|
||||
// make withdrawal
|
||||
$withdrawal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$withdrawal->transaction_type_id = $withdrawalType->id;
|
||||
$withdrawal->save();
|
||||
|
||||
// make deposit
|
||||
$deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$deposit->transaction_type_id = $depositType->id;
|
||||
$deposit->save();
|
||||
|
||||
// make accounts
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$revenue = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
// for withdrawal, asset to expense account and reversed: //89,88
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => -300]);
|
||||
Transaction::create(['account_id' => $expense->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => 300]);
|
||||
|
||||
Transaction::create(['account_id' => $revenue->id, 'transaction_journal_id' => $deposit->id, 'amount' => -89.88]);
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $deposit->id, 'amount' => 89.88]);
|
||||
|
||||
|
||||
// connect to tag:
|
||||
$tag->transactionJournals()->save($withdrawal);
|
||||
$tag->transactionJournals()->save($deposit);
|
||||
|
||||
// amount should be 210.12:
|
||||
$this->assertEquals('210.12', $withdrawal->amount);
|
||||
$this->assertEquals('0', $deposit->amount);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getAmountAttribute
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
*/
|
||||
public function testGetAmountAttributeBalancingAct()
|
||||
{
|
||||
// make types:
|
||||
$withdrawalType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$transferType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
// make a tag
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
$tag->tagMode = 'balancingAct';
|
||||
$tag->save();
|
||||
|
||||
// make a withdrawal and a transfer
|
||||
$withdrawal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$withdrawal->transaction_type_id = $withdrawalType->id;
|
||||
$withdrawal->save();
|
||||
|
||||
$transfer = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$transfer->transaction_type_id = $transferType->id;
|
||||
$transfer->save();
|
||||
|
||||
// connect to tag:
|
||||
$tag->transactionJournals()->save($withdrawal);
|
||||
$tag->transactionJournals()->save($transfer);
|
||||
|
||||
// make accounts:
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset2 = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset2->account_type_id = $asset->account_type_id;
|
||||
$asset2->save();
|
||||
|
||||
// make transactions:
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => -123.45]);
|
||||
Transaction::create(['account_id' => $expense->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => 123.45]);
|
||||
|
||||
Transaction::create(['account_id' => $asset2->id, 'transaction_journal_id' => $transfer->id, 'amount' => -123.45]);
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $transfer->id, 'amount' => 123.45]);
|
||||
|
||||
$amount = $withdrawal->amount;
|
||||
|
||||
$this->assertEquals('0', $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getAmountAttribute
|
||||
*/
|
||||
public function testGetAmountAttributeNoTags()
|
||||
{
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(
|
||||
[
|
||||
'account_id' => $account->id,
|
||||
'transaction_journal_id' => $journal->id,
|
||||
'amount' => 123.45
|
||||
]
|
||||
);
|
||||
$amount = $journal->amount;
|
||||
$this->assertEquals('123.45', $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getAmountAttribute
|
||||
*/
|
||||
public function testGetAmountAttributeTag()
|
||||
{
|
||||
// has a normal tag, but nothing special.
|
||||
// make tag
|
||||
$tag = FactoryMuffin::create('FireflyIII\Models\Tag');
|
||||
$tag->tagMode = 'nothing';
|
||||
$tag->save();
|
||||
|
||||
// make withdrawal
|
||||
$withdrawalType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$withdrawal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$withdrawal->transaction_type_id = $withdrawalType->id;
|
||||
$withdrawal->save();
|
||||
|
||||
// make accounts
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => -300]);
|
||||
Transaction::create(['account_id' => $expense->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => 300]);
|
||||
|
||||
// connect to tag:
|
||||
$tag->transactionJournals()->save($withdrawal);
|
||||
|
||||
$this->assertEquals('300', $withdrawal->amount);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getAssetAccountAttribute
|
||||
*/
|
||||
public function testGetAssetAccountAttributeDeposit()
|
||||
{
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
// make withdrawal
|
||||
$depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$deposit->transaction_type_id = $depositType->id;
|
||||
$deposit->save();
|
||||
|
||||
// make accounts
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$revenue = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $deposit->id, 'amount' => 300]);
|
||||
Transaction::create(['account_id' => $revenue->id, 'transaction_journal_id' => $deposit->id, 'amount' => -300]);
|
||||
|
||||
// get asset account:
|
||||
$result = $deposit->asset_account;
|
||||
|
||||
$this->assertEquals($asset->id, $result->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getAssetAccountAttribute
|
||||
*/
|
||||
public function testGetAssetAccountAttributeFallback()
|
||||
{
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
|
||||
// make withdrawal
|
||||
$depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$deposit->transaction_type_id = $depositType->id;
|
||||
$deposit->save();
|
||||
|
||||
// make accounts
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$revenue = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $deposit->id, 'amount' => -300]);
|
||||
Transaction::create(['account_id' => $revenue->id, 'transaction_journal_id' => $deposit->id, 'amount' => -300]);
|
||||
|
||||
// get asset account:
|
||||
$result = $deposit->asset_account;
|
||||
|
||||
$this->assertEquals($asset->id, $result->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getAssetAccountAttribute
|
||||
*/
|
||||
public function testGetAssetAccountAttributeWithdrawal()
|
||||
{
|
||||
// make withdrawal
|
||||
$withdrawalType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$withdrawal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$withdrawal->transaction_type_id = $withdrawalType->id;
|
||||
$withdrawal->save();
|
||||
|
||||
// make accounts
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => -300]);
|
||||
Transaction::create(['account_id' => $expense->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => 300]);
|
||||
|
||||
// get asset account:
|
||||
$result = $withdrawal->asset_account;
|
||||
|
||||
$this->assertEquals($asset->id, $result->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getCorrectedActualAmountAttribute
|
||||
*/
|
||||
public function testGetCorrectedActualAmountAttributeDeposit()
|
||||
{
|
||||
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$deposit->transaction_type_id = $depositType->id;
|
||||
$deposit->save();
|
||||
|
||||
// make accounts
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$revenue = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $deposit->id, 'amount' => 300]);
|
||||
Transaction::create(['account_id' => $revenue->id, 'transaction_journal_id' => $deposit->id, 'amount' => -300]);
|
||||
|
||||
// get asset account:
|
||||
$result = $deposit->corrected_actual_amount;
|
||||
|
||||
$this->assertEquals('300', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getCorrectedActualAmountAttribute
|
||||
*/
|
||||
public function testGetCorrectedActualAmountAttributeWithdrawal()
|
||||
{
|
||||
|
||||
// make withdrawal
|
||||
$withdrawalType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$withdrawal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$withdrawal->transaction_type_id = $withdrawalType->id;
|
||||
$withdrawal->save();
|
||||
|
||||
// make accounts
|
||||
$expense = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $expense->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => 300]);
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $withdrawal->id, 'amount' => -300]);
|
||||
|
||||
// get asset account:
|
||||
$result = $withdrawal->corrected_actual_amount;
|
||||
|
||||
$this->assertEquals('-300', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getDestinationAccountAttribute
|
||||
*/
|
||||
public function testGetDestinationAccountAttribute()
|
||||
{
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$deposit->transaction_type_id = $depositType->id;
|
||||
$deposit->save();
|
||||
|
||||
// make accounts
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$revenue = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $deposit->id, 'amount' => 300]);
|
||||
Transaction::create(['account_id' => $revenue->id, 'transaction_journal_id' => $deposit->id, 'amount' => -300]);
|
||||
|
||||
// get asset account:
|
||||
$result = $deposit->destination_account;
|
||||
|
||||
$this->assertEquals($asset->id, $result->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Models\TransactionJournal::getDestinationAccountAttribute
|
||||
*/
|
||||
public function testGetDestinationAccountAttributeFallback()
|
||||
{
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
$deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$deposit->transaction_type_id = $depositType->id;
|
||||
$deposit->save();
|
||||
|
||||
// make accounts
|
||||
FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$revenue = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
$asset = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
Transaction::create(['account_id' => $asset->id, 'transaction_journal_id' => $deposit->id, 'amount' => -300]);
|
||||
Transaction::create(['account_id' => $revenue->id, 'transaction_journal_id' => $deposit->id, 'amount' => -300]);
|
||||
|
||||
// get asset account:
|
||||
$result = $deposit->destination_account;
|
||||
|
||||
$this->assertEquals($asset->id, $result->id);
|
||||
}
|
||||
|
||||
}
|
@ -611,6 +611,7 @@ class AccountRepositoryTest extends TestCase
|
||||
* @covers FireflyIII\Repositories\Account\AccountRepository::storeAccount
|
||||
* @covers FireflyIII\Repositories\Account\AccountRepository::storeMetadata
|
||||
* @covers FireflyIII\Repositories\Account\AccountRepository::storeInitialBalance
|
||||
*
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
|
@ -36,6 +36,22 @@ class BillRepositoryTest extends TestCase
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testBillPaymentsInRange()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
$start = Carbon::now()->startOfMonth();
|
||||
$end = Carbon::now()->endOfMonth();
|
||||
|
||||
// payment:
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$journal->date = $start;
|
||||
$journal->bill_id = $bill->id;
|
||||
$journal->save();
|
||||
|
||||
|
||||
$this->object->billPaymentsInRange($bill, $start, $end);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Bill\BillRepository::createFakeBill
|
||||
*/
|
||||
@ -58,8 +74,8 @@ class BillRepositoryTest extends TestCase
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
$accountId = $bill->id;
|
||||
$bill = FactoryMuffin::create('FireflyIII\Models\Bill');
|
||||
$accountId = $bill->id;
|
||||
$this->object->destroy($bill);
|
||||
|
||||
// cannot find bill:
|
||||
@ -284,6 +300,7 @@ class BillRepositoryTest extends TestCase
|
||||
/**
|
||||
* One
|
||||
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
|
||||
*
|
||||
* @covers FireflyIII\Repositories\Bill\BillRepository::scan
|
||||
*/
|
||||
public function testScanMatch()
|
||||
|
@ -295,7 +295,18 @@ class BudgetRepositoryTest extends TestCase
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$amount = $this->object->spentInPeriodCorrected($budget, new Carbon, new Carbon);
|
||||
$amount = $this->object->spentInPeriodCorrected($budget, new Carbon, new Carbon, false);
|
||||
$this->assertEquals(0, $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::spentInPeriodCorrected
|
||||
*/
|
||||
public function testSpentInPeriodCorrectedShared()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$amount = $this->object->spentInPeriodCorrected($budget, new Carbon, new Carbon, true);
|
||||
$this->assertEquals(0, $amount);
|
||||
}
|
||||
|
||||
|
@ -99,9 +99,33 @@ class CategoryRepositoryTest extends TestCase
|
||||
$category->save();
|
||||
}
|
||||
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
$journal1 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
$journal2 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
/** @var Category $category */
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
|
||||
$journal1->user_id = $user->id;
|
||||
$journal1->date = new Carbon('2015-02-11');
|
||||
$journal1->transaction_type_id = $type->id;
|
||||
|
||||
$journal2->user_id = $user->id;
|
||||
$journal2->date = new Carbon('2015-02-11');
|
||||
$journal2->transaction_type_id = $type->id;
|
||||
|
||||
$category->user_id = $user->id;
|
||||
$category->transactionjournals()->save($journal1);
|
||||
$category->transactionjournals()->save($journal2);
|
||||
|
||||
$journal1->save();
|
||||
$journal2->save();
|
||||
$category->save();
|
||||
}
|
||||
|
||||
|
||||
$this->be($user);
|
||||
$set = $this->object->getCategoriesAndExpensesCorrected(new Carbon('2015-02-01'), new Carbon('2015-02-28'));
|
||||
$this->assertCount(5, $set);
|
||||
$this->assertCount(10, $set);
|
||||
reset($set);
|
||||
|
||||
$this->assertEquals(0, current($set)['sum']);
|
||||
@ -196,7 +220,20 @@ class CategoryRepositoryTest extends TestCase
|
||||
public function testSpentInPeriodSumCorrected()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$sum = $this->object->spentInPeriodCorrected($category, new Carbon, new Carbon);
|
||||
$sum = $this->object->spentInPeriodCorrected($category, new Carbon, new Carbon, false);
|
||||
|
||||
$this->assertEquals(0, $sum);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::spentInPeriodCorrected
|
||||
*/
|
||||
public function testSpentInPeriodSumCorrectedShared()
|
||||
{
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$sum = $this->object->spentInPeriodCorrected($category, new Carbon, new Carbon, true);
|
||||
|
||||
$this->assertEquals(0, $sum);
|
||||
|
||||
|
@ -92,6 +92,8 @@ class JournalRepositoryTest extends TestCase
|
||||
*/
|
||||
public function testGetAmountBefore()
|
||||
{
|
||||
|
||||
|
||||
$transaction = FactoryMuffin::create('FireflyIII\Models\Transaction');
|
||||
$before = $this->object->getAmountBefore($transaction->transactionjournal, $transaction);
|
||||
|
||||
@ -167,6 +169,8 @@ class JournalRepositoryTest extends TestCase
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::store
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeWithdrawalAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeDepositAccounts
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
@ -199,6 +203,8 @@ class JournalRepositoryTest extends TestCase
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::store
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeWithdrawalAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeDepositAccounts
|
||||
*/
|
||||
public function testStoreDeposit()
|
||||
{
|
||||
@ -236,6 +242,8 @@ class JournalRepositoryTest extends TestCase
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::store
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeWithdrawalAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeDepositAccounts
|
||||
*/
|
||||
public function testStoreExpenseWithCash()
|
||||
{
|
||||
@ -272,6 +280,8 @@ class JournalRepositoryTest extends TestCase
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::store
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeWithdrawalAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeDepositAccounts
|
||||
* @expectedException Symfony\Component\HttpKernel\Exception\HttpException
|
||||
*/
|
||||
public function testStoreInvalidFromAccount()
|
||||
@ -311,6 +321,8 @@ class JournalRepositoryTest extends TestCase
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::store
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeWithdrawalAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeDepositAccounts
|
||||
* @expectedException Symfony\Component\HttpKernel\Exception\HttpException
|
||||
*/
|
||||
public function testStoreInvalidToAccount()
|
||||
@ -350,6 +362,8 @@ class JournalRepositoryTest extends TestCase
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::store
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeWithdrawalAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeDepositAccounts
|
||||
*/
|
||||
public function testStoreRevenueWithCash()
|
||||
{
|
||||
@ -387,6 +401,8 @@ class JournalRepositoryTest extends TestCase
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::store
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeWithdrawalAccounts
|
||||
* @covers FireflyIII\Repositories\Journal\JournalRepository::storeDepositAccounts
|
||||
*/
|
||||
public function testStoreTransfer()
|
||||
{
|
||||
|
@ -145,6 +145,29 @@ class PiggyBankRepositoryTest extends TestCase
|
||||
$this->assertEquals(1, $piggyBank->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::store
|
||||
*/
|
||||
public function testStoreRedirect()
|
||||
{
|
||||
$account = FactoryMuffin::create('FireflyIII\Models\Account');
|
||||
|
||||
$data = [
|
||||
'remind_me' => 1,
|
||||
'account_id' => $account->id,
|
||||
'name' => 'Some piggy',
|
||||
'targetamount' => 100,
|
||||
'create_another' => 1,
|
||||
'reminder_skip' => 0,
|
||||
'order' => 1,
|
||||
|
||||
];
|
||||
|
||||
$piggyBank = $this->object->store($data);
|
||||
|
||||
$this->assertEquals(1, $piggyBank->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::update
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user