diff --git a/.env.testing b/.env.testing
index 1a6022cbcf..789c5a2b02 100644
--- a/.env.testing
+++ b/.env.testing
@@ -8,8 +8,8 @@ DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
-CACHE_DRIVER=file
-SESSION_DRIVER=file
+CACHE_DRIVER=array
+SESSION_DRIVER=array
EMAIL_SMTP=
EMAIL_USERNAME=
diff --git a/.travis.yml b/.travis.yml
index ee3f0642c3..81cac8830e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,7 +16,7 @@ install:
- mv -v .env.testing .env
script:
- - phpunit --debug
+ - phpunit
after_script:
- php vendor/bin/coveralls
diff --git a/README.md b/README.md
index 12f92844b6..c44c790cac 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Firefly III (v3.4.0.1)
+Firefly III (v3.4.0.2)
===========
[](https://travis-ci.org/JC5/firefly-iii)
diff --git a/app/Handlers/Events/UpdateJournalConnection.php b/app/Handlers/Events/UpdateJournalConnection.php
index 20803aacf4..f18f0bf17e 100644
--- a/app/Handlers/Events/UpdateJournalConnection.php
+++ b/app/Handlers/Events/UpdateJournalConnection.php
@@ -2,7 +2,6 @@
use FireflyIII\Events\JournalSaved;
use FireflyIII\Models\PiggyBankEvent;
-use FireflyIII\Models\Transaction;
/**
* Class UpdateJournalConnection
diff --git a/app/Helpers/Help/Help.php b/app/Helpers/Help/Help.php
index c7e77a5d2d..eddad2614f 100644
--- a/app/Helpers/Help/Help.php
+++ b/app/Helpers/Help/Help.php
@@ -84,4 +84,4 @@ class Help implements HelpInterface
{
return Cache::has('help.' . $route . '.title') && Cache::has('help.' . $route . '.text');
}
-}
\ No newline at end of file
+}
diff --git a/app/Helpers/Help/HelpInterface.php b/app/Helpers/Help/HelpInterface.php
index b11e29b4ab..3807c2c1ff 100644
--- a/app/Helpers/Help/HelpInterface.php
+++ b/app/Helpers/Help/HelpInterface.php
@@ -45,4 +45,4 @@ interface HelpInterface
* @return void
*/
public function putInCache($route, array $content);
-}
\ No newline at end of file
+}
diff --git a/app/Http/Controllers/BillController.php b/app/Http/Controllers/BillController.php
index 8b21054389..d525a1094f 100644
--- a/app/Http/Controllers/BillController.php
+++ b/app/Http/Controllers/BillController.php
@@ -4,7 +4,6 @@ use Config;
use FireflyIII\Http\Requests;
use FireflyIII\Http\Requests\BillFormRequest;
use FireflyIII\Models\Account;
-use FireflyIII\Models\AccountType;
use FireflyIII\Models\Bill;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php
index 5dcca9fc59..27205a295b 100644
--- a/app/Http/Controllers/BudgetController.php
+++ b/app/Http/Controllers/BudgetController.php
@@ -5,7 +5,6 @@ use Carbon\Carbon;
use FireflyIII\Http\Requests;
use FireflyIII\Http\Requests\BudgetFormRequest;
use FireflyIII\Models\Budget;
-use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use Input;
diff --git a/app/Http/Controllers/JsonController.php b/app/Http/Controllers/JsonController.php
index 02c326d2fd..43863523c9 100644
--- a/app/Http/Controllers/JsonController.php
+++ b/app/Http/Controllers/JsonController.php
@@ -6,8 +6,6 @@ use FireflyIII\Helpers\Report\ReportQueryInterface;
use FireflyIII\Models\Account;
use FireflyIII\Models\Bill;
use FireflyIII\Models\Preference;
-use FireflyIII\Models\Transaction;
-use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
@@ -187,25 +185,6 @@ class JsonController extends Controller
}
- /**
- * Returns a JSON list of all beneficiaries.
- *
- * @param TagRepositoryInterface $tagRepository
- *
- * @return \Illuminate\Http\JsonResponse
- */
- public function tags(TagRepositoryInterface $tagRepository)
- {
- $list = $tagRepository->get();
- $return = [];
- foreach ($list as $entry) {
- $return[] = $entry->tag;
- }
-
- return Response::json($return);
-
- }
-
/**
* @param AccountRepositoryInterface $accountRepository
*
@@ -247,6 +226,25 @@ class JsonController extends Controller
return Response::json(['value' => $pref->data]);
}
+ /**
+ * Returns a JSON list of all beneficiaries.
+ *
+ * @param TagRepositoryInterface $tagRepository
+ *
+ * @return \Illuminate\Http\JsonResponse
+ */
+ public function tags(TagRepositoryInterface $tagRepository)
+ {
+ $list = $tagRepository->get();
+ $return = [];
+ foreach ($list as $entry) {
+ $return[] = $entry->tag;
+ }
+
+ return Response::json($return);
+
+ }
+
/**
* @param JournalRepositoryInterface $repository
* @param $what
diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php
index 6799f4d8d3..8ffa215491 100644
--- a/app/Http/Controllers/PiggyBankController.php
+++ b/app/Http/Controllers/PiggyBankController.php
@@ -6,9 +6,7 @@ use Config;
use ExpandedForm;
use FireflyIII\Http\Requests;
use FireflyIII\Http\Requests\PiggyBankFormRequest;
-use FireflyIII\Models\Account;
use FireflyIII\Models\PiggyBank;
-use FireflyIII\Models\PiggyBankEvent;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
use Illuminate\Support\Collection;
diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php
index 5d54937c4e..77a5daf1f8 100644
--- a/app/Http/Controllers/TagController.php
+++ b/app/Http/Controllers/TagController.php
@@ -22,10 +22,10 @@ use View;
* Remember: a balancingAct takes at most one expense and one transfer.
* an advancePayment takes at most one expense, infinite deposits and NO transfers.
*
- * TODO transaction can only have one advancePayment OR balancingAct.
- * TODO Other attempts to put in such a tag are blocked.
- * TODO also show an error when editing a tag and it becomes either
- * TODO of these two types. Or rather, block editing of the tag.
+ * transaction can only have one advancePayment OR balancingAct.
+ * Other attempts to put in such a tag are blocked.
+ * also show an error when editing a tag and it becomes either
+ * of these two types. Or rather, block editing of the tag.
*
* @package FireflyIII\Http\Controllers
*/
@@ -322,4 +322,4 @@ class TagController extends Controller
// redirect to previous URL.
return Redirect::to(Session::get('tags.edit.url'));
}
-}
\ No newline at end of file
+}
diff --git a/app/Http/Requests/TagFormRequest.php b/app/Http/Requests/TagFormRequest.php
index ad04f50a29..3909b177b2 100644
--- a/app/Http/Requests/TagFormRequest.php
+++ b/app/Http/Requests/TagFormRequest.php
@@ -50,4 +50,4 @@ class TagFormRequest extends Request
'tagMode' => 'required|in:nothing,balancingAct,advancePayment'
];
}
-}
\ No newline at end of file
+}
diff --git a/app/Http/breadcrumbs.php b/app/Http/breadcrumbs.php
index 672ae8ff5a..7705a04648 100644
--- a/app/Http/breadcrumbs.php
+++ b/app/Http/breadcrumbs.php
@@ -415,4 +415,4 @@ Breadcrumbs::register(
$breadcrumbs->parent('tags.index');
$breadcrumbs->push(e($tag->tag), route('tags.show', $tag->id));
}
-);
\ No newline at end of file
+);
diff --git a/app/Models/Account.php b/app/Models/Account.php
index 77c8a66086..dcea8ec26e 100644
--- a/app/Models/Account.php
+++ b/app/Models/Account.php
@@ -60,6 +60,31 @@ class Account extends Model
}
+ /**
+ * @param array $fields
+ *
+ * @return Account|null
+ */
+ public static function firstOrNullEncrypted(array $fields)
+ {
+ // everything but the name:
+ $query = Account::orderBy('id');
+ foreach ($fields as $name => $value) {
+ if ($name != 'name') {
+ $query->where($name, $value);
+ }
+ }
+ $set = $query->get(['accounts.*']);
+ /** @var Account $account */
+ foreach ($set as $account) {
+ if ($account->name == $fields['name']) {
+ return $account;
+ }
+ }
+
+ return null;
+ }
+
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
diff --git a/app/Models/PiggyBankRepetition.php b/app/Models/PiggyBankRepetition.php
index 6c5c939b16..07202b672e 100644
--- a/app/Models/PiggyBankRepetition.php
+++ b/app/Models/PiggyBankRepetition.php
@@ -12,6 +12,8 @@ use Illuminate\Database\Eloquent\Model;
class PiggyBankRepetition extends Model
{
+ protected $fillable = ['piggy_bank_id', 'startdate', 'targetdate', 'currentamount'];
+
/**
* @return array
*/
diff --git a/app/Models/Tag.php b/app/Models/Tag.php
index cac823555c..11ce119559 100644
--- a/app/Models/Tag.php
+++ b/app/Models/Tag.php
@@ -125,4 +125,4 @@ class Tag extends Model
{
return $this->belongsTo('FireflyIII\User');
}
-}
\ No newline at end of file
+}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index a9d54e9e0f..0c85491199 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -1,7 +1,6 @@
endBalance - $account->piggyBalance;
$account->difference = $difference;
- $account->percentage = $difference != 0 ? round((($difference / $account->endBalance) * 100)) : 100;
+ $account->percentage = $difference != 0 && $account->endBalance != 0 ? round((($difference / $account->endBalance) * 100)) : 100;
}
);
@@ -269,6 +271,7 @@ class AccountRepository implements AccountRepositoryInterface
$pct = $pct > 100 ? 100 : $pct;
$account->difference = $diff;
$account->percentage = round($pct);
+
}
);
@@ -287,7 +290,7 @@ class AccountRepository implements AccountRepositoryInterface
public function getTransfersInRange(Account $account, Carbon $start, Carbon $end)
{
return TransactionJournal::whereIn(
- 'id', function ($q) use ($account, $start, $end) {
+ 'id', function (Builder $q) use ($account, $start, $end) {
$q->select('transaction_journals.id')
->from('transactions')
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
@@ -310,7 +313,7 @@ class AccountRepository implements AccountRepositoryInterface
*/
public function leftOnAccount(Account $account)
{
- $balance = \Steam::balance($account, null, true);
+ $balance = Steam::balance($account, null, true);
/** @var PiggyBank $p */
foreach ($account->piggybanks()->get() as $p) {
$balance -= $p->currentRelevantRep()->currentamount;
@@ -440,13 +443,20 @@ class AccountRepository implements AccountRepositoryInterface
if (!$newAccount->isValid()) {
// does the account already exist?
- $existingAccount = Account::where('user_id', $data['user'])->where('account_type_id', $accountType->id)->where('name', $data['name'])->first();
+ $searchData = [
+ 'user_id' => $data['user'],
+ 'account_type_id' => $accountType->id,
+ 'name' => $data['name']
+ ];
+ $existingAccount = Account::firstOrNullEncrypted($searchData);
if (!$existingAccount) {
Log::error('Account create error: ' . $newAccount->getErrors()->toJson());
App::abort(500);
-
+ // @codeCoverageIgnoreStart
}
+ // @codeCoverageIgnoreEnd
$newAccount = $existingAccount;
+
}
$newAccount->save();
diff --git a/app/Repositories/Bill/BillRepository.php b/app/Repositories/Bill/BillRepository.php
index 58d30446e1..41fabfceec 100644
--- a/app/Repositories/Bill/BillRepository.php
+++ b/app/Repositories/Bill/BillRepository.php
@@ -212,7 +212,7 @@ class BillRepository implements BillRepositoryInterface
* when the current period has a transaction journal.
*/
/** @var \Carbon\Carbon $obj */
- $obj = new Carbon;
+ $obj = new Carbon;
$today = Navigation::addPeriod($obj, $bill->repeat_freq, 0);
$skip = $bill->skip + 1;
diff --git a/app/Repositories/Category/CategoryRepositoryInterface.php b/app/Repositories/Category/CategoryRepositoryInterface.php
index 3cf025e354..30456995a1 100644
--- a/app/Repositories/Category/CategoryRepositoryInterface.php
+++ b/app/Repositories/Category/CategoryRepositoryInterface.php
@@ -71,9 +71,9 @@ interface CategoryRepositoryInterface
public function getWithoutCategory(Carbon $start, Carbon $end);
/**
- * @param Category $category
- * @param \Carbon\Carbon $start
- * @param \Carbon\Carbon $end
+ * @param Category $category
+ * @param \Carbon\Carbon $start
+ * @param \Carbon\Carbon $end
*
* @return float
*/
diff --git a/app/Repositories/Tag/TagRepository.php b/app/Repositories/Tag/TagRepository.php
index 301fedb267..0fc8c4b42b 100644
--- a/app/Repositories/Tag/TagRepository.php
+++ b/app/Repositories/Tag/TagRepository.php
@@ -177,4 +177,4 @@ class TagRepository implements TagRepositoryInterface
return $tag;
}
-}
\ No newline at end of file
+}
diff --git a/app/Repositories/Tag/TagRepositoryInterface.php b/app/Repositories/Tag/TagRepositoryInterface.php
index e2a5c03bff..94d5e44cb2 100644
--- a/app/Repositories/Tag/TagRepositoryInterface.php
+++ b/app/Repositories/Tag/TagRepositoryInterface.php
@@ -49,4 +49,4 @@ interface TagRepositoryInterface
* @return boolean
*/
public function connect(TransactionJournal $journal, Tag $tag);
-}
\ No newline at end of file
+}
diff --git a/app/Support/ExpandedForm.php b/app/Support/ExpandedForm.php
index a28c87ba02..35eb8855b9 100644
--- a/app/Support/ExpandedForm.php
+++ b/app/Support/ExpandedForm.php
@@ -3,7 +3,6 @@
namespace FireflyIII\Support;
use Amount as Amt;
-use FireflyIII\Models\TransactionCurrency;
use Illuminate\Support\Collection;
use Illuminate\Support\MessageBag;
use Input;
diff --git a/app/Support/Navigation.php b/app/Support/Navigation.php
index 69025ba3b2..470089f369 100644
--- a/app/Support/Navigation.php
+++ b/app/Support/Navigation.php
@@ -384,7 +384,7 @@ class Navigation
}
/**
- * @param $range
+ * @param $range
* @param \Carbon\Carbon $start
*
* @return \Carbon\Carbon
diff --git a/app/Support/Search/Search.php b/app/Support/Search/Search.php
index e07e538ecf..a493ad0741 100644
--- a/app/Support/Search/Search.php
+++ b/app/Support/Search/Search.php
@@ -121,6 +121,7 @@ class Search implements SearchInterface
return $journal;
}
}
+
return null;
}
diff --git a/app/Support/Steam.php b/app/Support/Steam.php
index 8206024886..22fa07e211 100644
--- a/app/Support/Steam.php
+++ b/app/Support/Steam.php
@@ -18,8 +18,8 @@ class Steam
/**
*
* @param \FireflyIII\Models\Account $account
- * @param \Carbon\Carbon $date
- * @param bool $ignoreVirtualBalance
+ * @param \Carbon\Carbon $date
+ * @param bool $ignoreVirtualBalance
*
* @return float
*/
diff --git a/app/Support/Twig/Budget.php b/app/Support/Twig/Budget.php
index 39ec2a1e04..046e741446 100644
--- a/app/Support/Twig/Budget.php
+++ b/app/Support/Twig/Budget.php
@@ -50,4 +50,4 @@ class Budget extends Twig_Extension
{
return 'FireflyIII\Support\Twig\Budget';
}
-}
\ No newline at end of file
+}
diff --git a/app/Support/Twig/General.php b/app/Support/Twig/General.php
index 0be9007420..1d36857366 100644
--- a/app/Support/Twig/General.php
+++ b/app/Support/Twig/General.php
@@ -143,4 +143,4 @@ class General extends Twig_Extension
return 'FireflyIII\Support\Twig\General';
}
-}
\ No newline at end of file
+}
diff --git a/app/Support/Twig/Journal.php b/app/Support/Twig/Journal.php
index 70c088281e..bb63d656c4 100644
--- a/app/Support/Twig/Journal.php
+++ b/app/Support/Twig/Journal.php
@@ -39,6 +39,7 @@ class Journal extends Twig_Extension
if ($type == 'Opening balance') {
return '';
}
+
return '';
}, ['is_safe' => ['html']]
@@ -96,4 +97,4 @@ class Journal extends Twig_Extension
{
return 'FireflyIII\Support\Twig\Journals';
}
-}
\ No newline at end of file
+}
diff --git a/app/Support/Twig/PiggyBank.php b/app/Support/Twig/PiggyBank.php
index df4137670b..6ff4aafe90 100644
--- a/app/Support/Twig/PiggyBank.php
+++ b/app/Support/Twig/PiggyBank.php
@@ -39,4 +39,4 @@ class PiggyBank extends Twig_Extension
{
return 'FireflyIII\Support\Twig\PiggyBank';
}
-}
\ No newline at end of file
+}
diff --git a/pu.sh b/pu.sh
index cbd5c6fbf3..714a38b315 100755
--- a/pu.sh
+++ b/pu.sh
@@ -11,7 +11,7 @@ fi
if [ ! -z "$1" ]
then
- phpunit --verbose tests/controllers/$1.php
+ phpunit --verbose tests/repositories/$1.php
fi
# restore .env file
diff --git a/resources/twig/accounts/create.twig b/resources/twig/accounts/create.twig
index 6ed1f2dfaf..0314aa8892 100644
--- a/resources/twig/accounts/create.twig
+++ b/resources/twig/accounts/create.twig
@@ -58,4 +58,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/accounts/show.twig b/resources/twig/accounts/show.twig
index 59ea7654ae..6822a6833c 100644
--- a/resources/twig/accounts/show.twig
+++ b/resources/twig/accounts/show.twig
@@ -57,4 +57,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/auth/password.twig b/resources/twig/auth/password.twig
index 720bce9a88..8d209f1ab4 100644
--- a/resources/twig/auth/password.twig
+++ b/resources/twig/auth/password.twig
@@ -42,4 +42,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/bills/delete.twig b/resources/twig/bills/delete.twig
index f58fd3db68..ff205c0f50 100644
--- a/resources/twig/bills/delete.twig
+++ b/resources/twig/bills/delete.twig
@@ -29,4 +29,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/bills/index.twig b/resources/twig/bills/index.twig
index ef488037a5..96b0ba7949 100644
--- a/resources/twig/bills/index.twig
+++ b/resources/twig/bills/index.twig
@@ -24,4 +24,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/bills/show.twig b/resources/twig/bills/show.twig
index e6297668a7..5c3ed858f9 100644
--- a/resources/twig/bills/show.twig
+++ b/resources/twig/bills/show.twig
@@ -110,4 +110,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/budgets/delete.twig b/resources/twig/budgets/delete.twig
index e1b7e5ef95..ea7450b25f 100644
--- a/resources/twig/budgets/delete.twig
+++ b/resources/twig/budgets/delete.twig
@@ -40,4 +40,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/budgets/noBudget.twig b/resources/twig/budgets/noBudget.twig
index 2ff705afe8..51de6c5954 100644
--- a/resources/twig/budgets/noBudget.twig
+++ b/resources/twig/budgets/noBudget.twig
@@ -14,4 +14,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/categories/index.twig b/resources/twig/categories/index.twig
index 82e98ac0e1..ae3c267a26 100644
--- a/resources/twig/categories/index.twig
+++ b/resources/twig/categories/index.twig
@@ -37,4 +37,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/categories/noCategory.twig b/resources/twig/categories/noCategory.twig
index e85d86c942..fa4ec948a0 100644
--- a/resources/twig/categories/noCategory.twig
+++ b/resources/twig/categories/noCategory.twig
@@ -15,4 +15,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/categories/show.twig b/resources/twig/categories/show.twig
index b830ccacf0..c231eb8d18 100644
--- a/resources/twig/categories/show.twig
+++ b/resources/twig/categories/show.twig
@@ -51,4 +51,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/currency/delete.twig b/resources/twig/currency/delete.twig
index b90be97c5c..b3fa433820 100644
--- a/resources/twig/currency/delete.twig
+++ b/resources/twig/currency/delete.twig
@@ -23,4 +23,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/currency/edit.twig b/resources/twig/currency/edit.twig
index 8d356fcf4f..11b33708df 100644
--- a/resources/twig/currency/edit.twig
+++ b/resources/twig/currency/edit.twig
@@ -42,4 +42,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/currency/index.twig b/resources/twig/currency/index.twig
index 77e928bee6..b807479e90 100644
--- a/resources/twig/currency/index.twig
+++ b/resources/twig/currency/index.twig
@@ -46,4 +46,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/form/options.twig b/resources/twig/form/options.twig
index 9af8428ba2..5ba3fcb96d 100644
--- a/resources/twig/form/options.twig
+++ b/resources/twig/form/options.twig
@@ -27,4 +27,4 @@
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/resources/twig/index.twig b/resources/twig/index.twig
index e3c94d519f..990aa88fdc 100644
--- a/resources/twig/index.twig
+++ b/resources/twig/index.twig
@@ -209,4 +209,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/list/accounts.twig b/resources/twig/list/accounts.twig
index 200f09eb04..4cc47af39a 100644
--- a/resources/twig/list/accounts.twig
+++ b/resources/twig/list/accounts.twig
@@ -56,4 +56,4 @@
{% endfor %}
-
\ No newline at end of file
+
diff --git a/resources/twig/list/journals.twig b/resources/twig/list/journals.twig
index 860917c836..21c3742665 100644
--- a/resources/twig/list/journals.twig
+++ b/resources/twig/list/journals.twig
@@ -110,4 +110,4 @@
{% endfor %}
-{{ journals.render|raw }}
\ No newline at end of file
+{{ journals.render|raw }}
diff --git a/resources/twig/list/piggy-banks.twig b/resources/twig/list/piggy-banks.twig
index ef6cf6be63..b247b253de 100644
--- a/resources/twig/list/piggy-banks.twig
+++ b/resources/twig/list/piggy-banks.twig
@@ -53,4 +53,4 @@
{% endfor %}
-
\ No newline at end of file
+
diff --git a/resources/twig/piggy-banks/index.twig b/resources/twig/piggy-banks/index.twig
index d0d2563fb6..14e1481426 100644
--- a/resources/twig/piggy-banks/index.twig
+++ b/resources/twig/piggy-banks/index.twig
@@ -59,4 +59,4 @@
{% block scripts %}
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/piggy-banks/remove.twig b/resources/twig/piggy-banks/remove.twig
index 657ce02431..529dd6c66e 100644
--- a/resources/twig/piggy-banks/remove.twig
+++ b/resources/twig/piggy-banks/remove.twig
@@ -23,4 +23,4 @@
-
\ No newline at end of file
+
diff --git a/resources/twig/profile/change-password.twig b/resources/twig/profile/change-password.twig
index 16900564f3..0a0cbde5be 100644
--- a/resources/twig/profile/change-password.twig
+++ b/resources/twig/profile/change-password.twig
@@ -52,4 +52,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/profile/delete-account.twig b/resources/twig/profile/delete-account.twig
index f3e5f94e1c..a47c929b32 100644
--- a/resources/twig/profile/delete-account.twig
+++ b/resources/twig/profile/delete-account.twig
@@ -46,4 +46,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/profile/index.twig b/resources/twig/profile/index.twig
index 244a1a6e35..525da37b25 100644
--- a/resources/twig/profile/index.twig
+++ b/resources/twig/profile/index.twig
@@ -16,4 +16,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/reminders/show.twig b/resources/twig/reminders/show.twig
index b78eb138a0..da560949eb 100644
--- a/resources/twig/reminders/show.twig
+++ b/resources/twig/reminders/show.twig
@@ -37,4 +37,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/search/index.twig b/resources/twig/search/index.twig
index a4783911cc..c00b12b931 100644
--- a/resources/twig/search/index.twig
+++ b/resources/twig/search/index.twig
@@ -103,4 +103,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/tags/create.twig b/resources/twig/tags/create.twig
index ab957ce3bf..7c79e29cb5 100644
--- a/resources/twig/tags/create.twig
+++ b/resources/twig/tags/create.twig
@@ -82,4 +82,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/tags/edit.twig b/resources/twig/tags/edit.twig
index 85f5e3503f..6ad950374c 100644
--- a/resources/twig/tags/edit.twig
+++ b/resources/twig/tags/edit.twig
@@ -84,4 +84,4 @@
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/resources/twig/tags/index.twig b/resources/twig/tags/index.twig
index 9b520969a5..94b1e5553a 100644
--- a/resources/twig/tags/index.twig
+++ b/resources/twig/tags/index.twig
@@ -72,4 +72,4 @@
{% endblock %}
{% block scripts %}
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/tests/controllers/BillControllerTest.php b/tests/controllers/BillControllerTest.php
index 846e63298a..e217bdef89 100644
--- a/tests/controllers/BillControllerTest.php
+++ b/tests/controllers/BillControllerTest.php
@@ -253,4 +253,4 @@ class BillControllerTest extends TestCase
$this->assertResponseStatus(302);
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/BudgetControllerTest.php b/tests/controllers/BudgetControllerTest.php
index edacbcd133..9a397fc61d 100644
--- a/tests/controllers/BudgetControllerTest.php
+++ b/tests/controllers/BudgetControllerTest.php
@@ -316,4 +316,4 @@ class BudgetControllerTest extends TestCase
$this->assertResponseOk();
$this->assertViewHas('amount');
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/CategoryControllerTest.php b/tests/controllers/CategoryControllerTest.php
index c4ca304ce6..a33a900b0c 100644
--- a/tests/controllers/CategoryControllerTest.php
+++ b/tests/controllers/CategoryControllerTest.php
@@ -222,4 +222,4 @@ class CategoryControllerTest extends TestCase
$this->assertResponseStatus(302);
$this->assertSessionHas('success', 'Category "' . $category->name . '" updated.');
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/CurrencyControllerTest.php b/tests/controllers/CurrencyControllerTest.php
index b06e1cb67a..64ef026fb7 100644
--- a/tests/controllers/CurrencyControllerTest.php
+++ b/tests/controllers/CurrencyControllerTest.php
@@ -214,4 +214,4 @@ class CurrencyControllerTest extends TestCase
$this->assertResponseStatus(302);
$this->assertSessionHas('success');
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/GoogleChartControllerTest.php b/tests/controllers/GoogleChartControllerTest.php
index 89ebf3ef20..ed7bdf2969 100644
--- a/tests/controllers/GoogleChartControllerTest.php
+++ b/tests/controllers/GoogleChartControllerTest.php
@@ -344,4 +344,4 @@ class GoogleChartControllerTest extends TestCase
$this->call('GET', '/chart/reports/income-expenses-sum/2015');
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/HelpControllerTest.php b/tests/controllers/HelpControllerTest.php
index d6a6f23128..91c79255e7 100644
--- a/tests/controllers/HelpControllerTest.php
+++ b/tests/controllers/HelpControllerTest.php
@@ -95,4 +95,4 @@ class HelpControllerTest extends TestCase
$this->call('GET', '/help/accounts.index');
$this->assertResponseOk();
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/JsonControllerTest.php b/tests/controllers/JsonControllerTest.php
index de5c95e6cd..8d34d94b9f 100644
--- a/tests/controllers/JsonControllerTest.php
+++ b/tests/controllers/JsonControllerTest.php
@@ -224,4 +224,4 @@ class JsonControllerTest extends TestCase
$this->assertResponseOk();
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/PreferencesControllerTest.php b/tests/controllers/PreferencesControllerTest.php
index e45178a308..2d843d2bed 100644
--- a/tests/controllers/PreferencesControllerTest.php
+++ b/tests/controllers/PreferencesControllerTest.php
@@ -82,4 +82,4 @@ class PreferencesControllerTest extends TestCase
$this->call('POST', '/preferences', $data);
$this->assertResponseStatus(302);
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/ProfileControllerTest.php b/tests/controllers/ProfileControllerTest.php
index 8bc447f12b..30bb3b6c70 100644
--- a/tests/controllers/ProfileControllerTest.php
+++ b/tests/controllers/ProfileControllerTest.php
@@ -167,4 +167,4 @@ class ProfileControllerTest extends TestCase
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/ReminderControllerTest.php b/tests/controllers/ReminderControllerTest.php
index 43ab7a69c1..db993916b0 100644
--- a/tests/controllers/ReminderControllerTest.php
+++ b/tests/controllers/ReminderControllerTest.php
@@ -97,4 +97,4 @@ class ReminderControllerTest extends TestCase
$this->assertResponseOk();
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/ReportControllerTest.php b/tests/controllers/ReportControllerTest.php
index f75204ef6e..dfe6f6c0a7 100644
--- a/tests/controllers/ReportControllerTest.php
+++ b/tests/controllers/ReportControllerTest.php
@@ -235,4 +235,4 @@ class ReportControllerTest extends TestCase
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/SearchControllerTest.php b/tests/controllers/SearchControllerTest.php
index f4c3a6f8b7..0327cbcd07 100644
--- a/tests/controllers/SearchControllerTest.php
+++ b/tests/controllers/SearchControllerTest.php
@@ -52,4 +52,4 @@ class SearchControllerTest extends TestCase
$this->call('GET', '/search?q=Something');
$this->assertResponseOk();
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/TagControllerTest.php b/tests/controllers/TagControllerTest.php
index bdbab15d69..6b50ca1d91 100644
--- a/tests/controllers/TagControllerTest.php
+++ b/tests/controllers/TagControllerTest.php
@@ -214,4 +214,4 @@ class TagControllerTest extends TestCase
}
-}
\ No newline at end of file
+}
diff --git a/tests/controllers/TransactionControllerTest.php b/tests/controllers/TransactionControllerTest.php
index 6902808bc4..6258d8b06a 100644
--- a/tests/controllers/TransactionControllerTest.php
+++ b/tests/controllers/TransactionControllerTest.php
@@ -360,4 +360,4 @@ class TransactionControllerTest extends TestCase
}
-}
\ No newline at end of file
+}
diff --git a/tests/database/.gitignore b/tests/database/.gitignore
index 6a91a439ea..9b1dffd90f 100644
--- a/tests/database/.gitignore
+++ b/tests/database/.gitignore
@@ -1 +1 @@
-*.sqlite
\ No newline at end of file
+*.sqlite
diff --git a/tests/factories/all.php b/tests/factories/all.php
index d00a36ea9a..4b9075a7cd 100644
--- a/tests/factories/all.php
+++ b/tests/factories/all.php
@@ -61,7 +61,9 @@ FactoryMuffin::define(
'account_type_id' => 'factory|FireflyIII\Models\AccountType',
'name' => 'word',
'active' => 'boolean',
- 'encrypted' => 'boolean',
+ 'encrypted' => function () {
+ return true;
+ },
'virtual_balance' => 0
]
);
@@ -227,6 +229,19 @@ FactoryMuffin::define(
]
);
+FactoryMuffin::define(
+ 'FireflyIII\Models\PiggyBankRepetition',
+ [
+ 'piggy_bank_id' => 'factory|FireflyIII\Models\PiggyBank',
+ 'startdate' => 'date',
+ 'targetdate' => 'date',
+ 'currentamount' => function () {
+ return rand(1, 100);
+ },
+ ]
+);
+
+
FactoryMuffin::define(
'FireflyIII\Models\PiggyBankEvent',
[
@@ -267,4 +282,4 @@ FactoryMuffin::define(
'encrypted' => '1',
'order' => '0',
]
-);
\ No newline at end of file
+);
diff --git a/tests/repositories/AccountRepositoryTest.php b/tests/repositories/AccountRepositoryTest.php
new file mode 100644
index 0000000000..d635463355
--- /dev/null
+++ b/tests/repositories/AccountRepositoryTest.php
@@ -0,0 +1,774 @@
+object = new AccountRepository;
+ parent::setUp();
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::countAccounts
+ * @todo Implement testCountAccounts().
+ */
+ public function testCountAccounts()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $type = $account->accountType->type;
+ $this->be($account->user);
+
+ $this->assertEquals(1, $this->object->countAccounts([$type]));
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::destroy
+ */
+ public function testDestroy()
+ {
+ // create account:
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $id = $account->id;
+ $this->be($account->user);
+
+
+ $this->object->destroy($account);
+
+ // cannot find account:
+ $this->assertCount(0, Account::whereId($id)->whereNotNull('deleted_at')->get());
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getAccounts
+ */
+ public function testGetAccounts()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $type = $account->accountType->type;
+ $this->be($account->user);
+
+ $this->assertCount(1, $this->object->getAccounts([$type]));
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getCreditCards
+ * @todo Implement testGetCreditCards().
+ */
+ public function testGetCreditCards()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+
+ // create account meta object:
+ $meta = new AccountMeta;
+ $meta->name = 'accountRole';
+ $meta->data = 'ccAsset';
+ $meta->account_id = $account->id;
+ $meta->save();
+
+ // meta account type
+ $meta = new AccountMeta;
+ $meta->name = 'ccType';
+ $meta->data = 'monthlyFull';
+ $meta->account_id = $account->id;
+ $meta->save();
+
+ // login
+ $this->be($account->user);
+
+ // test!
+ $this->assertCount(1, $this->object->getCreditCards());
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getFirstTransaction
+ */
+ public function testGetFirstTransaction()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+
+ // two matching transactions:
+ $first = Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal->id,
+ 'amount' => 100,
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal->id,
+ 'amount' => -100,
+ ]
+ );
+
+ // login
+ $this->be($account->user);
+
+ $oldest = $this->object->getFirstTransaction($journal, $account);
+
+ $this->assertEquals($oldest->amount, $first->amount);
+ $this->assertEquals($oldest->id, $first->id);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getFrontpageAccounts
+ */
+ public function testGetFrontpageAccounts()
+ {
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+
+
+ // making two account types is kind of cheating but it works.
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ /** @var Preference $preference */
+ $preference = FactoryMuffin::create('FireflyIII\Models\Preference');
+ $preference->data = [];
+ $preference->save();
+ $this->be($account->user);
+
+ $set = $this->object->getFrontpageAccounts($preference);
+
+ $this->assertEquals($account->id, $set->first()->id);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getFrontpageAccounts
+ */
+ public function testGetFrontpageAccountsWithPreference()
+ {
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+
+
+ // making two account types is kind of cheating but it works.
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ /** @var Preference $preference */
+ $preference = FactoryMuffin::create('FireflyIII\Models\Preference');
+ $preference->data = [$account->id];
+ $preference->save();
+ $this->be($account->user);
+
+ $set = $this->object->getFrontpageAccounts($preference);
+
+ $this->assertEquals($account->id, $set->first()->id);
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getFrontpageTransactions
+ */
+ public function testGetFrontpageTransactions()
+ {
+ // three journals
+ /** @var Account $account */
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $journal1 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal2 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal3 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+
+ // three dates (one is out of bounds)
+ $journal1->date = new Carbon('2012-01-02');
+ $journal1->user_id = $account->user_id;
+ $journal2->date = new Carbon('2012-01-09');
+ $journal2->user_id = $account->user_id;
+ $journal3->date = new Carbon('2012-02-02');
+ $journal3->user_id = $account->user_id;
+
+ // save all
+ $journal1->save();
+ $journal2->save();
+ $journal3->save();
+
+ // transactions to match the dates (one per journal will do)
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal1->id,
+ 'amount' => 100
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal2->id,
+ 'amount' => 100
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal3->id,
+ 'amount' => 100
+ ]
+ );
+
+ // be user
+ $this->be($journal1->user);
+
+ // get set:
+
+ $set = $this->object->getFrontpageTransactions($account, new Carbon('2012-01-01'), new Carbon('2012-01-31'));
+
+ // should have two left.
+ $this->assertCount(2, $set);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getJournals
+ */
+ public function testGetJournals()
+ {
+ $date = new Carbon;
+ // three journals
+ /** @var Account $account */
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $journal1 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal2 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal3 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+
+ // three dates (one is out of bounds)
+ $journal1->date = $date;
+ $journal1->user_id = $account->user_id;
+ $journal2->date = $date;
+ $journal2->user_id = $account->user_id;
+ $journal3->date = $date;
+ $journal3->user_id = $account->user_id;
+
+ // save all
+ $journal1->save();
+ $journal2->save();
+ $journal3->save();
+
+ // transactions to match the dates (one per journal will do)
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal1->id,
+ 'amount' => 100
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal2->id,
+ 'amount' => 100
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal3->id,
+ 'amount' => 100
+ ]
+ );
+
+ // be user
+ $this->be($journal1->user);
+
+ // get paginator:
+ /** @var LengthAwarePaginator $paginator */
+ $paginator = $this->object->getJournals($account, 1);
+
+ // should have three entries:
+ $this->assertEquals(3, $paginator->count());
+ $this->assertEquals(1, $paginator->currentPage());
+ $this->assertFalse($paginator->isEmpty());
+
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getLastActivity
+ */
+ public function testGetLastActivity()
+ {
+ $date = new Carbon('2012-02-02');
+ // one journal
+ /** @var Account $account */
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal->date = $date;
+ $journal->user_id = $account->user_id;
+ $journal->save();
+
+ // transaction to match the date (one will do)
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal->id,
+ 'amount' => 100
+ ]
+ );
+
+ // be user
+ $this->be($journal->user);
+
+ $latest = $this->object->getLastActivity($account);
+ $this->assertEquals($date->format('Y-m-d'), $latest->format('Y-m-d'));
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getLastActivity
+ */
+ public function testGetLastActivityNoActivity()
+ {
+ /** @var Account $account */
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $this->be($account->user);
+
+ $latest = $this->object->getLastActivity($account);
+ $this->assertnull($latest);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getPiggyBankAccounts
+ */
+ public function testGetPiggyBankAccounts()
+ {
+ $date = Carbon::now()->startOfMonth()->addDays(3);
+ /*
+ * Quite the collection of objects for this one.
+ */
+ $piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $piggyBankRepetition = $piggyBank->piggybankRepetitions()->first();
+ /*
+ * Update id's to match each other:
+ */
+ $piggyBankRepetition->currentamount = rand(1, 100);
+ $piggyBankRepetition->startdate = $date;
+ $piggyBankRepetition->targetdate = $date;
+ $piggyBank->account_id = $account->id;
+ $piggyBankRepetition->save();
+ $piggyBank->save();
+
+ /*
+ * Put dates in session:
+ */
+ $this->session(['start' => Carbon::now()->startOfMonth(), 'end' => Carbon::now()->endOfMonth()]);
+
+ /*
+ * Run method:
+ */
+ $this->be($account->user);
+ $collection = $this->object->getPiggyBankAccounts();
+
+ $this->assertCount(1, $collection);
+ $this->assertEquals($collection->first()->id, $account->id);
+ $this->assertEquals($collection->first()->piggyBalance, $piggyBankRepetition->currentamount);
+ $this->assertEquals(0, $collection->first()->startBalance);
+ $this->assertEquals(0, $collection->first()->endBalance);
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getSavingsAccounts
+ */
+ public function testGetSavingsAccounts()
+ {
+ // create three accounts:
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ $type = FactoryMuffin::create('FireflyIII\Models\AccountType');
+ $account1 = FactoryMuffin::create('FireflyIII\Models\Account');
+ $account1->account_type_id = $type->id;
+ $account2 = FactoryMuffin::create('FireflyIII\Models\Account');
+ $account2->account_type_id = $type->id;
+ $account3 = FactoryMuffin::create('FireflyIII\Models\Account');
+ $account3->account_type_id = $type->id;
+
+ // make them savings accounts:
+ $meta = new AccountMeta;
+ $meta->name = 'accountRole';
+ $meta->data = 'savingAsset';
+ $meta->account_id = $account1->id;
+ $meta->save();
+
+ $meta = new AccountMeta;
+ $meta->name = 'accountRole';
+ $meta->data = 'savingAsset';
+ $meta->account_id = $account2->id;
+ $meta->save();
+
+ $meta = new AccountMeta;
+ $meta->name = 'accountRole';
+ $meta->data = 'savingAsset';
+ $meta->account_id = $account3->id;
+ $meta->save();
+
+ // assign to the same user:
+ $account2->user_id = $account1->user_id;
+ $account3->user_id = $account1->user_id;
+ $account1->save();
+ $account2->save();
+ $account3->save();
+ $this->be($account1->user);
+
+ // mock steam balance:
+ Steam::shouldReceive('balance')->andReturn(0, 0, 1, 2, 4, 3);
+
+ // get the result from the method:
+ $result = $this->object->getSavingsAccounts();
+
+ $this->assertEquals(0, $result->get(0)->difference);
+ $this->assertEquals(1, $result->get(1)->difference);
+ $this->assertEquals(-1, $result->get(2)->difference);
+
+ $this->assertEquals(100, $result->get(0)->percentage);
+ $this->assertEquals(100, $result->get(1)->percentage);
+ $this->assertEquals(25, $result->get(2)->percentage);
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::getTransfersInRange
+ * @todo Implement testGetTransfersInRange().
+ */
+ public function testGetTransfersInRange()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+
+ $date = new Carbon;
+
+ // three transfers, two out of range:
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ $journal1 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal2 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal3 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $journal2->transaction_type_id = $journal1->transaction_type_id;
+ $journal3->transaction_type_id = $journal1->transaction_type_id;
+
+ // three transactions:
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal1->id,
+ 'amount' => 100
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal2->id,
+ 'amount' => 100
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal3->id,
+ 'amount' => 100
+ ]
+ );
+
+ // check date:
+ $start = new Carbon('2014-01-01');
+ $end = new Carbon('2014-01-31');
+ $inRange = new Carbon('2014-01-15');
+ $before = new Carbon('2013-01-15');
+ $after = new Carbon('2015-01-15');
+
+ // journal 1 will match:
+ $journal1->date = $inRange;
+ $journal1->user_id = $account->user_id;
+ $journal2->date = $before;
+ $journal2->user_id = $account->user_id;
+ $journal3->date = $after;
+ $journal3->user_id = $account->user_id;
+ $journal1->save();
+ $journal2->save();
+ $journal3->save();
+ $this->be($account->user);
+
+ $set = $this->object->getTransfersInRange($account, $start, $end);
+
+
+ $this->assertEquals(1, $set->count());
+ $this->assertEquals(100, $set->first()->amount);
+ $this->assertEquals($journal1->description, $set->first()->description);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::leftOnAccount
+ */
+ public function testLeftOnAccount()
+ {
+ $piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank');
+ $piggyBankRepetition = $piggyBank->piggybankRepetitions()->first();
+ $piggyBankRepetition->currentamount = rand(1, 100);
+ $piggyBankRepetition->save();
+ $this->be($piggyBank->account->user);
+
+
+ $result = $this->object->leftOnAccount($piggyBank->account);
+
+ $this->assertEquals($piggyBankRepetition->currentamount * -1, $result);
+
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::openingBalanceTransaction
+ */
+ public function testOpeningBalanceTransaction()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $journal1 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ $journal2 = FactoryMuffin::create('FireflyIII\Models\TransactionJournal');
+ // two transactions:
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal1->id,
+ 'amount' => 100
+ ]
+ );
+ Transaction::create(
+ [
+ 'account_id' => $account->id,
+ 'transaction_journal_id' => $journal2->id,
+ 'amount' => 100
+ ]
+ );
+
+ // dates
+ $one = new Carbon('2013-01-15');
+ $two = new Carbon('2015-01-15');
+
+ // journal 1 will match:
+ $journal1->date = $one;
+ $journal1->user_id = $account->user_id;
+ $journal2->date = $two;
+ $journal2->user_id = $account->user_id;
+ $journal1->save();
+ $journal2->save();
+
+
+ $this->be($account->user);
+
+ $result = $this->object->openingBalanceTransaction($account);
+ $this->assertEquals($journal1->id, $result->id);
+ $this->assertEquals($journal1->description, $result->description);
+ $this->assertEquals(100, $result->amount);
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::openingBalanceTransaction
+ */
+ public function testOpeningBalanceTransactionNull()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ $this->be($account->user);
+
+ $result = $this->object->openingBalanceTransaction($account);
+ $this->assertNull($result);
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::store
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeAccount
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeMetadata
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeInitialBalance
+ */
+ public function testStore()
+ {
+ $user = FactoryMuffin::create('FireflyIII\User');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ $currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
+ $this->be($user);
+
+ $data = [
+ 'accountType' => 'expense',
+ 'user' => $user->id,
+ 'name' => 'Test account #' . rand(1, 100),
+ 'active' => true,
+ 'accountRole' => 'testAccount',
+ 'openingBalance' => 100,
+ 'virtualBalance' => 0,
+ 'openingBalanceCurrency' => $currency->id,
+ 'openingBalanceDate' => '2015-01-01',
+ ];
+
+
+ $account = $this->object->store($data);
+
+ $this->assertEquals($data['name'], $account->name);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::store
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeAccount
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeMetadata
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeInitialBalance
+ */
+ public function testStoreWithNegativeInitialBalance()
+ {
+ $user = FactoryMuffin::create('FireflyIII\User');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ $currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
+ $this->be($user);
+
+ $data = [
+ 'accountType' => 'expense',
+ 'user' => $user->id,
+ 'name' => 'Test account #' . rand(1, 100),
+ 'active' => true,
+ 'accountRole' => 'testAccount',
+ 'openingBalance' => -100,
+ 'virtualBalance' => 0,
+ 'openingBalanceCurrency' => $currency->id,
+ 'openingBalanceDate' => '2015-01-01',
+ ];
+
+
+ $account = $this->object->store($data);
+
+ $this->assertEquals($data['name'], $account->name);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::store
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeAccount
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeMetadata
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeInitialBalance
+ */
+ public function testStoreWithExistingAccount()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ $currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
+ $this->be($account->user);
+
+
+ $data = [
+ 'accountType' => 'expense',
+ 'user' => $account->user->id,
+ 'name' => $account->name,
+ 'active' => $account->active,
+ 'accountRole' => 'testAccount',
+ 'openingBalance' => 0,
+ 'virtualBalance' => 0,
+ 'openingBalanceCurrency' => $currency->id,
+ 'openingBalanceDate' => '2015-01-01',
+ ];
+
+
+ $newAccount = $this->object->store($data);
+
+ $this->assertEquals($account->name, $newAccount->name);
+ $this->assertEquals($account->id, $newAccount->id);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::store
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeAccount
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeMetadata
+ * @covers FireflyIII\Repositories\Account\AccountRepository::storeInitialBalance
+ * @expectedException Symfony\Component\HttpKernel\Exception\HttpException
+ */
+ public function testStoreWithInvalidAccountData()
+ {
+ $account = FactoryMuffin::create('FireflyIII\Models\Account');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\AccountType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ FactoryMuffin::create('FireflyIII\Models\TransactionType');
+ $currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency');
+ $this->be($account->user);
+
+
+ $data = [
+ 'accountType' => 'expense',
+ 'user' => $account->user->id + 12,
+ 'name' => $account->name,
+ 'active' => $account->active,
+ 'accountRole' => 'testAccount',
+ 'openingBalance' => 0,
+ 'virtualBalance' => 0,
+ 'openingBalanceCurrency' => $currency->id,
+ 'openingBalanceDate' => '2015-01-01',
+ ];
+
+ $this->object->store($data);
+
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::sumOfEverything
+ */
+ public function testSumOfEverything()
+ {
+ $user = FactoryMuffin::create('FireflyIII\User');
+ $this->be($user);
+
+ $this->assertEquals(0, $this->object->sumOfEverything());
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Account\AccountRepository::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.');
+ }
+}
diff --git a/tests/repositories/BudgetRepositoryTest.php b/tests/repositories/BudgetRepositoryTest.php
new file mode 100644
index 0000000000..5eb3ce86d3
--- /dev/null
+++ b/tests/repositories/BudgetRepositoryTest.php
@@ -0,0 +1,272 @@
+object = new BudgetRepository;
+ parent::setUp();
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+ }
+
+ /**
+ * @covers FireflyIII\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.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Budget\BudgetRepository::destroy
+ * @todo Implement testDestroy().
+ */
+ public function testDestroy()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Budget\BudgetRepository::expensesOnDay
+ * @todo Implement testExpensesOnDay().
+ */
+ public function testExpensesOnDay()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+}
diff --git a/tests/repositories/CategoryRepositoryTest.php b/tests/repositories/CategoryRepositoryTest.php
new file mode 100644
index 0000000000..e5288656c4
--- /dev/null
+++ b/tests/repositories/CategoryRepositoryTest.php
@@ -0,0 +1,176 @@
+object = new CategoryRepository;
+ parent::setUp();
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+ }
+
+ /**
+ * @covers FireflyIII\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.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Category\CategoryRepository::destroy
+ * @todo Implement testDestroy().
+ */
+ public function testDestroy()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+}
diff --git a/tests/repositories/CurrencyRepositoryTest.php b/tests/repositories/CurrencyRepositoryTest.php
new file mode 100644
index 0000000000..756991dd3d
--- /dev/null
+++ b/tests/repositories/CurrencyRepositoryTest.php
@@ -0,0 +1,92 @@
+object = new CurrencyRepository;
+ parent::setUp();
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+ }
+
+ /**
+ * @covers FireflyIII\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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+
+ /**
+ * @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.'
+ );
+ }
+}
diff --git a/tests/repositories/JournalRepositoryTest.php b/tests/repositories/JournalRepositoryTest.php
new file mode 100644
index 0000000000..69840beaef
--- /dev/null
+++ b/tests/repositories/JournalRepositoryTest.php
@@ -0,0 +1,176 @@
+object = new JournalRepository;
+ parent::setUp();
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::deactivateReminder
+ * @todo Implement testDeactivateReminder().
+ */
+ public function testDeactivateReminder()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::delete
+ * @todo Implement testDelete().
+ */
+ public function testDelete()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::first
+ * @todo Implement testFirst().
+ */
+ public function testFirst()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::getAmountBefore
+ * @todo Implement testGetAmountBefore().
+ */
+ public function testGetAmountBefore()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::getJournalsOfType
+ * @todo Implement testGetJournalsOfType().
+ */
+ public function testGetJournalsOfType()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::getJournalsOfTypes
+ * @todo Implement testGetJournalsOfTypes().
+ */
+ public function testGetJournalsOfTypes()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::getTransactionType
+ * @todo Implement testGetTransactionType().
+ */
+ public function testGetTransactionType()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::getWithDate
+ * @todo Implement testGetWithDate().
+ */
+ public function testGetWithDate()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::saveTags
+ * @todo Implement testSaveTags().
+ */
+ public function testSaveTags()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::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.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::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.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Journal\JournalRepository::updateTags
+ * @todo Implement testUpdateTags().
+ */
+ public function testUpdateTags()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+}
diff --git a/tests/repositories/PiggyBankRepositoryTest.php b/tests/repositories/PiggyBankRepositoryTest.php
new file mode 100644
index 0000000000..acbb997467
--- /dev/null
+++ b/tests/repositories/PiggyBankRepositoryTest.php
@@ -0,0 +1,164 @@
+object = new PiggyBankRepository;
+ parent::setUp();
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::calculateParts
+ * @todo Implement testCalculateParts().
+ */
+ public function testCalculateParts()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::createEvent
+ * @todo Implement testCreateEvent().
+ */
+ public function testCreateEvent()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::createPiggyBankPart
+ * @todo Implement testCreatePiggyBankPart().
+ */
+ public function testCreatePiggyBankPart()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::destroy
+ * @todo Implement testDestroy().
+ */
+ public function testDestroy()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::getEventSummarySet
+ * @todo Implement testGetEventSummarySet().
+ */
+ public function testGetEventSummarySet()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::getEvents
+ * @todo Implement testGetEvents().
+ */
+ public function testGetEvents()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::getPiggyBanks
+ * @todo Implement testGetPiggyBanks().
+ */
+ public function testGetPiggyBanks()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::reset
+ * @todo Implement testReset().
+ */
+ public function testReset()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::setOrder
+ * @todo Implement testSetOrder().
+ */
+ public function testSetOrder()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::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.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\PiggyBank\PiggyBankRepository::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.'
+ );
+ }
+}
diff --git a/tests/repositories/ReminderRepositoryTest.php b/tests/repositories/ReminderRepositoryTest.php
new file mode 100644
index 0000000000..55e5277577
--- /dev/null
+++ b/tests/repositories/ReminderRepositoryTest.php
@@ -0,0 +1,81 @@
+object = new ReminderRepository;
+
+ }
+
+ /**
+ * 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\Repositories\Reminder\ReminderRepository::getActiveReminders
+ * @todo Implement testGetActiveReminders().
+ */
+ public function testGetActiveReminders()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Reminder\ReminderRepository::getDismissedReminders
+ * @todo Implement testGetDismissedReminders().
+ */
+ public function testGetDismissedReminders()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Reminder\ReminderRepository::getExpiredReminders
+ * @todo Implement testGetExpiredReminders().
+ */
+ public function testGetExpiredReminders()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Reminder\ReminderRepository::getInactiveReminders
+ * @todo Implement testGetInactiveReminders().
+ */
+ public function testGetInactiveReminders()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+}
diff --git a/tests/repositories/TagRepositoryTest.php b/tests/repositories/TagRepositoryTest.php
new file mode 100644
index 0000000000..fb1b57cd0c
--- /dev/null
+++ b/tests/repositories/TagRepositoryTest.php
@@ -0,0 +1,92 @@
+object = new TagRepository;
+ parent::setUp();
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ public function tearDown()
+ {
+ parent::tearDown();
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Tag\TagRepository::connect
+ * @todo Implement testConnect().
+ */
+ public function testConnect()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Tag\TagRepository::destroy
+ * @todo Implement testDestroy().
+ */
+ public function testDestroy()
+ {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Tag\TagRepository::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.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Tag\TagRepository::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.'
+ );
+ }
+
+ /**
+ * @covers FireflyIII\Repositories\Tag\TagRepository::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.'
+ );
+ }
+}