mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Improve test coverage.
This commit is contained in:
parent
ee95606ec0
commit
6ff4a0b45c
@ -86,6 +86,7 @@ class Note extends Model
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function setTextAttribute($value): void
|
||||
{
|
||||
|
@ -38,7 +38,6 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
* @property int $id
|
||||
* @property User user
|
||||
* @property int $user_id
|
||||
* @property-read \FireflyIII\User $user
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\FireflyIII\Models\Preference newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\FireflyIII\Models\Preference newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\FireflyIII\Models\Preference query()
|
||||
|
@ -147,6 +147,7 @@ class Rule extends Model
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function setDescriptionAttribute($value): void
|
||||
{
|
||||
|
@ -102,10 +102,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
* @property Carbon updated_at
|
||||
* @property string foreign_currency_code
|
||||
* @SuppressWarnings (PHPMD.TooManyPublicMethods)
|
||||
* @property \Illuminate\Support\Carbon|null $created_at
|
||||
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||
* @property \Illuminate\Support\Carbon|null $deleted_at
|
||||
* @property bool $reconciled
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Budget[] $budgets
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Category[] $categories
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\FireflyIII\Models\Transaction after(\Carbon\Carbon $date)
|
||||
@ -185,30 +182,6 @@ class Transaction extends Model
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Route binder. Converts the key in the URL to the specified object (or throw 404).
|
||||
*
|
||||
* @param string $value
|
||||
*
|
||||
* @return Transaction
|
||||
* @throws NotFoundHttpException
|
||||
*/
|
||||
public static function routeBinder(string $value): Transaction
|
||||
{
|
||||
if (auth()->check()) {
|
||||
$transactionId = (int)$value;
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
/** @var Transaction $transaction */
|
||||
$transaction = $user->transactions()->where('transactions.id', $transactionId)->first(['transactions.*']);
|
||||
if (null !== $transaction) {
|
||||
return $transaction;
|
||||
}
|
||||
}
|
||||
|
||||
throw new NotFoundHttpException;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the account this object belongs to.
|
||||
|
@ -46,11 +46,13 @@ class BudgetList implements BinderInterface
|
||||
//Log::debug(sprintf('Now in BudgetList::routeBinder("%s")', $value));
|
||||
if (auth()->check()) {
|
||||
$list = array_unique(array_map('\intval', explode(',', $value)));
|
||||
//Log::debug('List is now', $list);
|
||||
|
||||
// @codeCoverageIgnoreStart
|
||||
if (0 === count($list)) {
|
||||
Log::warning('Budget list count is zero, return 404.');
|
||||
throw new NotFoundHttpException; // @codeCoverageIgnore
|
||||
throw new NotFoundHttpException;
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
/** @var Collection $collection */
|
||||
$collection = auth()->user()->budgets()
|
||||
|
@ -44,8 +44,14 @@ class ImportProvider implements BinderInterface
|
||||
{
|
||||
$repository = app(UserRepositoryInterface::class);
|
||||
// get and filter all import routines:
|
||||
|
||||
if (!auth()->check()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
|
||||
/** @var array $config */
|
||||
$providerNames = array_keys(config('import.enabled'));
|
||||
$providers = [];
|
||||
@ -55,13 +61,20 @@ class ImportProvider implements BinderInterface
|
||||
// only consider enabled providers
|
||||
$enabled = (bool)config(sprintf('import.enabled.%s', $providerName));
|
||||
$allowedForUser = (bool)config(sprintf('import.allowed_for_user.%s', $providerName));
|
||||
$allowedForDemo = (bool)config(sprintf('import.allowed_for_demo.%s', $providerName));
|
||||
if (false === $enabled) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (false === $isDemoUser && false === $allowedForUser && false === $isDebug) {
|
||||
continue; // @codeCoverageIgnore
|
||||
if (false === $allowedForUser && !$isDemoUser) {
|
||||
continue;
|
||||
}
|
||||
if (false === $allowedForDemo && $isDemoUser) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// if (false === $isDemoUser && false === $allowedForUser && false === $isDebug) {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
$providers[$providerName] = [
|
||||
'has_prereq' => (bool)config('import.has_prereq.' . $providerName),
|
||||
|
@ -46,17 +46,20 @@ class TagList implements BinderInterface
|
||||
if (auth()->check()) {
|
||||
$list = array_unique(array_map('\strtolower', explode(',', $value)));
|
||||
Log::debug('List of tags is', $list);
|
||||
// @codeCoverageIgnoreStart
|
||||
if (0 === count($list)) {
|
||||
Log::error('Tag list is empty.');
|
||||
throw new NotFoundHttpException; // @codeCoverageIgnore
|
||||
throw new NotFoundHttpException;
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
||||
/** @var TagRepositoryInterface $repository */
|
||||
$repository = app(TagRepositoryInterface::class);
|
||||
$repository->setUser(auth()->user());
|
||||
$allTags = $repository->get();
|
||||
|
||||
$collection = $allTags->filter(
|
||||
function (Tag $tag) use ($list) {
|
||||
static function (Tag $tag) use ($list) {
|
||||
if (in_array(strtolower($tag->tag), $list, true)) {
|
||||
return true;
|
||||
}
|
||||
|
@ -1,53 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* TransactionGroup.php
|
||||
* Copyright (c) 2019 thegrumpydictator@gmail.com
|
||||
*
|
||||
* This file is part of Firefly III.
|
||||
*
|
||||
* Firefly III is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Firefly III is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Support\Binder;
|
||||
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Routing\Route;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
* Class TransactionGroup.
|
||||
*/
|
||||
class TransactionGroup implements BinderInterface
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
* @param Route $route
|
||||
*
|
||||
* @return TransactionGroup
|
||||
* @throws NotFoundHttpException
|
||||
*/
|
||||
public static function routeBinder(string $value, Route $route): TransactionGroup
|
||||
{
|
||||
if (auth()->check()) {
|
||||
$group = auth()->user()->transactionGroups()
|
||||
->find($value);
|
||||
if (null !== $group) {
|
||||
return $group;
|
||||
}
|
||||
}
|
||||
|
||||
throw new NotFoundHttpException;
|
||||
}
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* UnfinishedJournal.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
*
|
||||
* This file is part of Firefly III.
|
||||
*
|
||||
* Firefly III is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Firefly III is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Support\Binder;
|
||||
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Illuminate\Routing\Route;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
* Class Date.
|
||||
*/
|
||||
class UnfinishedJournal implements BinderInterface
|
||||
{
|
||||
/**
|
||||
* @param string $value
|
||||
* @param Route $route
|
||||
*
|
||||
* @return TransactionJournal
|
||||
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
|
||||
*/
|
||||
public static function routeBinder(string $value, Route $route): TransactionJournal
|
||||
{
|
||||
if (auth()->check()) {
|
||||
$journal = auth()->user()->transactionJournals()->where('transaction_journals.id', $value)
|
||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
||||
->where('completed', 0)
|
||||
->where('user_id', auth()->user()->id)->first(['transaction_journals.*']);
|
||||
if (null !== $journal) {
|
||||
return $journal;
|
||||
}
|
||||
}
|
||||
|
||||
throw new NotFoundHttpException;
|
||||
}
|
||||
}
|
@ -23,7 +23,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use FireflyIII\Export\Exporter\CsvExporter;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\Attachment;
|
||||
@ -32,7 +31,6 @@ use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\BudgetLimit;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Models\ExportJob;
|
||||
use FireflyIII\Models\ImportJob;
|
||||
use FireflyIII\Models\LinkType;
|
||||
use FireflyIII\Models\PiggyBank;
|
||||
@ -41,7 +39,6 @@ use FireflyIII\Models\Recurrence;
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
use FireflyIII\Models\Tag;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
use FireflyIII\Models\TransactionGroup;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
@ -60,7 +57,6 @@ use FireflyIII\Support\Binder\ImportProvider;
|
||||
use FireflyIII\Support\Binder\JournalList;
|
||||
use FireflyIII\Support\Binder\TagList;
|
||||
use FireflyIII\Support\Binder\TagOrId;
|
||||
use FireflyIII\Support\Binder\UnfinishedJournal;
|
||||
use FireflyIII\TransactionRules\Actions\AddTag;
|
||||
use FireflyIII\TransactionRules\Actions\AppendDescription;
|
||||
use FireflyIII\TransactionRules\Actions\AppendNotes;
|
||||
@ -377,7 +373,6 @@ return [
|
||||
'rule' => Rule::class,
|
||||
'ruleGroup' => RuleGroup::class,
|
||||
'importJob' => ImportJob::class,
|
||||
'transaction' => Transaction::class,
|
||||
'transactionGroup' => TransactionGroup::class,
|
||||
'user' => User::class,
|
||||
|
||||
@ -401,7 +396,6 @@ return [
|
||||
// others
|
||||
'fromCurrencyCode' => CurrencyCode::class,
|
||||
'toCurrencyCode' => CurrencyCode::class,
|
||||
'unfinishedJournal' => UnfinishedJournal::class,
|
||||
'cliToken' => CLIToken::class,
|
||||
'tagOrId' => TagOrId::class,
|
||||
'configName' => ConfigurationName::class,
|
||||
|
@ -23,9 +23,7 @@ declare(strict_types=1);
|
||||
namespace Tests\Feature\Controllers;
|
||||
|
||||
use FireflyIII\Models\Attachment;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
|
@ -67,7 +67,6 @@ class EditControllerTest extends TestCase
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Controllers\Category\EditController
|
||||
* @covers \FireflyIII\Http\Requests\CategoryFormRequest
|
||||
|
@ -26,12 +26,9 @@ use Carbon\Carbon;
|
||||
use Exception;
|
||||
use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
|
||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||
|
||||
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
|
@ -27,9 +27,7 @@ use Exception;
|
||||
use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
|
||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\BudgetLimit;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||
|
@ -26,10 +26,6 @@ use Carbon\Carbon;
|
||||
use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
|
||||
use FireflyIII\Helpers\Chart\MetaPieChartInterface;
|
||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||
|
||||
|
||||
|
||||
|
||||
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Models\BudgetLimit;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
@ -39,6 +35,7 @@ use Log;
|
||||
use Preferences;
|
||||
use Tests\TestCase;
|
||||
|
||||
|
||||
/**
|
||||
* Class BudgetReportControllerTest
|
||||
*/
|
||||
|
@ -26,18 +26,13 @@ use Carbon\Carbon;
|
||||
use FireflyIII\Generator\Chart\Basic\GeneratorInterface;
|
||||
use FireflyIII\Helpers\Chart\MetaPieChartInterface;
|
||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use Log;
|
||||
use Preferences;
|
||||
use Tests\TestCase;
|
||||
|
||||
|
||||
/**
|
||||
* Class CategoryReportControllerTest
|
||||
*/
|
||||
|
@ -24,9 +24,7 @@ namespace Tests\Feature\Controllers;
|
||||
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
|
@ -22,8 +22,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Controllers;
|
||||
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Log;
|
||||
use Mockery;
|
||||
|
@ -29,9 +29,9 @@ use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\MessageBag;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
use Tests\TestCase;
|
||||
|
||||
use Preferences;
|
||||
/**
|
||||
* Class AccountControllerTest
|
||||
*
|
||||
@ -74,7 +74,6 @@ class PrerequisitesControllerTest extends TestCase
|
||||
Preferences::shouldReceive('getForUser')->atLeast()->once()->withArgs([Mockery::any(), 'ynab_client_id', null])->andReturnNull();
|
||||
|
||||
|
||||
|
||||
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->atLeast()->once()->andReturn(true);
|
||||
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->atLeast()->once()->andReturn(false);
|
||||
|
||||
|
@ -111,7 +111,8 @@ class BoxControllerTest extends TestCase
|
||||
* @covers \FireflyIII\Http\Controllers\Json\BoxController
|
||||
*/
|
||||
public function testBalance(): void
|
||||
{ $this->mockDefaultSession();
|
||||
{
|
||||
$this->mockDefaultSession();
|
||||
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
$collector = $this->mock(GroupCollectorInterface::class);
|
||||
|
@ -24,7 +24,6 @@ namespace Tests\Feature\Controllers\Json;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Models\CurrencyExchangeRate;
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||
use FireflyIII\Services\Currency\ExchangeRateInterface;
|
||||
use Log;
|
||||
|
@ -23,8 +23,8 @@ declare(strict_types=1);
|
||||
namespace Tests\Feature\Controllers\Json;
|
||||
|
||||
use Log;
|
||||
use Tests\TestCase;
|
||||
use Preferences;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class IntroControllerTest
|
||||
|
@ -27,14 +27,10 @@ namespace Tests\Feature\Controllers\Json;
|
||||
use Amount;
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||
|
||||
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
|
@ -22,8 +22,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Controllers;
|
||||
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use Log;
|
||||
use Tests\TestCase;
|
||||
|
||||
|
@ -22,7 +22,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Controllers;
|
||||
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
|
@ -25,13 +25,10 @@ namespace Tests\Feature\Controllers\Popup;
|
||||
use Amount;
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\Report\PopupReportInterface;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Budget;
|
||||
use FireflyIII\Models\Category;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Tests\TestCase;
|
||||
|
||||
|
@ -24,9 +24,7 @@ namespace Tests\Feature\Controllers;
|
||||
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
|
@ -24,8 +24,6 @@ namespace Tests\Feature\Controllers;
|
||||
|
||||
use Amount;
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use FireflyIII\User;
|
||||
use Google2FA;
|
||||
@ -33,6 +31,7 @@ use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
use stdClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@ -133,7 +132,7 @@ class ProfileControllerTest extends TestCase
|
||||
$repository->shouldReceive('unblockUser');
|
||||
$preference = new Preference;
|
||||
$preference->data = 'existing-token';
|
||||
/** @var \stdClass $preference */
|
||||
/** @var stdClass $preference */
|
||||
$preference->user = $this->user();
|
||||
Preferences::shouldReceive('findByName')->withArgs(['email_change_confirm_token'])->andReturn(new Collection([$preference]));
|
||||
// email_change_confirm_token
|
||||
@ -534,12 +533,12 @@ class ProfileControllerTest extends TestCase
|
||||
$hash = hash('sha256', 'previous@example.com');
|
||||
$tokenPreference = new Preference;
|
||||
$tokenPreference->data = 'token';
|
||||
/** @var \stdClass $tokenPreference */
|
||||
/** @var stdClass $tokenPreference */
|
||||
$tokenPreference->user = $this->user();
|
||||
|
||||
$hashPreference = new Preference;
|
||||
$hashPreference->data = 'previous@example.com';
|
||||
/** @var \stdClass $hashPreference */
|
||||
/** @var stdClass $hashPreference */
|
||||
$hashPreference->user = $this->user();
|
||||
|
||||
Preferences::shouldReceive('findByName')->once()->andReturn(new Collection([$tokenPreference]));
|
||||
@ -567,12 +566,12 @@ class ProfileControllerTest extends TestCase
|
||||
$hash = hash('sha256', 'previous@example.comX');
|
||||
$tokenPreference = new Preference;
|
||||
$tokenPreference->data = 'token';
|
||||
/** @var \stdClass $tokenPreference */
|
||||
/** @var stdClass $tokenPreference */
|
||||
$tokenPreference->user = $this->user();
|
||||
|
||||
$hashPreference = new Preference;
|
||||
$hashPreference->data = 'previous@example.com';
|
||||
/** @var \stdClass $hashPreference */
|
||||
/** @var stdClass $hashPreference */
|
||||
$hashPreference->user = $this->user();
|
||||
|
||||
Preferences::shouldReceive('findByName')->once()->andReturn(new Collection([$tokenPreference]));
|
||||
|
@ -29,7 +29,6 @@ use Carbon\Carbon;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
||||
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
|
||||
|
@ -23,6 +23,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Controllers\Recurring;
|
||||
|
||||
use FireflyConfig;
|
||||
use FireflyIII\Factory\CategoryFactory;
|
||||
use FireflyIII\Models\Configuration;
|
||||
use FireflyIII\Models\Preference;
|
||||
@ -91,7 +92,7 @@ class IndexControllerTest extends TestCase
|
||||
$collection = $this->user()->recurrences()->take(2)->get();
|
||||
|
||||
// mock cron job config:
|
||||
\FireflyConfig::shouldReceive('get')->withArgs(['last_rt_job', 0])->once()->andReturn($config);
|
||||
FireflyConfig::shouldReceive('get')->withArgs(['last_rt_job', 0])->once()->andReturn($config);
|
||||
|
||||
$repository->shouldReceive('get')->andReturn($collection)->once();
|
||||
|
||||
@ -125,9 +126,9 @@ class IndexControllerTest extends TestCase
|
||||
'recurrence_repetitions' => [
|
||||
[
|
||||
'occurrences' => [
|
||||
'2019-01-01'
|
||||
]
|
||||
]
|
||||
'2019-01-01',
|
||||
],
|
||||
],
|
||||
],
|
||||
]
|
||||
);
|
||||
|
@ -25,9 +25,7 @@ namespace tests\Feature\Controllers\Rule;
|
||||
|
||||
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
|
@ -24,8 +24,6 @@ declare(strict_types=1);
|
||||
namespace tests\Feature\Controllers\Rule;
|
||||
|
||||
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Log;
|
||||
@ -63,7 +61,6 @@ class DeleteControllerTest extends TestCase
|
||||
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->atLeast()->once()->andReturn(true);
|
||||
|
||||
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(route('rules.delete', [1]));
|
||||
$response->assertStatus(200);
|
||||
|
@ -25,8 +25,6 @@ namespace tests\Feature\Controllers\Rule;
|
||||
|
||||
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
|
@ -23,8 +23,6 @@ declare(strict_types=1);
|
||||
namespace Tests\Feature\Controllers\Rule;
|
||||
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
|
@ -26,10 +26,7 @@ namespace tests\Feature\Controllers\Rule;
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Jobs\ExecuteRuleOnExistingTransactions;
|
||||
use FireflyIII\Jobs\Job;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use FireflyIII\TransactionRules\TransactionMatcher;
|
||||
@ -193,7 +190,6 @@ class SelectControllerTest extends TestCase
|
||||
$accountRepos = $this->mock(AccountRepositoryInterface::class);
|
||||
|
||||
|
||||
|
||||
$matcher->shouldReceive('setStrict')->once()->withArgs([false]);
|
||||
|
||||
$matcher->shouldReceive('setTriggeredLimit')->withArgs([10])->andReturnSelf()->once();
|
||||
|
@ -24,9 +24,7 @@ namespace Tests\Feature\Controllers\RuleGroup;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Jobs\ExecuteRuleGroupOnExistingTransactions;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
|
@ -30,6 +30,7 @@ use FireflyIII\Support\Cronjobs\RecurringCronjob;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@ -61,7 +62,7 @@ class CronControllerTest extends TestCase
|
||||
$job->shouldReceive('fire')->once()->andReturn(true);
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('all')->andReturn($users);
|
||||
\Preferences::shouldReceive('getForUser')
|
||||
Preferences::shouldReceive('getForUser')
|
||||
->withArgs([Mockery::any(), 'access_token', null])
|
||||
->andReturn($preference)->once();
|
||||
$response = $this->get(route('cron.cron', ['token']));
|
||||
@ -83,7 +84,7 @@ class CronControllerTest extends TestCase
|
||||
$job->shouldReceive('fire')->once()->andThrow(new FireflyException('Exception noted.'));
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('all')->andReturn($users);
|
||||
\Preferences::shouldReceive('getForUser')
|
||||
Preferences::shouldReceive('getForUser')
|
||||
->withArgs([Mockery::any(), 'access_token', null])
|
||||
->andReturn($preference)->once();
|
||||
$response = $this->get(route('cron.cron', ['token']));
|
||||
@ -105,7 +106,7 @@ class CronControllerTest extends TestCase
|
||||
$job->shouldReceive('fire')->once()->andReturn(false);
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$repository->shouldReceive('all')->andReturn($users);
|
||||
\Preferences::shouldReceive('getForUser')
|
||||
Preferences::shouldReceive('getForUser')
|
||||
->withArgs([Mockery::any(), 'access_token', null])
|
||||
->andReturn($preference)->once();
|
||||
$response = $this->get(route('cron.cron', ['token']));
|
||||
|
@ -29,11 +29,9 @@ use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Models\Tag;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\Tag\TagRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
|
@ -24,10 +24,8 @@ namespace Tests\Feature\Controllers\Transaction;
|
||||
|
||||
use Amount;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
@ -193,8 +191,6 @@ class ConvertControllerTest extends TestCase
|
||||
$validator->shouldReceive('validateDestination')->atLeast()->once()->andReturn(true);
|
||||
|
||||
|
||||
|
||||
|
||||
$data = ['source_account_id' => 1];
|
||||
$this->be($this->user());
|
||||
$response = $this->post(route('transactions.convert.index.post', ['transfer', $deposit->id]), $data);
|
||||
|
@ -26,9 +26,9 @@ use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
use Tests\TestCase;
|
||||
use Mockery;
|
||||
|
||||
/**
|
||||
* Class CreateControllerTest
|
||||
|
@ -25,7 +25,6 @@ namespace Tests\Feature\Controllers\Transaction;
|
||||
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Models\TransactionJournalLink;
|
||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
@ -60,8 +59,6 @@ class LinkControllerTest extends TestCase
|
||||
$userRepos = $this->mock(UserRepositoryInterface::class);
|
||||
|
||||
|
||||
|
||||
|
||||
$userRepos->shouldReceive('hasRole')->withArgs([Mockery::any(), 'owner'])->atLeast()->once()->andReturn(true);
|
||||
|
||||
$this->be($this->user());
|
||||
@ -80,7 +77,6 @@ class LinkControllerTest extends TestCase
|
||||
$linkRepos = $this->mock(LinkTypeRepositoryInterface::class);
|
||||
|
||||
|
||||
|
||||
$linkRepos->shouldReceive('get')->atLeast()->once()->andReturn(new Collection);
|
||||
|
||||
$this->be($this->user());
|
||||
|
@ -25,15 +25,26 @@ namespace Tests\Unit\Middleware;
|
||||
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Helpers\FiscalHelperInterface;
|
||||
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
|
||||
use FireflyIII\Http\Middleware\Binder;
|
||||
use FireflyIII\Import\Prerequisites\PrerequisitesInterface;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\AvailableBudget;
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Models\Recurrence;
|
||||
use FireflyIII\Models\Tag;
|
||||
use FireflyIII\Models\TransactionGroup;
|
||||
use FireflyIII\Repositories\Tag\TagRepositoryInterface;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Collection;
|
||||
use Log;
|
||||
use Mockery;
|
||||
use Preferences;
|
||||
use Route;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Tests\TestCase;
|
||||
|
||||
|
||||
/**
|
||||
* Class BinderTest
|
||||
* Per object: works, not existing, not logged in + existing
|
||||
@ -76,6 +87,28 @@ class BinderTest extends TestCase
|
||||
$response->assertSee('count: 2');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\AccountList
|
||||
*/
|
||||
public function testAccountListAllAssets(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{accountList}', function (Collection $accounts) {
|
||||
return 'count: ' . $accounts->count();
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/allAssetAccounts');
|
||||
$count = $this->user()->accounts()
|
||||
->leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id')
|
||||
->where('account_types.type', AccountType::ASSET)
|
||||
->orderBy('accounts.name', 'ASC')
|
||||
->count();
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
$response->assertSee(sprintf('count: %d', $count));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\AccountList
|
||||
@ -357,6 +390,223 @@ class BinderTest extends TestCase
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\BudgetList
|
||||
*/
|
||||
public function testBudgetListEmpty(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{budgetList}', function (Collection $budgets) {
|
||||
return 'count: ' . $budgets->count();
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\CLIToken
|
||||
*/
|
||||
public function testCLIToken(): void
|
||||
{
|
||||
$repos = $this->mock(UserRepositoryInterface::class);
|
||||
$repos->shouldReceive('all')->andReturn(new Collection([$this->user()]))->atLeast()->once();
|
||||
|
||||
$token = new Preference;
|
||||
$token->data = 'token';
|
||||
|
||||
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'access_token', null])->atLeast()->once()->andReturn($token);
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{cliToken}', static function (string $token) {
|
||||
return sprintf('token: %s', $token);
|
||||
}
|
||||
);
|
||||
|
||||
$response = $this->get('/_test/binder/token');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
$response->assertSee('token');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\CLIToken
|
||||
*/
|
||||
public function testCLITokenNotFound(): void
|
||||
{
|
||||
$repos = $this->mock(UserRepositoryInterface::class);
|
||||
$repos->shouldReceive('all')->andReturn(new Collection([$this->user()]))->atLeast()->once();
|
||||
|
||||
$token = new Preference;
|
||||
$token->data = 'token';
|
||||
|
||||
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'access_token', null])->atLeast()->once()->andReturn($token);
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{cliToken}', static function (string $token) {
|
||||
return sprintf('token: %s', $token);
|
||||
}
|
||||
);
|
||||
|
||||
$response = $this->get('/_test/binder/tokenX');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\ConfigurationName
|
||||
*/
|
||||
public function testConfigName(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{configName}', static function (string $name) {
|
||||
return sprintf('configName: %s', $name);
|
||||
}
|
||||
);
|
||||
|
||||
$response = $this->get('/_test/binder/is_demo_site');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
$response->assertSee('is_demo_site');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\ConfigurationName
|
||||
*/
|
||||
public function testConfigNameNotFOund(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{configName}', static function (string $name) {
|
||||
return sprintf('configName: %s', $name);
|
||||
}
|
||||
);
|
||||
|
||||
$response = $this->get('/_test/binder/is_demoX_site');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Normal user can access file routine
|
||||
*
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\ImportProvider
|
||||
*/
|
||||
public function testImportProvider(): void
|
||||
{
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$this->mock(PrerequisitesInterface::class);
|
||||
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->atLeast()->once();
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{import_provider}', static function (string $name) {
|
||||
return sprintf('import_provider: %s', $name);
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/file');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
$response->assertSee('file');
|
||||
}
|
||||
|
||||
/**
|
||||
* Normal user cannot access fake import routine.
|
||||
*
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\ImportProvider
|
||||
*/
|
||||
public function testImportProviderFake(): void
|
||||
{
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$this->mock(PrerequisitesInterface::class);
|
||||
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->atLeast()->once();
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{import_provider}', static function (string $name) {
|
||||
return sprintf('import_provider: %s', $name);
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/fake');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Nobody can access "bad" import routine.
|
||||
*
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\ImportProvider
|
||||
*/
|
||||
public function testImportProviderBad(): void
|
||||
{
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$this->mock(PrerequisitesInterface::class);
|
||||
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(false)->atLeast()->once();
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{import_provider}', static function (string $name) {
|
||||
return sprintf('import_provider: %s', $name);
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/bad');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Demo user cannot access file import routine.
|
||||
*
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\ImportProvider
|
||||
*/
|
||||
public function testImportProviderDemoFile(): void
|
||||
{
|
||||
$repository = $this->mock(UserRepositoryInterface::class);
|
||||
$this->mock(PrerequisitesInterface::class);
|
||||
|
||||
$repository->shouldReceive('hasRole')->withArgs([Mockery::any(), 'demo'])->andReturn(true)->atLeast()->once();
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{import_provider}', static function (string $name) {
|
||||
return sprintf('import_provider: %s', $name);
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/file');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\ImportProvider
|
||||
*/
|
||||
public function testImportProviderNotLoggedIn(): void
|
||||
{
|
||||
$this->mock(UserRepositoryInterface::class);
|
||||
$this->mock(PrerequisitesInterface::class);
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{import_provider}', static function (string $name) {
|
||||
return sprintf('import_provider: %s', $name);
|
||||
}
|
||||
);
|
||||
|
||||
$response = $this->get('/_test/binder/file');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\Budget
|
||||
@ -730,56 +980,6 @@ class BinderTest extends TestCase
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\ExportJob
|
||||
*/
|
||||
public function testExportJob(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{exportJob}', function () {
|
||||
return 'OK';
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/testExport');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\ExportJob
|
||||
*/
|
||||
public function testExportJobNotFound(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{exportJob}', function () {
|
||||
return 'OK';
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/0');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\ExportJob
|
||||
*/
|
||||
public function testExportJobNotLoggedIn(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{exportJob}', function () {
|
||||
return 'OK';
|
||||
}
|
||||
);
|
||||
|
||||
$response = $this->get('/_test/binder/testExport');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\ImportJob
|
||||
@ -836,16 +1036,15 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testJournalList(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{journalList}', function (Collection $journals) {
|
||||
return 'count: ' . $journals->count();
|
||||
'/_test/binder/{journalList}', static function (array $journals) {
|
||||
return 'count: ' . count($journals);
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/1,2');
|
||||
$withdrawal = $this->getRandomWithdrawal();
|
||||
$deposit = $this->getRandomDeposit();
|
||||
$response = $this->get(sprintf('/_test/binder/%d,%d', $withdrawal->id, $deposit->id));
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
$response->assertSee('count: 2');
|
||||
}
|
||||
@ -856,19 +1055,33 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testJournalListEmpty(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{journalList}', function (Collection $journals) {
|
||||
return 'count: ' . $journals->count();
|
||||
}
|
||||
);
|
||||
'/_test/binder/{journalList}', static function (array $journals) {
|
||||
return 'count: ' . count($journals);
|
||||
});
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/-1');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* Not logged in.
|
||||
*
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\JournalList
|
||||
*/
|
||||
public function testJournalListNotLoggedIn(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{journalList}', static function (array $journals) {
|
||||
return 'count: ' . count($journals);
|
||||
});
|
||||
|
||||
$response = $this->get('/_test/binder/-1');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\LinkType
|
||||
@ -936,6 +1149,141 @@ class BinderTest extends TestCase
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\Preference
|
||||
*/
|
||||
public function testPreference(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{preference}', static function (?Preference $preference) {
|
||||
return $preference->name ?? 'unknown';
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/frontPageAccounts');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
$response->assertSee('frontPageAccounts');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\Recurrence
|
||||
*/
|
||||
public function testRecurrence(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{recurrence}', static function (?Recurrence $recurrence) {
|
||||
return $recurrence->description ?? 'unknown';
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/1');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\Recurrence
|
||||
*/
|
||||
public function testRecurrenceNotFound(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{recurrence}', static function (?Recurrence $recurrence) {
|
||||
return $recurrence->description ?? 'unknown';
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/-1');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\TransactionGroup
|
||||
*/
|
||||
public function testTransactionGroup(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{transactionGroup}', static function (?TransactionGroup $transactionGroup) {
|
||||
return $transactionGroup->title ?? 'unknown';
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/1');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\TransactionGroup
|
||||
*/
|
||||
public function testTransactionGroupNotFound(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{transactionGroup}', static function (?TransactionGroup $transactionGroup) {
|
||||
return $transactionGroup->title ?? 'unknown';
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/-1');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\AvailableBudget
|
||||
*/
|
||||
public function testAvailableBudget(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{availableBudget}', static function (?AvailableBudget $availableBudget) {
|
||||
return $availableBudget->id ?? 0;
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/1');
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\AvailableBudget
|
||||
*/
|
||||
public function testAvailableBudgetNotFound(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{availableBudget}', static function (?AvailableBudget $availableBudget) {
|
||||
return $availableBudget->id ?? 0;
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/-1');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\Preference
|
||||
*/
|
||||
public function testPreferenceNotFound(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{preference}', static function (?Preference $preference) {
|
||||
return $preference->name ?? 'unknown';
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/frontPageAccountsX');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Models\PiggyBank
|
||||
@ -1075,9 +1423,6 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testTJ(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tj}', function () {
|
||||
return 'OK';
|
||||
@ -1095,9 +1440,6 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testTJNotFound(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tj}', function () {
|
||||
return 'OK';
|
||||
@ -1115,9 +1457,6 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testTJNotLoggedIn(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tj}', function () {
|
||||
return 'OK';
|
||||
@ -1171,6 +1510,139 @@ class BinderTest extends TestCase
|
||||
$response->assertSee('count: 2');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\TagList
|
||||
*/
|
||||
public function testTagListWithId(): void
|
||||
{
|
||||
$tagRepos = $this->mock(TagRepositoryInterface::class);
|
||||
$tagRepos->shouldReceive('setUser');
|
||||
$tags = $this->user()->tags()->whereIn('id', [1, 2, 3])->get(['tags.*']);
|
||||
$tagRepos->shouldReceive('get')->once()->andReturn($tags);
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tagList}', function (Collection $tags) {
|
||||
return 'count: ' . $tags->count();
|
||||
}
|
||||
);
|
||||
$first = $tags->get(0);
|
||||
$second = $tags->get(1);
|
||||
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(sprintf('/_test/binder/%s,%d,bleep', $first->tag, $second->id));
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
$response->assertSee('count: 2');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\TagOrId
|
||||
*/
|
||||
public function testTagOrIdByTag(): void
|
||||
{
|
||||
$tagRepos = $this->mock(TagRepositoryInterface::class);
|
||||
$tag = $this->getRandomTag();
|
||||
|
||||
$tagRepos->shouldReceive('setUser');
|
||||
$tagRepos->shouldReceive('findByTag')->withArgs([$tag->tag])->andReturn($tag)->atLeast()->once();
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tagOrId}', static function (?Tag $tag) {
|
||||
if ($tag) {
|
||||
return $tag->tag;
|
||||
}
|
||||
|
||||
return 'unfound';
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(sprintf('/_test/binder/%s', $tag->tag));
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
|
||||
$response->assertSee($tag->tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\TagOrId
|
||||
*/
|
||||
public function testTagOrIdById(): void
|
||||
{
|
||||
$tagRepos = $this->mock(TagRepositoryInterface::class);
|
||||
$tag = $this->getRandomTag();
|
||||
|
||||
$tagRepos->shouldReceive('setUser');
|
||||
$tagRepos->shouldReceive('findByTag')->withArgs([(string)$tag->id])->andReturnNull()->atLeast()->once();
|
||||
$tagRepos->shouldReceive('findNull')->withArgs([$tag->id])->andReturn($tag)->atLeast()->once();
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tagOrId}', static function (?Tag $tag) {
|
||||
if ($tag) {
|
||||
return $tag->tag;
|
||||
}
|
||||
|
||||
return 'unfound';
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(sprintf('/_test/binder/%d', $tag->id));
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
|
||||
$response->assertSee($tag->tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\TagOrId
|
||||
*/
|
||||
public function testTagOrIdBothNull(): void
|
||||
{
|
||||
$tagRepos = $this->mock(TagRepositoryInterface::class);
|
||||
$tag = $this->getRandomTag();
|
||||
|
||||
$tagRepos->shouldReceive('setUser');
|
||||
$tagRepos->shouldReceive('findByTag')->withArgs([(string)$tag->id])->andReturnNull()->atLeast()->once();
|
||||
$tagRepos->shouldReceive('findNull')->withArgs([$tag->id])->andReturnNull()->atLeast()->once();
|
||||
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tagOrId}', static function (?Tag $tag) {
|
||||
if ($tag) {
|
||||
return $tag->tag;
|
||||
}
|
||||
|
||||
return 'unfound';
|
||||
}
|
||||
);
|
||||
|
||||
$this->be($this->user());
|
||||
$response = $this->get(sprintf('/_test/binder/%d', $tag->id));
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\TagOrId
|
||||
*/
|
||||
public function testTagOrIdNotLoggedIn(): void
|
||||
{
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{tagOrId}', static function (?Tag $tag) {
|
||||
if ($tag) {
|
||||
return $tag->tag;
|
||||
}
|
||||
|
||||
return 'unfound';
|
||||
}
|
||||
);
|
||||
|
||||
$response = $this->get(sprintf('/_test/binder/%d', 4));
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\TagList
|
||||
@ -1280,9 +1752,6 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testTransactionJournalLink(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{journalLink}', function () {
|
||||
return 'OK';
|
||||
@ -1300,9 +1769,6 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testTransactionJournalLinkNotFound(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{journalLink}', function () {
|
||||
return 'OK';
|
||||
@ -1320,9 +1786,6 @@ class BinderTest extends TestCase
|
||||
*/
|
||||
public function testTransactionJournalLinkNotLoggedIn(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{journalLink}', function () {
|
||||
return 'OK';
|
||||
@ -1382,64 +1845,4 @@ class BinderTest extends TestCase
|
||||
$response = $this->get('/_test/binder/withdrawal');
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\UnfinishedJournal
|
||||
*/
|
||||
public function testUnfinishedJournal(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
$journal = $this->user()->transactionJournals()->where('completed', 0)->first();
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{unfinishedJournal}', function () {
|
||||
return 'OK';
|
||||
}
|
||||
);
|
||||
$this->be($this->user());
|
||||
$response = $this->get('/_test/binder/' . $journal->id);
|
||||
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\UnfinishedJournal
|
||||
*/
|
||||
public function testUnfinishedJournalFinished(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
$journal = $this->user()->transactionJournals()->where('completed', 1)->first();
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{unfinishedJournal}', function () {
|
||||
return 'OK';
|
||||
}
|
||||
);
|
||||
$response = $this->get('/_test/binder/' . $journal->id);
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Http\Middleware\Binder
|
||||
* @covers \FireflyIII\Support\Binder\UnfinishedJournal
|
||||
*/
|
||||
public function testUnfinishedJournalNotLoggedIn(): void
|
||||
{
|
||||
$this->markTestIncomplete('Needs to be rewritten for v4.8.0');
|
||||
|
||||
return;
|
||||
$journal = $this->user()->transactionJournals()->where('completed', 0)->first();
|
||||
Route::middleware(Binder::class)->any(
|
||||
'/_test/binder/{unfinishedJournal}', function () {
|
||||
return 'OK';
|
||||
}
|
||||
);
|
||||
$response = $this->get('/_test/binder/' . $journal->id);
|
||||
$this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user