mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-01-07 06:33:57 -06:00
Merge branch 'release/3.4.0.4'
This commit is contained in:
commit
cf00922ad2
92
README.md
92
README.md
@ -1,46 +1,62 @@
|
||||
Firefly III (v3.4.0.3)
|
||||
===========
|
||||
# Firefly III
|
||||
#### v3.4.0.4
|
||||
|
||||
[![Build Status](https://travis-ci.org/JC5/firefly-iii.svg?branch=develop)](https://travis-ci.org/JC5/firefly-iii)
|
||||
[![Project Status](http://stillmaintained.com/JC5/firefly-iii.png?a=b)](http://stillmaintained.com/JC5/firefly-iii)
|
||||
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/d44c7012-5f50-41ad-add8-8445330e4102/mini.png)](https://insight.sensiolabs.com/projects/d44c7012-5f50-41ad-add8-8445330e4102)
|
||||
[![Code Climate](https://codeclimate.com/github/JC5/firefly-iii/badges/gpa.svg)](https://codeclimate.com/github/JC5/firefly-iii)
|
||||
[![Coverage Status](https://coveralls.io/repos/JC5/firefly-iii/badge.svg?branch=master)](https://coveralls.io/r/JC5/firefly-iii?branch=master)
|
||||
[![Coverage Status](https://coveralls.io/repos/JC5/firefly-iii/badge.svg?branch=develop)](https://coveralls.io/r/JC5/firefly-iii?branch=develop)
|
||||
|
||||
[![Latest Stable Version](https://poser.pugx.org/grumpydictator/firefly-iii/v/stable.svg)](https://packagist.org/packages/grumpydictator/firefly-iii)
|
||||
[![Total Downloads](https://poser.pugx.org/grumpydictator/firefly-iii/downloads.svg)](https://packagist.org/packages/grumpydictator/firefly-iii)
|
||||
[![Latest Unstable Version](https://poser.pugx.org/grumpydictator/firefly-iii/v/unstable.svg)](https://packagist.org/packages/grumpydictator/firefly-iii)
|
||||
[![License](https://poser.pugx.org/grumpydictator/firefly-iii/license.svg)](https://packagist.org/packages/grumpydictator/firefly-iii)
|
||||
![GA](https://ga-beacon.appspot.com/UA-58172398-6/firefly-iii/readme)
|
||||
## About
|
||||
|
||||
Firefly III is a tool to help you manage your finances. Please read the full description [in the wiki](https://github.com/JC5/firefly-iii/wiki/full-description).
|
||||
|
||||
Firefly Mark III is a new version of Firefly built upon best practices and lessons learned
|
||||
from building [Firefly](https://github.com/JC5/Firefly). It's Mark III since the original Firefly never made it outside of my
|
||||
laptop and [Firefly II](https://github.com/JC5/Firefly) is live.
|
||||
|
||||
If you're not sure if this tool is for you, please read the [full description](https://github.com/JC5/firefly-iii/wiki/full-description).
|
||||
|
||||
To install and use Firefly III, please read [the installation guide](https://github.com/JC5/firefly-iii/wiki/Installation),
|
||||
[the upgrade guide](https://github.com/JC5/firefly-iii/wiki/Upgrade-instructions) (if applicable) and the **[first use guide](https://github.com/JC5/firefly-iii/wiki/First-use)**.
|
||||
"Firefly III" is a financial manager. It can help you keep track of expenses, income, budgets and everything in between. It even supports credit cards, shared
|
||||
household accounts and savings accounts! It's pretty fancy. You should use it to save and organise money.
|
||||
|
||||
If you want to try out Firefly III, you can do so on [this dedicated website](https://geld.nder.be/). This site always runs the latest version of Firefly III. If you want to use it, please read the [privacy considerations](https://github.com/JC5/firefly-iii/wiki/Privacy-on-demo-site) for this demo-site.
|
||||
Firefly is a system you'll have install yourself on webhosting of your choosing.
|
||||
|
||||
Personal financial management is pretty difficult, and everybody has their own approach to it. Some people
|
||||
make budgets, other people limit their cashflow by throwing away their credit cards, others get a better job.
|
||||
There are tons of ways to save and earn money.
|
||||
|
||||
|
||||
To get to know Firefly, and to see if it fits you, check out these resources:
|
||||
|
||||
- The screenshots below on this very page.
|
||||
- The featurelist below, also on this very page.
|
||||
- The [full description](https://github.com/JC5/firefly-iii/wiki/full-description), which will tell you how Firefly works,
|
||||
and the philosophy behind it.
|
||||
|
||||
|
||||
### About the name (if you care)
|
||||
|
||||
It's III, or 3, because [version 2](https://github.com/JC5/Firefly) and version 1 (not online) preceded it. It has been growing steadily ever since.
|
||||
|
||||
## Running and installing
|
||||
|
||||
If you're still interested please read [the installation guide](https://github.com/JC5/firefly-iii/wiki/Installation),
|
||||
[the upgrade guide](https://github.com/JC5/firefly-iii/wiki/Upgrade-instructions) (if applicable)
|
||||
and the **[first use guide](https://github.com/JC5/firefly-iii/wiki/First-use)**.
|
||||
|
||||
If you want to try out Firefly III, you can do so on [this dedicated website](https://geld.nder.be/).
|
||||
This site always runs the latest version of Firefly III. If you want to use it, please read the [privacy considerations](https://github.com/JC5/firefly-iii/wiki/Privacy-on-demo-site) for this demo-site.
|
||||
|
||||
## Current features
|
||||
|
||||
- [A double-entry bookkeeping system](https://en.wikipedia.org/wiki/Double-entry_bookkeeping_system);
|
||||
- You can store, edit and remove withdrawals, deposits and transfers. This allows you full financial management;
|
||||
- You can store, edit and remove [withdrawals, deposits and transfers](https://en.wikipedia.org/wiki/Financial_transaction). This allows you full financial management;
|
||||
- You can manage different types of accounts
|
||||
- Asset accounts
|
||||
- Shared asset accounts (household accounts)
|
||||
- [Asset](https://en.wikipedia.org/wiki/Asset) accounts
|
||||
- Shared [asset accounts](https://en.wikipedia.org/wiki/Asset) ([household accounts](https://en.wikipedia.org/wiki/Household))
|
||||
- Saving accounts
|
||||
- Credit cards
|
||||
- It's possible to create, change and manage money using _[budgets](https://en.wikipedia.org/wiki/Envelope_system)_;
|
||||
- Organize transactions using categories;
|
||||
- Save towards a goal using piggy banks;
|
||||
- Predict and anticipate bills;
|
||||
- View income / expense reports;
|
||||
- Lots of help text in case you don't get it;
|
||||
- Save towards a goal using [piggy banks](https://en.wikipedia.org/wiki/Piggy_bank);
|
||||
- Predict and anticipate [bills](https://en.wikipedia.org/wiki/Invoice);
|
||||
- View income / expense [reports](https://en.wikipedia.org/wiki/Financial_statement);
|
||||
- Organize expenses using tags;
|
||||
- Lots of help text in case you don't get it.
|
||||
|
||||
Everything is organised:
|
||||
|
||||
@ -50,24 +66,10 @@ Everything is organised:
|
||||
- Lots of charts because we all love them.
|
||||
- Financial reporting showing you how well you are doing;
|
||||
|
||||
## Changes
|
||||
|
||||
Firefly III will feature, but does not feature yet:
|
||||
|
||||
|
||||
- More control over other resources outside of personal finance
|
||||
- Debts
|
||||
- More test-coverage;
|
||||
- Firefly will be able to split transactions; a single purchase can be split in multiple entries, for more fine-grained control.
|
||||
- Firefly will be able to join transactions.
|
||||
- Any other features I might not have thought of.
|
||||
|
||||
Some stuff has been removed:
|
||||
|
||||
- The nesting of budgets, categories and beneficiaries is removed because it was pretty pointless.
|
||||
|
||||
## Screenshots
|
||||
|
||||
_Please note that everything in these screenshots is fictional and may not be realistic._
|
||||
|
||||
![Index](https://i.nder.be/c09vfw90)
|
||||
|
||||
![Accounts](https://i.nder.be/hkn0vhcg)
|
||||
@ -83,6 +85,10 @@ Some stuff has been removed:
|
||||
![Piggy banks](https://i.nder.be/hkud0h53)
|
||||
|
||||
## Current state
|
||||
I have the basics up and running. Test coverage is currently coming, slowly.
|
||||
|
||||
Questions, ideas or other things to contribute? [Let me know](https://github.com/JC5/firefly-iii/issues/new)!
|
||||
Firefly III is pretty much all grown up. Full test coverage (nerd alert!) is coming. One of the things on the todo-list
|
||||
is adding translations.
|
||||
|
||||
Questions, ideas, bugs or other things to contribute? [Let me know](https://github.com/JC5/firefly-iii/issues/new)!
|
||||
|
||||
If you like this tool, feel free to [donate me some beer money](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=2ZMV952UUSCLU&lc=NL&item_name=Development%20of%20Firefly¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted).
|
||||
|
@ -149,6 +149,7 @@ class GoogleChartController extends Controller
|
||||
{
|
||||
$chart->addColumn('Budget', 'string');
|
||||
$chart->addColumn('Left', 'number');
|
||||
$chart->addColumn('Spent', 'number');
|
||||
$chart->addColumn('Overspent', 'number');
|
||||
|
||||
$budgets = $repository->getBudgets();
|
||||
@ -160,31 +161,43 @@ class GoogleChartController extends Controller
|
||||
$repetitions = $repository->getBudgetLimitRepetitions($budget, $start, $end);
|
||||
if ($repetitions->count() == 0) {
|
||||
$expenses = $repository->sumBudgetExpensesInPeriod($budget, $start, $end);
|
||||
$allEntries->push([$budget->name, 0, $expenses]);
|
||||
$allEntries->push([$budget->name, 0, 0, $expenses]);
|
||||
continue;
|
||||
}
|
||||
/** @var LimitRepetition $repetition */
|
||||
foreach ($repetitions as $repetition) {
|
||||
$expenses = $repository->sumBudgetExpensesInPeriod($budget, $repetition->startdate, $repetition->enddate);
|
||||
$allEntries->push([$budget->name . ' (' . $repetition->startdate->format('j M Y') . ')', floatval($repetition->amount), $expenses]);
|
||||
$expenses = $repository->sumBudgetExpensesInPeriod($budget, $repetition->startdate, $repetition->enddate);
|
||||
$left = $expenses < floatval($repetition->amount) ? floatval($repetition->amount) - $expenses : 0;
|
||||
$spent = $expenses > floatval($repetition->amount) ? 0 : $expenses;
|
||||
$overspent = $expenses > floatval($repetition->amount) ? $expenses - floatval($repetition->amount) : 0;
|
||||
$allEntries->push(
|
||||
[$budget->name . ' (' . $repetition->startdate->format('j M Y') . ')',
|
||||
$left,
|
||||
$spent,
|
||||
$overspent
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$noBudgetExpenses = $repository->getWithoutBudgetSum($start, $end);
|
||||
$allEntries->push(['(no budget)', 0, $noBudgetExpenses]);
|
||||
$allEntries->push(['(no budget)', 0, 0, $noBudgetExpenses]);
|
||||
|
||||
foreach ($allEntries as $entry) {
|
||||
if ($entry[2] > 0) {
|
||||
$left = $entry[1] - $entry[2];
|
||||
if ($left > 0) {
|
||||
$chart->addRow($entry[0], $left, null);
|
||||
} else {
|
||||
if ($left < 0) {
|
||||
$chart->addRow($entry[0], null, $left);
|
||||
}
|
||||
}
|
||||
|
||||
if ($entry[1] != 0 || $entry[2] != 0 || $entry[3] != 0) {
|
||||
$chart->addRow($entry[0], $entry[1], $entry[2], $entry[3]);
|
||||
}
|
||||
// if ($entry[2] > 0) {
|
||||
// $left = $entry[1] - $entry[2];
|
||||
// if ($left > 0) {
|
||||
// $chart->addRow($entry[0], $left, null);
|
||||
// } else {
|
||||
// if ($left < 0) {
|
||||
// $chart->addRow($entry[0], null, $left);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
||||
$chart->generate();
|
||||
|
@ -25,21 +25,6 @@ class BudgetRepository implements BudgetRepositoryInterface
|
||||
*/
|
||||
public function cleanupBudgets()
|
||||
{
|
||||
$limits = BudgetLimit::leftJoin('budgets', 'budgets.id', '=', 'budget_limits.budget_id')->get(['budget_limits.*']);
|
||||
|
||||
// loop budget limits:
|
||||
$found = [];
|
||||
/** @var BudgetLimit $limit */
|
||||
foreach ($limits as $limit) {
|
||||
$key = $limit->budget_id . '-' . $limit->startdate;
|
||||
if (isset($found[$key])) {
|
||||
$limit->delete();
|
||||
} else {
|
||||
$found[$key] = true;
|
||||
}
|
||||
unset($key);
|
||||
}
|
||||
|
||||
// delete limits with amount 0:
|
||||
BudgetLimit::where('amount', 0)->delete();
|
||||
|
||||
|
@ -3,7 +3,8 @@ google.setOnLoadCallback(drawChart);
|
||||
|
||||
function drawChart() {
|
||||
googleLineChart('chart/home/account', 'accounts-chart');
|
||||
googleColumnChart('chart/home/budgets', 'budgets-chart');
|
||||
//googleColumnChart('chart/home/budgets', 'budgets-chart');
|
||||
googleStackedColumnChart('chart/home/budgets', 'budgets-chart');
|
||||
googleColumnChart('chart/home/categories', 'categories-chart');
|
||||
googlePieChart('chart/home/bills', 'bills-chart');
|
||||
getBoxAmounts();
|
||||
|
10
resources/lang/en/firefly.php
Normal file
10
resources/lang/en/firefly.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
return [
|
||||
'welcome' => 'Welcome to Firefly!',
|
||||
'mainTitle' => 'What\'s playing?',
|
||||
'close' => 'Clone',
|
||||
'pleaseHold' => 'Please hold...',
|
||||
'mandatoryFields' => 'Mandatory fields',
|
||||
'optionalFields' => 'Optional fields',
|
||||
'options' => 'Options'
|
||||
];
|
@ -9,7 +9,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
||||
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name') }}
|
||||
@ -22,7 +22,7 @@
|
||||
{% if what == 'asset' %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@ -34,11 +34,10 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- panel for options -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','account') }}
|
||||
|
@ -9,7 +9,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
||||
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name') }}
|
||||
@ -20,7 +20,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% if account.accounttype.type == 'Default account' or account.accounttype.type == 'Asset account' %}
|
||||
@ -50,7 +50,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','account') }}
|
||||
|
@ -5,10 +5,9 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<!-- panel for mandatory fields -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
||||
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name') }}
|
||||
@ -22,10 +21,9 @@
|
||||
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<!-- panel for optional fields -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.integer('skip',0) }}
|
||||
@ -37,7 +35,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','bill') }}
|
||||
|
@ -9,7 +9,7 @@
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
||||
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name') }}
|
||||
@ -26,7 +26,7 @@
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.integer('skip') }}
|
||||
@ -37,7 +37,7 @@
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','bill') }}
|
||||
|
@ -6,7 +6,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation"></i> Mandatory fields
|
||||
<i class="fa fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name') }}
|
||||
@ -17,7 +17,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','budget') }}
|
||||
|
@ -13,7 +13,7 @@
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-fw fa-exclamation"></i> Mandatory fields
|
||||
<i class="fa fa-fw fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.checkbox('active') }}
|
||||
@ -26,7 +26,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','budget') }}
|
||||
|
@ -7,7 +7,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation"></i> Mandatory fields
|
||||
<i class="fa fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name') }}
|
||||
@ -20,7 +20,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','category') }}
|
||||
|
@ -7,7 +7,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation"></i> Mandatory fields
|
||||
<i class="fa fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name') }}
|
||||
@ -21,7 +21,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','category') }}
|
||||
|
@ -6,7 +6,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
||||
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name',null,{'maxlength' : 48}) }}
|
||||
@ -22,7 +22,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','currency') }}
|
||||
|
@ -8,7 +8,7 @@
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa {{ subTitleIcon }}"></i> Mandatory fields
|
||||
<i class="fa {{ subTitleIcon }}"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('name',null,{'maxlength' : 48}) }}
|
||||
@ -23,7 +23,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','currency') }}
|
||||
|
@ -5,7 +5,7 @@
|
||||
{% if count == 0 %}
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<p class="lead">Welcome to Firefly III.</p>
|
||||
<p class="lead">{{ trans('firefly.welcome') }}</p>
|
||||
|
||||
<p>
|
||||
Create a new asset account to get started.
|
||||
|
@ -89,15 +89,15 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span>
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">{{ trans('firefly.close') }}</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="helpTitle">Please hold...</h4>
|
||||
<h4 class="modal-title" id="helpTitle">{{ trans('firefly.pleaseHold') }}</h4>
|
||||
</div>
|
||||
<div class="modal-body" id="helpBody">
|
||||
<i class="fa fa-refresh fa-spin"></i>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('firefly.close') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-fw fa-exclamation"></i> Mandatory fields
|
||||
<i class="fa fa-fw fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@ -20,10 +20,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||
<!-- panel for optional fields -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.date('targetdate') }}
|
||||
@ -35,7 +34,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','piggy bank') }}
|
||||
|
@ -10,7 +10,7 @@
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-fw fa-exclamation"></i> Mandatory fields
|
||||
<i class="fa fa-fw fa-exclamation"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
@ -23,10 +23,9 @@
|
||||
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||
<!-- panel for optional fields -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.date('targetdate') }}
|
||||
@ -38,7 +37,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','piggy bank') }}
|
||||
|
@ -7,7 +7,7 @@
|
||||
<div class="col-lg-5 col-md-5 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-tag"></i> Mandatory fields
|
||||
<i class="fa fa-tag"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('tag') }}
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.date('date') }}
|
||||
@ -32,7 +32,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','tag') }}
|
||||
|
@ -9,7 +9,7 @@
|
||||
<div class="col-lg-5 col-md-5 col-sm-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-tag"></i> Mandatory fields
|
||||
<i class="fa fa-tag"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.text('tag') }}
|
||||
@ -22,7 +22,7 @@
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.date('date') }}
|
||||
@ -34,7 +34,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','tag') }}
|
||||
|
@ -6,10 +6,9 @@
|
||||
<input type="hidden" name="what" value="{{ what }}" />
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||
<!-- panel for mandatory fields -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
||||
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<!-- DESCRIPTION ALWAYS AVAILABLE -->
|
||||
@ -46,10 +45,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||
<!-- panel for optional fields -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<!-- BUDGET ONLY WHEN CREATING A WITHDRAWAL -->
|
||||
@ -73,7 +71,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('create','transaction') }}
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<!-- panel for mandatory fields -->
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation-circle"></i> Destroy "{{ journal.description }}"
|
||||
|
@ -8,10 +8,9 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||
<!-- panel for mandatory fields -->
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-exclamation-circle"></i> Mandatory fields
|
||||
<i class="fa fa-exclamation-circle"></i> {{ trans('firefly.mandatoryFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<!-- ALWAYS AVAILABLE -->
|
||||
@ -48,10 +47,9 @@
|
||||
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-12 col-sm-12">
|
||||
<!-- panel for optional fields -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-smile-o"></i> Optional fields
|
||||
<i class="fa fa-smile-o"></i> {{ trans('firefly.optionalFields') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<!-- BUDGET ONLY WHEN CREATING A WITHDRAWAL -->
|
||||
@ -76,7 +74,7 @@
|
||||
<!-- panel for options -->
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-bolt"></i> Options
|
||||
<i class="fa fa-bolt"></i> {{ trans('firefly.options') }}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ ExpandedForm.optionsList('update','transaction') }}
|
||||
|
@ -1,7 +1,6 @@
|
||||
<?php
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
|
||||
if (!class_exists('RandomString')) {
|
||||
/**
|
||||
* Class RandomString
|
||||
@ -140,7 +139,9 @@ FactoryMuffin::define(
|
||||
'budget_limit_id' => 'factory|FireflyIII\Models\BudgetLimit',
|
||||
'startdate' => 'date',
|
||||
'enddate' => 'date',
|
||||
'amount' => 'integer',
|
||||
'amount' => function () {
|
||||
return rand(1, 100);
|
||||
},
|
||||
]
|
||||
);
|
||||
|
||||
@ -149,7 +150,9 @@ FactoryMuffin::define(
|
||||
[
|
||||
'budget_id' => 'factory|FireflyIII\Models\Budget',
|
||||
'startdate' => 'date',
|
||||
'amount' => 'integer',
|
||||
'amount' => function () {
|
||||
return rand(1, 100);
|
||||
},
|
||||
'repeats' => 'false',
|
||||
'repeat_freq' => 'monthly',
|
||||
|
||||
@ -220,7 +223,9 @@ FactoryMuffin::define(
|
||||
[
|
||||
'account_id' => 'factory|FireflyIII\Models\Account',
|
||||
'name' => 'sentence',
|
||||
'targetamount' => 'integer',
|
||||
'targetamount' => function () {
|
||||
return rand(1, 100);
|
||||
},
|
||||
'startdate' => 'date',
|
||||
'targetdate' => 'date',
|
||||
'reminder_skip' => 0,
|
||||
|
@ -1,5 +1,10 @@
|
||||
<?php
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\BudgetLimit;
|
||||
use FireflyIII\Repositories\Budget\BudgetRepository;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Generated by PHPUnit_SkeletonGenerator on 2015-05-05 at 19:16:07.
|
||||
@ -32,14 +37,23 @@ class BudgetRepositoryTest extends TestCase
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::cleanupBudgets
|
||||
* @todo Implement testCleanupBudgets().
|
||||
*/
|
||||
public function testCleanupBudgets()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
// create some budgets:
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$limit = FactoryMuffin::create('FireflyIII\Models\BudgetLimit');
|
||||
$limit->budget_id = $budget->id;
|
||||
$limit->amount = 0;
|
||||
$limit->save();
|
||||
}
|
||||
|
||||
|
||||
$this->object->cleanupBudgets();
|
||||
|
||||
$this->assertCount(0, BudgetLimit::get());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,10 +62,11 @@ class BudgetRepositoryTest extends TestCase
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$this->object->destroy($budget);
|
||||
|
||||
$this->assertCount(0, Budget::where('id', $budget->id)->whereNull('deleted_at')->get());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -60,213 +75,311 @@ class BudgetRepositoryTest extends TestCase
|
||||
*/
|
||||
public function testExpensesOnDay()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$result = $this->object->expensesOnDay($budget, new Carbon);
|
||||
|
||||
$this->assertEquals(0, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getActiveBudgets
|
||||
* @todo Implement testGetActiveBudgets().
|
||||
*/
|
||||
public function testGetActiveBudgets()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget1 = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$budget2 = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$budget1->active = 1;
|
||||
$budget2->active = 0;
|
||||
$budget2->user_id = $budget1->user_id;
|
||||
$budget1->save();
|
||||
$budget2->save();
|
||||
$this->be($budget1->user);
|
||||
|
||||
$set = $this->object->getActiveBudgets();
|
||||
|
||||
$this->assertCount(1, $set);
|
||||
$this->assertEquals($set->first()->id, $budget1->id);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgetLimitRepetitions
|
||||
* @todo Implement testGetBudgetLimitRepetitions().
|
||||
*/
|
||||
public function testGetBudgetLimitRepetitions()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$rep = FactoryMuffin::create('FireflyIII\Models\LimitRepetition');
|
||||
$limit = $rep->budgetlimit;
|
||||
$limit->startdate = new Carbon('2015-02-02');
|
||||
$rep->startdate = new Carbon('2015-02-02');
|
||||
$rep->enddate = new Carbon('2015-02-28');
|
||||
$limit->save();
|
||||
$rep->save();
|
||||
|
||||
$set = $this->object->getBudgetLimitRepetitions($rep->budgetlimit->budget, new Carbon('2015-02-01'), new Carbon('2015-02-28'));
|
||||
$this->assertCount(2, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgetLimits
|
||||
* @todo Implement testGetBudgetLimits().
|
||||
*/
|
||||
public function testGetBudgetLimits()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
/** @var Budget $budget */
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$set = $this->object->getBudgetLimits($budget);
|
||||
|
||||
$this->assertCount(0, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgets
|
||||
* @todo Implement testGetBudgets().
|
||||
*/
|
||||
public function testGetBudgets()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget1 = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$budget2 = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$budget1->active = 1;
|
||||
$budget2->active = 0;
|
||||
$budget2->user_id = $budget1->user_id;
|
||||
$budget1->save();
|
||||
$budget2->save();
|
||||
$this->be($budget1->user);
|
||||
|
||||
$set = $this->object->getBudgets();
|
||||
|
||||
$this->assertCount(2, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getCurrentRepetition
|
||||
* @todo Implement testGetCurrentRepetition().
|
||||
*/
|
||||
public function testGetCurrentRepetition()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
/** @var Budget $budget */
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$rep = $this->object->getCurrentRepetition($budget, new Carbon);
|
||||
$this->assertNull($rep);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getFirstBudgetLimitDate
|
||||
* @todo Implement testGetFirstBudgetLimitDate().
|
||||
*/
|
||||
public function testGetFirstBudgetLimitDate()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
/** @var BudgetLimit $budget */
|
||||
$limit = FactoryMuffin::create('FireflyIII\Models\BudgetLimit');
|
||||
$date = $this->object->getFirstBudgetLimitDate($limit->budget);
|
||||
$this->assertEquals($date->format('Y-m-d'), $limit->startdate->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getFirstBudgetLimitDate
|
||||
*/
|
||||
public function testGetFirstBudgetLimitDateNull()
|
||||
{
|
||||
/** @var Budget $budget */
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$date = $this->object->getFirstBudgetLimitDate($budget);
|
||||
$ownDate = Carbon::now()->startOfYear();
|
||||
$this->assertEquals($date->format('Y-m-d'), $ownDate->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getInactiveBudgets
|
||||
* @todo Implement testGetInactiveBudgets().
|
||||
*/
|
||||
public function testGetInactiveBudgets()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget1 = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$budget2 = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$budget1->active = 1;
|
||||
$budget2->active = 0;
|
||||
$budget2->user_id = $budget1->user_id;
|
||||
$budget1->save();
|
||||
$budget2->save();
|
||||
$this->be($budget1->user);
|
||||
|
||||
$set = $this->object->getInactiveBudgets();
|
||||
|
||||
$this->assertCount(1, $set);
|
||||
$this->assertEquals($set->first()->id, $budget2->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getJournals
|
||||
* @todo Implement testGetJournals().
|
||||
*/
|
||||
public function testGetJournals()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$repetition = FactoryMuffin::create('FireflyIII\Models\LimitRepetition');
|
||||
|
||||
$set = $this->object->getJournals($repetition->budgetlimit->budget, $repetition);
|
||||
$this->assertTrue($set instanceof LengthAwarePaginator);
|
||||
$this->assertCount(0, $set);
|
||||
$this->assertEquals(1, $set->currentPage());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getLastBudgetLimitDate
|
||||
* @todo Implement testGetLastBudgetLimitDate().
|
||||
*/
|
||||
public function testGetLastBudgetLimitDate()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
/** @var BudgetLimit $budget */
|
||||
$limit = FactoryMuffin::create('FireflyIII\Models\BudgetLimit');
|
||||
$date = $this->object->getLastBudgetLimitDate($limit->budget);
|
||||
$this->assertEquals($date->format('Y-m-d'), $limit->startdate->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getLastBudgetLimitDate
|
||||
*/
|
||||
public function testGetLastBudgetLimitDateNull()
|
||||
{
|
||||
|
||||
/** @var Budget $budget */
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$date = $this->object->getLastBudgetLimitDate($budget);
|
||||
$ownDate = Carbon::now()->startOfYear();
|
||||
$this->assertEquals($date->format('Y-m-d'), $ownDate->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getLimitAmountOnDate
|
||||
* @todo Implement testGetLimitAmountOnDate().
|
||||
*/
|
||||
public function testGetLimitAmountOnDate()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$rep = FactoryMuffin::create('FireflyIII\Models\LimitRepetition');
|
||||
|
||||
$amount = $this->object->getLimitAmountOnDate($rep->budgetlimit->budget, $rep->startdate);
|
||||
|
||||
$this->assertEquals($rep->amount, $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getLimitAmountOnDate
|
||||
*/
|
||||
public function testGetLimitAmountOnDateNull()
|
||||
{
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$amount = $this->object->getLimitAmountOnDate($budget, new Carbon);
|
||||
|
||||
$this->assertNull($amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getWithoutBudget
|
||||
* @todo Implement testGetWithoutBudget().
|
||||
*/
|
||||
public function testGetWithoutBudget()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$this->be($user);
|
||||
$set = $this->object->getWithoutBudget(new Carbon, new Carbon);
|
||||
$this->assertCount(0, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getWithoutBudgetSum
|
||||
* @todo Implement testGetWithoutBudgetSum().
|
||||
*/
|
||||
public function testGetWithoutBudgetSum()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$this->be($user);
|
||||
$sum = $this->object->getWithoutBudgetSum(new Carbon, new Carbon);
|
||||
$this->assertEquals(0, $sum);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::spentInMonth
|
||||
* @todo Implement testSpentInMonth().
|
||||
*/
|
||||
public function testSpentInMonth()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$amount = $this->object->spentInMonth($budget, new Carbon);
|
||||
$this->assertEquals(0, $amount);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::store
|
||||
* @todo Implement testStore().
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
|
||||
$data = [
|
||||
'name' => 'new budget ' . rand(1, 100),
|
||||
'user' => $user->id
|
||||
];
|
||||
$result = $this->object->store($data);
|
||||
|
||||
$this->assertTrue($result instanceof Budget);
|
||||
$this->assertEquals($result->name, $data['name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::sumBudgetExpensesInPeriod
|
||||
* @todo Implement testSumBudgetExpensesInPeriod().
|
||||
*/
|
||||
public function testSumBudgetExpensesInPeriod()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
$result = $this->object->sumBudgetExpensesInPeriod($budget, new Carbon, new Carbon);
|
||||
$this->assertEquals(0, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::update
|
||||
* @todo Implement testUpdate().
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$data = [
|
||||
'name' => 'update budget ' . rand(1, 100),
|
||||
'active' => true
|
||||
];
|
||||
$result = $this->object->update($budget, $data);
|
||||
|
||||
$this->assertTrue($result instanceof Budget);
|
||||
$this->assertEquals($result->name, $data['name']);
|
||||
$this->assertEquals($result->id, $budget->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::updateLimitAmount
|
||||
* @todo Implement testUpdateLimitAmount().
|
||||
*/
|
||||
public function testUpdateLimitAmount()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
|
||||
|
||||
$result = $this->object->updateLimitAmount($budget, new Carbon, 100);
|
||||
|
||||
$this->assertTrue($result instanceof BudgetLimit);
|
||||
$this->assertEquals($result->amount, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::updateLimitAmount
|
||||
*/
|
||||
public function testUpdateLimitAmountExisting()
|
||||
{
|
||||
$budgetLimit= FactoryMuffin::create('FireflyIII\Models\BudgetLimit');
|
||||
|
||||
$result = $this->object->updateLimitAmount($budgetLimit->budget, $budgetLimit->startdate, 100);
|
||||
|
||||
$this->assertTrue($result instanceof BudgetLimit);
|
||||
$this->assertEquals($result->amount, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Budget\BudgetRepository::updateLimitAmount
|
||||
*/
|
||||
public function testUpdateLimitAmountZero()
|
||||
{
|
||||
$budgetLimit= FactoryMuffin::create('FireflyIII\Models\BudgetLimit');
|
||||
|
||||
$result = $this->object->updateLimitAmount($budgetLimit->budget, $budgetLimit->startdate, 0);
|
||||
|
||||
$this->assertTrue($result instanceof BudgetLimit);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?php
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Repositories\Category\CategoryRepository;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Generated by PHPUnit_SkeletonGenerator on 2015-05-05 at 19:19:32.
|
||||
@ -32,14 +35,13 @@ class CategoryRepositoryTest extends TestCase
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::countJournals
|
||||
* @todo Implement testCountJournals().
|
||||
*/
|
||||
public function testCountJournals()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$result = $this->object->countJournals($category);
|
||||
|
||||
$this->assertEquals(0, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,129 +50,204 @@ class CategoryRepositoryTest extends TestCase
|
||||
*/
|
||||
public function testDestroy()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$this->object->destroy($category);
|
||||
|
||||
$count = Category::where('id', $category->id)->whereNull('deleted_at')->count();
|
||||
$this->assertEquals(0, $count);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::getCategories
|
||||
* @todo Implement testGetCategories().
|
||||
*/
|
||||
public function testGetCategories()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$cat1 = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$cat2 = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$cat1->name = 'BBBBB';
|
||||
$cat2->name = 'AAAAA';
|
||||
$cat1->user_id = $user->id;
|
||||
$cat2->user_id = $user->id;
|
||||
$cat1->save();
|
||||
$cat2->save();
|
||||
$this->be($user);
|
||||
|
||||
$set = $this->object->getCategories();
|
||||
$this->assertEquals('AAAAA', $set->first()->name);
|
||||
$this->assertCount(2, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::getCategoriesAndExpenses
|
||||
* @todo Implement testGetCategoriesAndExpenses().
|
||||
*/
|
||||
public function testGetCategoriesAndExpenses()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$type = FactoryMuffin::create('FireflyIII\Models\TransactionType');
|
||||
// some journals and categories:
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
/** @var Category $category */
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$journal->user_id = $user->id;
|
||||
$journal->date = new Carbon('2015-02-11');
|
||||
$journal->transaction_type_id = $type->id;
|
||||
$category->user_id = $user->id;
|
||||
$category->transactionjournals()->save($journal);
|
||||
$journal->save();
|
||||
$category->save();
|
||||
}
|
||||
|
||||
$this->be($user);
|
||||
$set = $this->object->getCategoriesAndExpenses(new Carbon('2015-02-01'), new Carbon('2015-02-28'));
|
||||
$this->assertCount(5, $set);
|
||||
$this->assertEquals(0, $set->first()->sum);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::getFirstActivityDate
|
||||
* @todo Implement testGetFirstActivityDate().
|
||||
*/
|
||||
public function testGetFirstActivityDate()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
/** @var Category $category */
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$journal->user_id = $user->id;
|
||||
$journal->date = new Carbon('2015-02-11');
|
||||
$category->user_id = $user->id;
|
||||
$category->transactionjournals()->save($journal);
|
||||
$journal->save();
|
||||
$category->save();
|
||||
|
||||
$this->be($user);
|
||||
|
||||
$date = $this->object->getFirstActivityDate($category);
|
||||
$this->assertEquals('2015-02-11', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::getFirstActivityDate
|
||||
*/
|
||||
public function testGetFirstActivityDateNull()
|
||||
{
|
||||
/** @var Category $category */
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$this->be($category->user);
|
||||
|
||||
$date = $this->object->getFirstActivityDate($category);
|
||||
$this->assertEquals(Carbon::now()->format('Y-m-d'), $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::getJournals
|
||||
* @todo Implement testGetJournals().
|
||||
*/
|
||||
public function testGetJournals()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
|
||||
/** @var Category $category */
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$this->be($category->user);
|
||||
$set = $this->object->getJournals($category, 1);
|
||||
|
||||
$this->assertEquals(0, $set->count());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::getLatestActivity
|
||||
* @todo Implement testGetLatestActivity().
|
||||
*/
|
||||
public function testGetLatestActivity()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
|
||||
/** @var Category $category */
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$journal->user_id = $user->id;
|
||||
$journal->date = new Carbon('2015-02-11');
|
||||
$category->user_id = $user->id;
|
||||
$category->transactionjournals()->save($journal);
|
||||
$journal->save();
|
||||
$category->save();
|
||||
|
||||
$this->be($user);
|
||||
|
||||
$date = $this->object->getLatestActivity($category);
|
||||
$this->assertEquals('2015-02-11', $date->format('Y-m-d'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::getWithoutCategory
|
||||
* @todo Implement testGetWithoutCategory().
|
||||
*/
|
||||
public function testGetWithoutCategory()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$this->be($user);
|
||||
|
||||
$set = $this->object->getWithoutCategory(new Carbon, new Carbon);
|
||||
$this->assertCount(0, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::spentInPeriodSum
|
||||
* @todo Implement testSpentInPeriodSum().
|
||||
*/
|
||||
public function testSpentInPeriodSum()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$sum = $this->object->spentInPeriodSum($category, new Carbon, new Carbon);
|
||||
|
||||
$this->assertEquals(0, $sum);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::spentOnDaySum
|
||||
* @todo Implement testSpentOnDaySum().
|
||||
*/
|
||||
public function testSpentOnDaySum()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$sum = $this->object->spentOnDaySum($category, new Carbon);
|
||||
|
||||
$this->assertEquals(0, $sum);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::store
|
||||
* @todo Implement testStore().
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$user = FactoryMuffin::create('FireflyIII\User');
|
||||
$data = [
|
||||
'name' => 'New category' . rand(1, 100),
|
||||
'user' => $user->id
|
||||
];
|
||||
$newCategory = $this->object->store($data);
|
||||
|
||||
$this->assertEquals($data['name'], $newCategory->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Category\CategoryRepository::update
|
||||
* @todo Implement testUpdate().
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$data = [
|
||||
'name' => 'New category' . rand(1, 100),
|
||||
];
|
||||
$newCategory = $this->object->update($category, $data);
|
||||
|
||||
$this->assertEquals($data['name'], $newCategory->name);
|
||||
}
|
||||
|
||||
public function testgetLatestActivityNull()
|
||||
{
|
||||
/** @var Category $category */
|
||||
$category = FactoryMuffin::create('FireflyIII\Models\Category');
|
||||
$this->be($category->user);
|
||||
|
||||
$date = $this->object->getLatestActivity($category);
|
||||
$this->assertNull($date);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepository;
|
||||
use League\FactoryMuffin\Facade as FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Generated by PHPUnit_SkeletonGenerator on 2015-05-05 at 19:19:32.
|
||||
@ -32,61 +33,82 @@ class CurrencyRepositoryTest extends TestCase
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Currency\CurrencyRepository::countJournals
|
||||
* @todo Implement testCountJournals().
|
||||
*/
|
||||
public function testCountJournals()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
$count = $this->object->countJournals($currency);
|
||||
$this->assertEquals(0, $count);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Currency\CurrencyRepository::get
|
||||
* @todo Implement testGet().
|
||||
*/
|
||||
public function testGet()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
|
||||
$set = $this->object->get();
|
||||
$this->assertCount(2, $set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Currency\CurrencyRepository::getCurrencyByPreference
|
||||
* @todo Implement testGetCurrencyByPreference().
|
||||
*/
|
||||
public function testGetCurrencyByPreference()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
$preference = FactoryMuffin::create('FireflyIII\Models\Preference');
|
||||
$preference->data = $currency->code;
|
||||
$preference->save();
|
||||
$found = $this->object->getCurrencyByPreference($preference);
|
||||
$this->assertEquals($currency->id, $found->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Currency\CurrencyRepository::getCurrencyByPreference
|
||||
*/
|
||||
public function testGetCurrencyByPreferenceNull()
|
||||
{
|
||||
$first = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
$preference = FactoryMuffin::create('FireflyIII\Models\Preference');
|
||||
$preference->data = 'ABC';
|
||||
$preference->save();
|
||||
$found = $this->object->getCurrencyByPreference($preference);
|
||||
$this->assertEquals($first->id, $found->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Currency\CurrencyRepository::store
|
||||
* @todo Implement testStore().
|
||||
*/
|
||||
public function testStore()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$data = [
|
||||
'name' => 'Some Currency',
|
||||
'code' => 'ABC',
|
||||
'symbol' => 'S'
|
||||
];
|
||||
|
||||
$currency = $this->object->store($data);
|
||||
$this->assertEquals($data['name'], $currency->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FireflyIII\Repositories\Currency\CurrencyRepository::update
|
||||
* @todo Implement testUpdate().
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
// Remove the following lines when you implement this test.
|
||||
$this->markTestIncomplete(
|
||||
'This test has not been implemented yet.'
|
||||
);
|
||||
$currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
|
||||
|
||||
$data = [
|
||||
'name' => 'Some Currency',
|
||||
'code' => 'ABC',
|
||||
'symbol' => 'S'
|
||||
];
|
||||
|
||||
$newCurrency = $this->object->update($currency, $data);
|
||||
$this->assertEquals($data['name'], $newCurrency->name);
|
||||
$this->assertEquals($currency->id, $newCurrency->id);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user