🤖 Auto commit for release 'develop' on 2025-08-29

This commit is contained in:
JC5
2025-08-29 07:23:32 +02:00
parent 2e4df28288
commit 1b0e16b6a5
16 changed files with 310 additions and 303 deletions

View File

@@ -114,7 +114,7 @@ class AccountController extends Controller
'id' => (string) $account->id, 'id' => (string) $account->id,
'name' => $account->name, 'name' => $account->name,
'name_with_balance' => $nameWithBalance, 'name_with_balance' => $nameWithBalance,
'active' => $account->active, 'active' => $account->active,
'type' => $account->accountType->type, 'type' => $account->accountType->type,
'currency_id' => (string) $useCurrency->id, 'currency_id' => (string) $useCurrency->id,
'currency_name' => $useCurrency->name, 'currency_name' => $useCurrency->name,

View File

@@ -67,8 +67,8 @@ class BudgetController extends Controller
$result = $this->repository->searchBudget($data['query'], $this->parameters->get('limit')); $result = $this->repository->searchBudget($data['query'], $this->parameters->get('limit'));
$filtered = $result->map( $filtered = $result->map(
static fn (Budget $item) => [ static fn (Budget $item) => [
'id' => (string) $item->id, 'id' => (string) $item->id,
'name' => $item->name, 'name' => $item->name,
'active' => $item->active, 'active' => $item->active,
] ]
); );

View File

@@ -69,7 +69,7 @@ class RecurrenceController extends Controller
'id' => (string) $recurrence->id, 'id' => (string) $recurrence->id,
'name' => $recurrence->title, 'name' => $recurrence->title,
'description' => $recurrence->description, 'description' => $recurrence->description,
'active' => $recurrence->active 'active' => $recurrence->active,
]; ];
} }

View File

@@ -69,7 +69,7 @@ class RuleGroupController extends Controller
'id' => (string) $group->id, 'id' => (string) $group->id,
'name' => $group->title, 'name' => $group->title,
'description' => $group->description, 'description' => $group->description,
'active' => $group->active, 'active' => $group->active,
]; ];
} }

View File

@@ -25,7 +25,6 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers\Rule; namespace FireflyIII\Http\Controllers\Rule;
use Throwable; use Throwable;
use Carbon\Carbon;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Http\Requests\SelectTransactionsRequest; use FireflyIII\Http\Requests\SelectTransactionsRequest;
@@ -105,7 +104,7 @@ class SelectController extends Controller
// does the user have shared accounts? // does the user have shared accounts?
$subTitle = (string) trans('firefly.apply_rule_selection', ['title' => $rule->title]); $subTitle = (string) trans('firefly.apply_rule_selection', ['title' => $rule->title]);
return view('rules.rule.select-transactions', compact( 'rule', 'subTitle')); return view('rules.rule.select-transactions', compact('rule', 'subTitle'));
} }
/** /**

View File

@@ -25,11 +25,9 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers\RuleGroup; namespace FireflyIII\Http\Controllers\RuleGroup;
use Exception; use Exception;
use Carbon\Carbon;
use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Http\Requests\SelectTransactionsRequest; use FireflyIII\Http\Requests\SelectTransactionsRequest;
use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleGroup;
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
use FireflyIII\TransactionRules\Engine\RuleEngineInterface; use FireflyIII\TransactionRules\Engine\RuleEngineInterface;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\Factory;
@@ -99,6 +97,6 @@ class ExecutionController extends Controller
{ {
$subTitle = (string) trans('firefly.apply_rule_group_selection', ['title' => $ruleGroup->title]); $subTitle = (string) trans('firefly.apply_rule_group_selection', ['title' => $ruleGroup->title]);
return view('rules.rule-group.select-transactions', compact( 'ruleGroup', 'subTitle')); return view('rules.rule-group.select-transactions', compact('ruleGroup', 'subTitle'));
} }
} }

View File

@@ -303,22 +303,22 @@ class ConvertController extends Controller
private function convertJournal(TransactionJournal $journal, TransactionType $transactionType, array $data): TransactionJournal private function convertJournal(TransactionJournal $journal, TransactionType $transactionType, array $data): TransactionJournal
{ {
/** @var AccountValidator $validator */ /** @var AccountValidator $validator */
$validator = app(AccountValidator::class); $validator = app(AccountValidator::class);
$validator->setUser(auth()->user()); $validator->setUser(auth()->user());
$validator->setTransactionType($transactionType->type); $validator->setTransactionType($transactionType->type);
$sourceId = $data['source_id'][$journal->id] ?? null; $sourceId = $data['source_id'][$journal->id] ?? null;
$sourceName = $data['source_name'][$journal->id] ?? null; $sourceName = $data['source_name'][$journal->id] ?? null;
$destinationId = $data['destination_id'][$journal->id] ?? null; $destinationId = $data['destination_id'][$journal->id] ?? null;
$destinationName = $data['destination_name'][$journal->id] ?? null; $destinationName = $data['destination_name'][$journal->id] ?? null;
// double check it's not an empty string. // double check it's not an empty string.
$sourceId = '' === $sourceId || null === $sourceId ? null : (int) $sourceId; $sourceId = '' === $sourceId || null === $sourceId ? null : (int) $sourceId;
$sourceName = '' === $sourceName ? null : (string) $sourceName; $sourceName = '' === $sourceName ? null : (string) $sourceName;
$destinationId = '' === $destinationId || null === $destinationId ? null : (int) $destinationId; $destinationId = '' === $destinationId || null === $destinationId ? null : (int) $destinationId;
$destinationName = '' === $destinationName ? null : (string) $destinationName; $destinationName = '' === $destinationName ? null : (string) $destinationName;
$validSource = $validator->validateSource(['id' => $sourceId, 'name' => $sourceName]); $validSource = $validator->validateSource(['id' => $sourceId, 'name' => $sourceName]);
$validDestination = $validator->validateDestination(['id' => $destinationId, 'name' => $destinationName]); $validDestination = $validator->validateDestination(['id' => $destinationId, 'name' => $destinationName]);
if (false === $validSource) { if (false === $validSource) {
throw new FireflyException(sprintf(trans('firefly.convert_invalid_source'), $journal->id)); throw new FireflyException(sprintf(trans('firefly.convert_invalid_source'), $journal->id));
@@ -329,7 +329,7 @@ class ConvertController extends Controller
// TODO typeOverrule: the account validator may have another opinion on the transaction type. // TODO typeOverrule: the account validator may have another opinion on the transaction type.
$update = [ $update = [
'source_id' => $sourceId, 'source_id' => $sourceId,
'source_name' => $sourceName, 'source_name' => $sourceName,
'destination_id' => $destinationId, 'destination_id' => $destinationId,
@@ -338,7 +338,7 @@ class ConvertController extends Controller
]; ];
$sourceTransaction = $journal->transactions()->where('amount', '<', 0)->first(); $sourceTransaction = $journal->transactions()->where('amount', '<', 0)->first();
$amount = $sourceTransaction?->amount ?? '0'; $amount = $sourceTransaction?->amount ?? '0';
// also set the currency to the currency of the source account, in case you're converting a deposit into a transfer. // also set the currency to the currency of the source account, in case you're converting a deposit into a transfer.
if (TransactionTypeEnum::TRANSFER->value === $transactionType->type && TransactionTypeEnum::DEPOSIT->value === $journal->transactionType->type) { if (TransactionTypeEnum::TRANSFER->value === $transactionType->type && TransactionTypeEnum::DEPOSIT->value === $journal->transactionType->type) {
@@ -367,7 +367,7 @@ class ConvertController extends Controller
} }
/** @var JournalUpdateService $service */ /** @var JournalUpdateService $service */
$service = app(JournalUpdateService::class); $service = app(JournalUpdateService::class);
$service->setTransactionJournal($journal); $service->setTransactionJournal($journal);
$service->setData($update); $service->setData($update);
$service->update(); $service->update();

View File

@@ -25,9 +25,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- [Issue 10804](https://github.com/firefly-iii/firefly-iii/issues/10804) (No notes information included in the "List all accounts" API call) reported by @gpampuro - [Issue 10804](https://github.com/firefly-iii/firefly-iii/issues/10804) (No notes information included in the "List all accounts" API call) reported by @gpampuro
- [Issue 10808](https://github.com/firefly-iii/firefly-iii/issues/10808) (cron job Error: Undefined variable $preference) reported by @MexerSam - [Issue 10808](https://github.com/firefly-iii/firefly-iii/issues/10808) (cron job Error: Undefined variable $preference) reported by @MexerSam
- [Issue 10813](https://github.com/firefly-iii/firefly-iii/issues/10813) (Error "Argument #2 ($symbol) must be of type string" while try open subscriptions section) reported by @mrResident - [Issue 10813](https://github.com/firefly-iii/firefly-iii/issues/10813) (Error "Argument #2 ($symbol) must be of type string" while try open subscriptions section) reported by @mrResident
- #10819 - [Issue 10819](https://github.com/firefly-iii/firefly-iii/issues/10819) (Internal Server Error when trying to open piggy banks) reported by @noantiq
- #10820 - [Issue 10820](https://github.com/firefly-iii/firefly-iii/issues/10820) (Unable to search date 1970-01-01 to apply rule.) reported by @Kage1
- #10824 - [Issue 10824](https://github.com/firefly-iii/firefly-iii/issues/10824) (Converting withdrawal to transfer to account in different currency doesn't allow setting correct currencies) reported by @avee87
### API ### API

105
composer.lock generated
View File

@@ -1878,16 +1878,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v12.25.0", "version": "v12.26.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20" "reference": "1a8e961a1801794c36c243bb610210d0a2bd61cb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20", "url": "https://api.github.com/repos/laravel/framework/zipball/1a8e961a1801794c36c243bb610210d0a2bd61cb",
"reference": "2ee2ba94ae60efd24c7a787cbb1a2f82f714bb20", "reference": "1a8e961a1801794c36c243bb610210d0a2bd61cb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1927,9 +1927,9 @@
"symfony/http-kernel": "^7.2.0", "symfony/http-kernel": "^7.2.0",
"symfony/mailer": "^7.2.0", "symfony/mailer": "^7.2.0",
"symfony/mime": "^7.2.0", "symfony/mime": "^7.2.0",
"symfony/polyfill-php83": "^1.31", "symfony/polyfill-php83": "^1.33",
"symfony/polyfill-php84": "^1.31", "symfony/polyfill-php84": "^1.33",
"symfony/polyfill-php85": "^1.31", "symfony/polyfill-php85": "^1.33",
"symfony/process": "^7.2.0", "symfony/process": "^7.2.0",
"symfony/routing": "^7.2.0", "symfony/routing": "^7.2.0",
"symfony/uid": "^7.2.0", "symfony/uid": "^7.2.0",
@@ -2091,7 +2091,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2025-08-18T22:20:52+00:00" "time": "2025-08-27T13:51:06+00:00"
}, },
{ {
"name": "laravel/passport", "name": "laravel/passport",
@@ -5827,23 +5827,23 @@
}, },
{ {
"name": "rcrowe/twigbridge", "name": "rcrowe/twigbridge",
"version": "v0.14.5", "version": "v0.14.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/rcrowe/TwigBridge.git", "url": "https://github.com/rcrowe/TwigBridge.git",
"reference": "88c83c9658a2c029c64ec80dd8a15d5a67433ac4" "reference": "0798ee4b5e5b943d0200850acaa87ccd82e2fe45"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/rcrowe/TwigBridge/zipball/88c83c9658a2c029c64ec80dd8a15d5a67433ac4", "url": "https://api.github.com/repos/rcrowe/TwigBridge/zipball/0798ee4b5e5b943d0200850acaa87ccd82e2fe45",
"reference": "88c83c9658a2c029c64ec80dd8a15d5a67433ac4", "reference": "0798ee4b5e5b943d0200850acaa87ccd82e2fe45",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"illuminate/support": "^9|^10|^11|^12", "illuminate/support": "^9|^10|^11|^12",
"illuminate/view": "^9|^10|^11|^12", "illuminate/view": "^9|^10|^11|^12",
"php": "^8.1", "php": "^8.1",
"twig/twig": "~3.12" "twig/twig": "~3.21"
}, },
"require-dev": { "require-dev": {
"ext-json": "*", "ext-json": "*",
@@ -5893,22 +5893,22 @@
], ],
"support": { "support": {
"issues": "https://github.com/rcrowe/TwigBridge/issues", "issues": "https://github.com/rcrowe/TwigBridge/issues",
"source": "https://github.com/rcrowe/TwigBridge/tree/v0.14.5" "source": "https://github.com/rcrowe/TwigBridge/tree/v0.14.6"
}, },
"time": "2025-04-18T18:48:57+00:00" "time": "2025-08-20T11:25:49+00:00"
}, },
{ {
"name": "spatie/backtrace", "name": "spatie/backtrace",
"version": "1.7.4", "version": "1.8.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/spatie/backtrace.git", "url": "https://github.com/spatie/backtrace.git",
"reference": "cd37a49fce7137359ac30ecc44ef3e16404cccbe" "reference": "8c0f16a59ae35ec8c62d85c3c17585158f430110"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/spatie/backtrace/zipball/cd37a49fce7137359ac30ecc44ef3e16404cccbe", "url": "https://api.github.com/repos/spatie/backtrace/zipball/8c0f16a59ae35ec8c62d85c3c17585158f430110",
"reference": "cd37a49fce7137359ac30ecc44ef3e16404cccbe", "reference": "8c0f16a59ae35ec8c62d85c3c17585158f430110",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5946,7 +5946,8 @@
"spatie" "spatie"
], ],
"support": { "support": {
"source": "https://github.com/spatie/backtrace/tree/1.7.4" "issues": "https://github.com/spatie/backtrace/issues",
"source": "https://github.com/spatie/backtrace/tree/1.8.1"
}, },
"funding": [ "funding": [
{ {
@@ -5958,7 +5959,7 @@
"type": "other" "type": "other"
} }
], ],
"time": "2025-05-08T15:41:09+00:00" "time": "2025-08-26T08:22:30+00:00"
}, },
{ {
"name": "spatie/error-solutions", "name": "spatie/error-solutions",
@@ -10726,16 +10727,16 @@
}, },
{ {
"name": "larastan/larastan", "name": "larastan/larastan",
"version": "v3.6.0", "version": "v3.6.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/larastan/larastan.git", "url": "https://github.com/larastan/larastan.git",
"reference": "6431d010dd383a9279eb8874a76ddb571738564a" "reference": "3c223047e374befd1b64959784685d6ecccf66aa"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/larastan/larastan/zipball/6431d010dd383a9279eb8874a76ddb571738564a", "url": "https://api.github.com/repos/larastan/larastan/zipball/3c223047e374befd1b64959784685d6ecccf66aa",
"reference": "6431d010dd383a9279eb8874a76ddb571738564a", "reference": "3c223047e374befd1b64959784685d6ecccf66aa",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -10803,7 +10804,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/larastan/larastan/issues", "issues": "https://github.com/larastan/larastan/issues",
"source": "https://github.com/larastan/larastan/tree/v3.6.0" "source": "https://github.com/larastan/larastan/tree/v3.6.1"
}, },
"funding": [ "funding": [
{ {
@@ -10811,7 +10812,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-07-11T06:52:52+00:00" "time": "2025-08-25T07:24:56+00:00"
}, },
{ {
"name": "laravel-json-api/testing", "name": "laravel-json-api/testing",
@@ -11473,16 +11474,16 @@
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "12.3.2", "version": "12.3.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "086553c5b2e0e1e20293d782d788ab768202b621" "reference": "733025d94635a001f67db71a2ed1bab4e7e4a9dc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/086553c5b2e0e1e20293d782d788ab768202b621", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/733025d94635a001f67db71a2ed1bab4e7e4a9dc",
"reference": "086553c5b2e0e1e20293d782d788ab768202b621", "reference": "733025d94635a001f67db71a2ed1bab4e7e4a9dc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11538,7 +11539,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.3.2" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.3.3"
}, },
"funding": [ "funding": [
{ {
@@ -11558,7 +11559,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-29T06:19:24+00:00" "time": "2025-08-27T14:43:48+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@@ -11807,16 +11808,16 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "12.3.6", "version": "12.3.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "a2cab3224f687150ac2f3cc13d99b64ba1e1d088" "reference": "b8fa997c49682979ad6bfaa0d7fb25f54954965e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2cab3224f687150ac2f3cc13d99b64ba1e1d088", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b8fa997c49682979ad6bfaa0d7fb25f54954965e",
"reference": "a2cab3224f687150ac2f3cc13d99b64ba1e1d088", "reference": "b8fa997c49682979ad6bfaa0d7fb25f54954965e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11830,7 +11831,7 @@
"phar-io/manifest": "^2.0.4", "phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1", "phar-io/version": "^3.2.1",
"php": ">=8.3", "php": ">=8.3",
"phpunit/php-code-coverage": "^12.3.2", "phpunit/php-code-coverage": "^12.3.3",
"phpunit/php-file-iterator": "^6.0.0", "phpunit/php-file-iterator": "^6.0.0",
"phpunit/php-invoker": "^6.0.0", "phpunit/php-invoker": "^6.0.0",
"phpunit/php-text-template": "^5.0.0", "phpunit/php-text-template": "^5.0.0",
@@ -11884,7 +11885,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues", "issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy", "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.3.6" "source": "https://github.com/sebastianbergmann/phpunit/tree/12.3.7"
}, },
"funding": [ "funding": [
{ {
@@ -11908,7 +11909,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-20T14:43:23+00:00" "time": "2025-08-28T05:15:46+00:00"
}, },
{ {
"name": "rector/rector", "name": "rector/rector",
@@ -12400,16 +12401,16 @@
}, },
{ {
"name": "sebastian/global-state", "name": "sebastian/global-state",
"version": "8.0.0", "version": "8.0.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git", "url": "https://github.com/sebastianbergmann/global-state.git",
"reference": "570a2aeb26d40f057af686d63c4e99b075fb6cbc" "reference": "912dd568677a6e13c67c08321710ad6ac81e6dca"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/570a2aeb26d40f057af686d63c4e99b075fb6cbc", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/912dd568677a6e13c67c08321710ad6ac81e6dca",
"reference": "570a2aeb26d40f057af686d63c4e99b075fb6cbc", "reference": "912dd568677a6e13c67c08321710ad6ac81e6dca",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -12450,15 +12451,27 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues", "issues": "https://github.com/sebastianbergmann/global-state/issues",
"security": "https://github.com/sebastianbergmann/global-state/security/policy", "security": "https://github.com/sebastianbergmann/global-state/security/policy",
"source": "https://github.com/sebastianbergmann/global-state/tree/8.0.0" "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.1"
}, },
"funding": [ "funding": [
{ {
"url": "https://github.com/sebastianbergmann", "url": "https://github.com/sebastianbergmann",
"type": "github" "type": "github"
},
{
"url": "https://liberapay.com/sebastianbergmann",
"type": "liberapay"
},
{
"url": "https://thanks.dev/u/gh/sebastianbergmann",
"type": "thanks_dev"
},
{
"url": "https://tidelift.com/funding/github/packagist/sebastian/global-state",
"type": "tidelift"
} }
], ],
"time": "2025-02-07T04:56:59+00:00" "time": "2025-08-28T09:13:48+00:00"
}, },
{ {
"name": "sebastian/lines-of-code", "name": "sebastian/lines-of-code",

View File

@@ -78,8 +78,8 @@ return [
'running_balance_column' => env('USE_RUNNING_BALANCE', false), 'running_balance_column' => env('USE_RUNNING_BALANCE', false),
// see cer.php for exchange rates feature flag. // see cer.php for exchange rates feature flag.
], ],
'version' => 'develop/2025-08-25', 'version' => 'develop/2025-08-29',
'build_time' => 1756092349, 'build_time' => 1756444897,
'api_version' => '2.1.0', // field is no longer used. 'api_version' => '2.1.0', // field is no longer used.
'db_version' => 26, 'db_version' => 26,

254
package-lock.json generated
View File

@@ -2592,9 +2592,9 @@
} }
}, },
"node_modules/@rollup/rollup-android-arm-eabi": { "node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.49.0.tgz",
"integrity": "sha512-aVzKH922ogVAWkKiyKXorjYymz2084zrhrZRXtLrA5eEx5SO8Dj0c/4FpCHZyn7MKzhW2pW4tK28vVr+5oQ2xw==", "integrity": "sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -2606,9 +2606,9 @@
] ]
}, },
"node_modules/@rollup/rollup-android-arm64": { "node_modules/@rollup/rollup-android-arm64": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.49.0.tgz",
"integrity": "sha512-diOdQuw43xTa1RddAFbhIA8toirSzFMcnIg8kvlzRbK26xqEnKJ/vqQnghTAajy2Dcy42v+GMPMo6jq67od+Dw==", "integrity": "sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2620,9 +2620,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-arm64": { "node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.49.0.tgz",
"integrity": "sha512-QhR2KA18fPlJWFefySJPDYZELaVqIUVnYgAOdtJ+B/uH96CFg2l1TQpX19XpUMWUqMyIiyY45wje8K6F4w4/CA==", "integrity": "sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2634,9 +2634,9 @@
] ]
}, },
"node_modules/@rollup/rollup-darwin-x64": { "node_modules/@rollup/rollup-darwin-x64": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.49.0.tgz",
"integrity": "sha512-Q9RMXnQVJ5S1SYpNSTwXDpoQLgJ/fbInWOyjbCnnqTElEyeNvLAB3QvG5xmMQMhFN74bB5ZZJYkKaFPcOG8sGg==", "integrity": "sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -2648,9 +2648,9 @@
] ]
}, },
"node_modules/@rollup/rollup-freebsd-arm64": { "node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.49.0.tgz",
"integrity": "sha512-3jzOhHWM8O8PSfyft+ghXZfBkZawQA0PUGtadKYxFqpcYlOYjTi06WsnYBsbMHLawr+4uWirLlbhcYLHDXR16w==", "integrity": "sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2662,9 +2662,9 @@
] ]
}, },
"node_modules/@rollup/rollup-freebsd-x64": { "node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.49.0.tgz",
"integrity": "sha512-NcD5uVUmE73C/TPJqf78hInZmiSBsDpz3iD5MF/BuB+qzm4ooF2S1HfeTChj5K4AV3y19FFPgxonsxiEpy8v/A==", "integrity": "sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -2676,9 +2676,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-gnueabihf": { "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.49.0.tgz",
"integrity": "sha512-JWnrj8qZgLWRNHr7NbpdnrQ8kcg09EBBq8jVOjmtlB3c8C6IrynAJSMhMVGME4YfTJzIkJqvSUSVJRqkDnu/aA==", "integrity": "sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -2690,9 +2690,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-musleabihf": { "node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.49.0.tgz",
"integrity": "sha512-9xu92F0TxuMH0tD6tG3+GtngwdgSf8Bnz+YcsPG91/r5Vgh5LNofO48jV55priA95p3c92FLmPM7CvsVlnSbGQ==", "integrity": "sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -2704,9 +2704,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-gnu": { "node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.49.0.tgz",
"integrity": "sha512-NLtvJB5YpWn7jlp1rJiY0s+G1Z1IVmkDuiywiqUhh96MIraC0n7XQc2SZ1CZz14shqkM+XN2UrfIo7JB6UufOA==", "integrity": "sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2718,9 +2718,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-musl": { "node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.49.0.tgz",
"integrity": "sha512-QJ4hCOnz2SXgCh+HmpvZkM+0NSGcZACyYS8DGbWn2PbmA0e5xUk4bIP8eqJyNXLtyB4gZ3/XyvKtQ1IFH671vQ==", "integrity": "sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2732,9 +2732,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-loongarch64-gnu": { "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.49.0.tgz",
"integrity": "sha512-Pk0qlGJnhILdIC5zSKQnprFjrGmjfDM7TPZ0FKJxRkoo+kgMRAg4ps1VlTZf8u2vohSicLg7NP+cA5qE96PaFg==", "integrity": "sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==",
"cpu": [ "cpu": [
"loong64" "loong64"
], ],
@@ -2746,9 +2746,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-ppc64-gnu": { "node_modules/@rollup/rollup-linux-ppc64-gnu": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.49.0.tgz",
"integrity": "sha512-/dNFc6rTpoOzgp5GKoYjT6uLo8okR/Chi2ECOmCZiS4oqh3mc95pThWma7Bgyk6/WTEvjDINpiBCuecPLOgBLQ==", "integrity": "sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
@@ -2760,9 +2760,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-riscv64-gnu": { "node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.49.0.tgz",
"integrity": "sha512-YBwXsvsFI8CVA4ej+bJF2d9uAeIiSkqKSPQNn0Wyh4eMDY4wxuSp71BauPjQNCKK2tD2/ksJ7uhJ8X/PVY9bHQ==", "integrity": "sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@@ -2774,9 +2774,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-riscv64-musl": { "node_modules/@rollup/rollup-linux-riscv64-musl": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.49.0.tgz",
"integrity": "sha512-FI3Rr2aGAtl1aHzbkBIamsQyuauYtTF9SDUJ8n2wMXuuxwchC3QkumZa1TEXYIv/1AUp1a25Kwy6ONArvnyeVQ==", "integrity": "sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
@@ -2788,9 +2788,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-s390x-gnu": { "node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.49.0.tgz",
"integrity": "sha512-Dx7qH0/rvNNFmCcIRe1pyQ9/H0XO4v/f0SDoafwRYwc2J7bJZ5N4CHL/cdjamISZ5Cgnon6iazAVRFlxSoHQnQ==", "integrity": "sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
@@ -2802,9 +2802,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-gnu": { "node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.49.0.tgz",
"integrity": "sha512-GUdZKTeKBq9WmEBzvFYuC88yk26vT66lQV8D5+9TgkfbewhLaTHRNATyzpQwwbHIfJvDJ3N9WJ90wK/uR3cy3Q==", "integrity": "sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -2816,9 +2816,9 @@
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-musl": { "node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.49.0.tgz",
"integrity": "sha512-ao58Adz/v14MWpQgYAb4a4h3fdw73DrDGtaiF7Opds5wNyEQwtO6M9dBh89nke0yoZzzaegq6J/EXs7eBebG8A==", "integrity": "sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -2830,9 +2830,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-arm64-msvc": { "node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.49.0.tgz",
"integrity": "sha512-kpFno46bHtjZVdRIOxqaGeiABiToo2J+st7Yce+aiAoo1H0xPi2keyQIP04n2JjDVuxBN6bSz9R6RdTK5hIppw==", "integrity": "sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -2844,9 +2844,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-ia32-msvc": { "node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.49.0.tgz",
"integrity": "sha512-rFYrk4lLk9YUTIeihnQMiwMr6gDhGGSbWThPEDfBoU/HdAtOzPXeexKi7yU8jO+LWRKnmqPN9NviHQf6GDwBcQ==", "integrity": "sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@@ -2858,9 +2858,9 @@
] ]
}, },
"node_modules/@rollup/rollup-win32-x64-msvc": { "node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.48.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.49.0.tgz",
"integrity": "sha512-sq0hHLTgdtwOPDB5SJOuaoHyiP1qSwg+71TQWk8iDS04bW1wIE0oQ6otPiRj2ZvLYNASLMaTp8QRGUVZ+5OL5A==", "integrity": "sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -3256,42 +3256,42 @@
} }
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.5.19", "version": "3.5.20",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.20.tgz",
"integrity": "sha512-/afpyvlkrSNYbPo94Qu8GtIOWS+g5TRdOvs6XZNw6pWQQmj5pBgSZvEPOIZlqWq0YvoUhDDQaQ2TnzuJdOV4hA==", "integrity": "sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/parser": "^7.28.3", "@babel/parser": "^7.28.3",
"@vue/shared": "3.5.19", "@vue/shared": "3.5.20",
"entities": "^4.5.0", "entities": "^4.5.0",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map-js": "^1.2.1" "source-map-js": "^1.2.1"
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.5.19", "version": "3.5.20",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.20.tgz",
"integrity": "sha512-Drs6rPHQZx/pN9S6ml3Z3K/TWCIRPvzG2B/o5kFK9X0MNHt8/E+38tiRfojufrYBfA6FQUFB2qBBRXlcSXWtOA==", "integrity": "sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.5.19", "@vue/compiler-core": "3.5.20",
"@vue/shared": "3.5.19" "@vue/shared": "3.5.20"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.5.19", "version": "3.5.20",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.20.tgz",
"integrity": "sha512-YWCm1CYaJ+2RvNmhCwI7t3I3nU+hOrWGWMsn+Z/kmm1jy5iinnVtlmkiZwbLlbV1SRizX7vHsc0/bG5dj0zRTg==", "integrity": "sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/parser": "^7.28.3", "@babel/parser": "^7.28.3",
"@vue/compiler-core": "3.5.19", "@vue/compiler-core": "3.5.20",
"@vue/compiler-dom": "3.5.19", "@vue/compiler-dom": "3.5.20",
"@vue/compiler-ssr": "3.5.19", "@vue/compiler-ssr": "3.5.20",
"@vue/shared": "3.5.19", "@vue/shared": "3.5.20",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.30.17", "magic-string": "^0.30.17",
"postcss": "^8.5.6", "postcss": "^8.5.6",
@@ -3299,14 +3299,14 @@
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.5.19", "version": "3.5.20",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.19.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.20.tgz",
"integrity": "sha512-/wx0VZtkWOPdiQLWPeQeqpHWR/LuNC7bHfSX7OayBTtUy8wur6vT6EQIX6Et86aED6J+y8tTw43qo2uoqGg5sw==", "integrity": "sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.5.19", "@vue/compiler-dom": "3.5.20",
"@vue/shared": "3.5.19" "@vue/shared": "3.5.20"
} }
}, },
"node_modules/@vue/component-compiler-utils": { "node_modules/@vue/component-compiler-utils": {
@@ -3388,9 +3388,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.5.19", "version": "3.5.20",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.19.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.20.tgz",
"integrity": "sha512-IhXCOn08wgKrLQxRFKKlSacWg4Goi1BolrdEeLYn6tgHjJNXVrWJ5nzoxZqNwl5p88aLlQ8LOaoMa3AYvaKJ/Q==", "integrity": "sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
@@ -4170,9 +4170,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/bootstrap": { "node_modules/bootstrap": {
"version": "5.3.7", "version": "5.3.8",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.7.tgz", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz",
"integrity": "sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==", "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==",
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@@ -4326,9 +4326,9 @@
} }
}, },
"node_modules/browserslist": { "node_modules/browserslist": {
"version": "4.25.3", "version": "4.25.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz",
"integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@@ -4346,8 +4346,8 @@
], ],
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"caniuse-lite": "^1.0.30001735", "caniuse-lite": "^1.0.30001737",
"electron-to-chromium": "^1.5.204", "electron-to-chromium": "^1.5.211",
"node-releases": "^2.0.19", "node-releases": "^2.0.19",
"update-browserslist-db": "^1.1.3" "update-browserslist-db": "^1.1.3"
}, },
@@ -5700,9 +5700,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.208", "version": "1.5.211",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.208.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.211.tgz",
"integrity": "sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==", "integrity": "sha512-IGBvimJkotaLzFnwIVgW9/UD/AOJ2tByUmeOrtqBfACSbAw5b1G0XpvdaieKyc7ULmbwXVx+4e4Be8pOPBrYkw==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },
@@ -6159,9 +6159,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/fast-uri": { "node_modules/fast-uri": {
"version": "3.0.6", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
"integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@@ -7818,9 +7818,9 @@
} }
}, },
"node_modules/laravel-vite-plugin": { "node_modules/laravel-vite-plugin": {
"version": "2.0.0", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-2.0.0.tgz", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-2.0.1.tgz",
"integrity": "sha512-pnaKHInJgiWpG/g+LmaISHl7D/1s5wnOXnrGiBdt4NOs+tYZRw0v/ZANELGX2/dGgHyEzO+iZ6x4idpoK04z/Q==", "integrity": "sha512-zQuvzWfUKQu9oNVi1o0RZAJCwhGsdhx4NEOyrVQwJHaWDseGP9tl7XUPLY2T8Cj6+IrZ6lmyxlR1KC8unf3RLA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -10123,9 +10123,9 @@
} }
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "4.48.0", "version": "4.49.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.48.0.tgz", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.49.0.tgz",
"integrity": "sha512-BXHRqK1vyt9XVSEHZ9y7xdYtuYbwVod2mLwOMFP7t/Eqoc1pHRlG/WdV2qNeNvZHRQdLedaFycljaYYM96RqJQ==", "integrity": "sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -10139,26 +10139,26 @@
"npm": ">=8.0.0" "npm": ">=8.0.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.48.0", "@rollup/rollup-android-arm-eabi": "4.49.0",
"@rollup/rollup-android-arm64": "4.48.0", "@rollup/rollup-android-arm64": "4.49.0",
"@rollup/rollup-darwin-arm64": "4.48.0", "@rollup/rollup-darwin-arm64": "4.49.0",
"@rollup/rollup-darwin-x64": "4.48.0", "@rollup/rollup-darwin-x64": "4.49.0",
"@rollup/rollup-freebsd-arm64": "4.48.0", "@rollup/rollup-freebsd-arm64": "4.49.0",
"@rollup/rollup-freebsd-x64": "4.48.0", "@rollup/rollup-freebsd-x64": "4.49.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.48.0", "@rollup/rollup-linux-arm-gnueabihf": "4.49.0",
"@rollup/rollup-linux-arm-musleabihf": "4.48.0", "@rollup/rollup-linux-arm-musleabihf": "4.49.0",
"@rollup/rollup-linux-arm64-gnu": "4.48.0", "@rollup/rollup-linux-arm64-gnu": "4.49.0",
"@rollup/rollup-linux-arm64-musl": "4.48.0", "@rollup/rollup-linux-arm64-musl": "4.49.0",
"@rollup/rollup-linux-loongarch64-gnu": "4.48.0", "@rollup/rollup-linux-loongarch64-gnu": "4.49.0",
"@rollup/rollup-linux-ppc64-gnu": "4.48.0", "@rollup/rollup-linux-ppc64-gnu": "4.49.0",
"@rollup/rollup-linux-riscv64-gnu": "4.48.0", "@rollup/rollup-linux-riscv64-gnu": "4.49.0",
"@rollup/rollup-linux-riscv64-musl": "4.48.0", "@rollup/rollup-linux-riscv64-musl": "4.49.0",
"@rollup/rollup-linux-s390x-gnu": "4.48.0", "@rollup/rollup-linux-s390x-gnu": "4.49.0",
"@rollup/rollup-linux-x64-gnu": "4.48.0", "@rollup/rollup-linux-x64-gnu": "4.49.0",
"@rollup/rollup-linux-x64-musl": "4.48.0", "@rollup/rollup-linux-x64-musl": "4.49.0",
"@rollup/rollup-win32-arm64-msvc": "4.48.0", "@rollup/rollup-win32-arm64-msvc": "4.49.0",
"@rollup/rollup-win32-ia32-msvc": "4.48.0", "@rollup/rollup-win32-ia32-msvc": "4.49.0",
"@rollup/rollup-win32-x64-msvc": "4.48.0", "@rollup/rollup-win32-x64-msvc": "4.49.0",
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },
@@ -10214,9 +10214,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.90.0", "version": "1.91.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.91.0.tgz",
"integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", "integrity": "sha512-aFOZHGf+ur+bp1bCHZ+u8otKGh77ZtmFyXDo4tlYvT7PWql41Kwd8wdkPqhhT+h2879IVblcHFglIMofsFd1EA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {

View File

@@ -160,7 +160,7 @@
"url": "URL", "url": "URL",
"active": "Actief", "active": "Actief",
"interest_date": "Rentedatum", "interest_date": "Rentedatum",
"administration_currency": "Primary currency", "administration_currency": "Standaardvaluta",
"title": "Titel", "title": "Titel",
"date": "Datum", "date": "Datum",
"book_date": "Boekdatum", "book_date": "Boekdatum",
@@ -180,7 +180,7 @@
"list": { "list": {
"title": "Titel", "title": "Titel",
"active": "Actief?", "active": "Actief?",
"primary_currency": "Primary currency", "primary_currency": "Standaardvaluta",
"trigger": "Trigger", "trigger": "Trigger",
"response": "Reactie", "response": "Reactie",
"delivery": "Bericht", "delivery": "Bericht",

View File

@@ -47,17 +47,17 @@ final class RecurrenceControllerTest extends TestCase
{ {
for ($i = 1; $i <= $count; ++$i) { for ($i = 1; $i <= $count; ++$i) {
$recurrence = Recurrence::create([ $recurrence = Recurrence::create([
'user_id' => $user->id, 'user_id' => $user->id,
'user_group_id' => $user->user_group_id, 'user_group_id' => $user->user_group_id,
'transaction_type_id' => 1, 'transaction_type_id' => 1,
'title' => 'Recurrence ' . $i, 'title' => 'Recurrence '.$i,
'description' => 'Recurrence ' . $i, 'description' => 'Recurrence '.$i,
'first_date' => today(), 'first_date' => today(),
'apply_rules' => 1, 'apply_rules' => 1,
'active' => 1, 'active' => 1,
'repetitions' => 5, 'repetitions' => 5,
]); ]);
} }
} }
@@ -73,7 +73,7 @@ final class RecurrenceControllerTest extends TestCase
public function testAuthenticatedCall(): void public function testAuthenticatedCall(): void
{ {
// act as a user // act as a user
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$response = $this->get(route('api.v1.autocomplete.recurring'), ['Accept' => 'application/json']); $response = $this->get(route('api.v1.autocomplete.recurring'), ['Accept' => 'application/json']);
@@ -83,7 +83,7 @@ final class RecurrenceControllerTest extends TestCase
public function testGivenAuthenticatedRequestWithItems(): void public function testGivenAuthenticatedRequestWithItems(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRecurrences(5, $user); $this->createTestRecurrences(5, $user);
@@ -93,50 +93,50 @@ final class RecurrenceControllerTest extends TestCase
$response->assertJsonCount(5); $response->assertJsonCount(5);
$response->assertJsonFragment(['name' => 'Recurrence 1']); $response->assertJsonFragment(['name' => 'Recurrence 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'active', 'active',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLimited(): void public function testGivenAuthenticatedRequestWithItemsLimited(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRecurrences(5, $user); $this->createTestRecurrences(5, $user);
$response = $this->get(route('api.v1.autocomplete.recurring', [ $response = $this->get(route('api.v1.autocomplete.recurring', [
'query' => 'Recurrence', 'query' => 'Recurrence',
'limit' => 3, 'limit' => 3,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');
$response->assertJsonCount(3); $response->assertJsonCount(3);
$response->assertJsonFragment(['name' => 'Recurrence 1']); $response->assertJsonFragment(['name' => 'Recurrence 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'active', 'active',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLots(): void public function testGivenAuthenticatedRequestWithItemsLots(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRecurrences(20, $user); $this->createTestRecurrences(20, $user);
$response = $this->get(route('api.v1.autocomplete.recurring', [ $response = $this->get(route('api.v1.autocomplete.recurring', [
'query' => 'Recurrence 1', 'query' => 'Recurrence 1',
'limit' => 20, 'limit' => 20,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');

View File

@@ -24,7 +24,6 @@ declare(strict_types=1);
namespace Tests\integration\Api\Autocomplete; namespace Tests\integration\Api\Autocomplete;
use FireflyIII\Models\Recurrence;
use FireflyIII\Models\Rule; use FireflyIII\Models\Rule;
use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleGroup;
use FireflyIII\User; use FireflyIII\User;
@@ -58,16 +57,16 @@ final class RuleControllerTest extends TestCase
); );
for ($i = 1; $i <= $count; ++$i) { for ($i = 1; $i <= $count; ++$i) {
$rule = Rule::create([ $rule = Rule::create([
'user_id' => $user->id, 'user_id' => $user->id,
'user_group_id' => $user->user_group_id, 'user_group_id' => $user->user_group_id,
'rule_group_id' => $ruleGroup->id, 'rule_group_id' => $ruleGroup->id,
'title' => 'Rule ' . $i, 'title' => 'Rule '.$i,
'description' => 'Rule ' . $i, 'description' => 'Rule '.$i,
'order' => 1, 'order' => 1,
'active' => 1, 'active' => 1,
'stop_processing' => 0, 'stop_processing' => 0,
'strict' => 0, 'strict' => 0,
]); ]);
} }
} }
@@ -83,7 +82,7 @@ final class RuleControllerTest extends TestCase
public function testAuthenticatedCall(): void public function testAuthenticatedCall(): void
{ {
// act as a user // act as a user
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$response = $this->get(route('api.v1.autocomplete.rules'), ['Accept' => 'application/json']); $response = $this->get(route('api.v1.autocomplete.rules'), ['Accept' => 'application/json']);
@@ -93,7 +92,7 @@ final class RuleControllerTest extends TestCase
public function testGivenAuthenticatedRequestWithItems(): void public function testGivenAuthenticatedRequestWithItems(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRules(5, $user); $this->createTestRules(5, $user);
@@ -103,50 +102,50 @@ final class RuleControllerTest extends TestCase
$response->assertJsonCount(5); $response->assertJsonCount(5);
$response->assertJsonFragment(['name' => 'Rule 1']); $response->assertJsonFragment(['name' => 'Rule 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'active', 'active',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLimited(): void public function testGivenAuthenticatedRequestWithItemsLimited(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRules(5, $user); $this->createTestRules(5, $user);
$response = $this->get(route('api.v1.autocomplete.rules', [ $response = $this->get(route('api.v1.autocomplete.rules', [
'query' => 'Rule', 'query' => 'Rule',
'limit' => 3, 'limit' => 3,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');
$response->assertJsonCount(3); $response->assertJsonCount(3);
$response->assertJsonFragment(['name' => 'Rule 1']); $response->assertJsonFragment(['name' => 'Rule 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'active', 'active',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLots(): void public function testGivenAuthenticatedRequestWithItemsLots(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRules(20, $user); $this->createTestRules(20, $user);
$response = $this->get(route('api.v1.autocomplete.rules', [ $response = $this->get(route('api.v1.autocomplete.rules', [
'query' => 'Rule 1', 'query' => 'Rule 1',
'limit' => 20, 'limit' => 20,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');

View File

@@ -24,7 +24,6 @@ declare(strict_types=1);
namespace Tests\integration\Api\Autocomplete; namespace Tests\integration\Api\Autocomplete;
use FireflyIII\Models\Rule;
use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleGroup;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\RefreshDatabase;
@@ -50,8 +49,8 @@ final class RuleGroupControllerTest extends TestCase
[ [
'user_id' => $user->id, 'user_id' => $user->id,
'user_group_id' => $user->user_group_id, 'user_group_id' => $user->user_group_id,
'title' => 'RuleGroup ' . $i, 'title' => 'RuleGroup '.$i,
'description' => 'RuleGroup '. $i, 'description' => 'RuleGroup '.$i,
'order' => 1, 'order' => 1,
'active' => 1, 'active' => 1,
'stop_processing' => 0, 'stop_processing' => 0,
@@ -72,7 +71,7 @@ final class RuleGroupControllerTest extends TestCase
public function testAuthenticatedCall(): void public function testAuthenticatedCall(): void
{ {
// act as a user // act as a user
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$response = $this->get(route('api.v1.autocomplete.rule-groups'), ['Accept' => 'application/json']); $response = $this->get(route('api.v1.autocomplete.rule-groups'), ['Accept' => 'application/json']);
@@ -82,7 +81,7 @@ final class RuleGroupControllerTest extends TestCase
public function testGivenAuthenticatedRequestWithItems(): void public function testGivenAuthenticatedRequestWithItems(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRuleGroups(5, $user); $this->createTestRuleGroups(5, $user);
@@ -92,50 +91,50 @@ final class RuleGroupControllerTest extends TestCase
$response->assertJsonCount(5); $response->assertJsonCount(5);
$response->assertJsonFragment(['name' => 'RuleGroup 1']); $response->assertJsonFragment(['name' => 'RuleGroup 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'active', 'active',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLimited(): void public function testGivenAuthenticatedRequestWithItemsLimited(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRuleGroups(5, $user); $this->createTestRuleGroups(5, $user);
$response = $this->get(route('api.v1.autocomplete.rule-groups', [ $response = $this->get(route('api.v1.autocomplete.rule-groups', [
'query' => 'RuleGroup', 'query' => 'RuleGroup',
'limit' => 3, 'limit' => 3,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');
$response->assertJsonCount(3); $response->assertJsonCount(3);
$response->assertJsonFragment(['name' => 'RuleGroup 1']); $response->assertJsonFragment(['name' => 'RuleGroup 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'active', 'active',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLots(): void public function testGivenAuthenticatedRequestWithItemsLots(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestRuleGroups(20, $user); $this->createTestRuleGroups(20, $user);
$response = $this->get(route('api.v1.autocomplete.rule-groups', [ $response = $this->get(route('api.v1.autocomplete.rule-groups', [
'query' => 'RuleGroup 1', 'query' => 'RuleGroup 1',
'limit' => 20, 'limit' => 20,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');

View File

@@ -24,7 +24,6 @@ declare(strict_types=1);
namespace Tests\integration\Api\Autocomplete; namespace Tests\integration\Api\Autocomplete;
use FireflyIII\Models\RuleGroup;
use FireflyIII\Models\Tag; use FireflyIII\Models\Tag;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\RefreshDatabase;
@@ -50,8 +49,8 @@ final class TagControllerTest extends TestCase
[ [
'user_id' => $user->id, 'user_id' => $user->id,
'user_group_id' => $user->user_group_id, 'user_group_id' => $user->user_group_id,
'tag' => 'Tag ' . $i, 'tag' => 'Tag '.$i,
'tag_mode' => 'nothing', 'tag_mode' => 'nothing',
] ]
); );
} }
@@ -69,7 +68,7 @@ final class TagControllerTest extends TestCase
public function testAuthenticatedCall(): void public function testAuthenticatedCall(): void
{ {
// act as a user // act as a user
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$response = $this->get(route('api.v1.autocomplete.tags'), ['Accept' => 'application/json']); $response = $this->get(route('api.v1.autocomplete.tags'), ['Accept' => 'application/json']);
@@ -79,7 +78,7 @@ final class TagControllerTest extends TestCase
public function testGivenAuthenticatedRequestWithItems(): void public function testGivenAuthenticatedRequestWithItems(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestTags(5, $user); $this->createTestTags(5, $user);
@@ -89,50 +88,50 @@ final class TagControllerTest extends TestCase
$response->assertJsonCount(5); $response->assertJsonCount(5);
$response->assertJsonFragment(['name' => 'Tag 1']); $response->assertJsonFragment(['name' => 'Tag 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'tag', 'tag',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLimited(): void public function testGivenAuthenticatedRequestWithItemsLimited(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestTags(5, $user); $this->createTestTags(5, $user);
$response = $this->get(route('api.v1.autocomplete.tags', [ $response = $this->get(route('api.v1.autocomplete.tags', [
'query' => 'Tag', 'query' => 'Tag',
'limit' => 3, 'limit' => 3,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');
$response->assertJsonCount(3); $response->assertJsonCount(3);
$response->assertJsonFragment(['name' => 'Tag 1']); $response->assertJsonFragment(['name' => 'Tag 1']);
$response->assertJsonStructure([ $response->assertJsonStructure([
'*' => [ '*' => [
'id', 'id',
'name', 'name',
'tag', 'tag',
], ],
]); ]);
} }
public function testGivenAuthenticatedRequestWithItemsLots(): void public function testGivenAuthenticatedRequestWithItemsLots(): void
{ {
$user = $this->createAuthenticatedUser(); $user = $this->createAuthenticatedUser();
$this->actingAs($user); $this->actingAs($user);
$this->createTestTags(20, $user); $this->createTestTags(20, $user);
$response = $this->get(route('api.v1.autocomplete.tags', [ $response = $this->get(route('api.v1.autocomplete.tags', [
'query' => 'Tag 1', 'query' => 'Tag 1',
'limit' => 20, 'limit' => 20,
]), ['Accept' => 'application/json']); ]), ['Accept' => 'application/json']);
$response->assertStatus(200); $response->assertStatus(200);
$response->assertHeader('Content-Type', 'application/json'); $response->assertHeader('Content-Type', 'application/json');