diff --git a/.gitignore b/.gitignore index df205919..6049b54f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea vendor/ .phpunit.result.cache +.phpunit.cache diff --git a/composer.json b/composer.json index 9bd4bd0d..66949218 100644 --- a/composer.json +++ b/composer.json @@ -11,18 +11,19 @@ ], "require": { "php": "^8.3", - "laravel/framework": "^11.21", + "laravel/framework": "^11.31.0", "ronasit/laravel-helpers": "^3.0.1-beta", - "laravel/legacy-factories": ">=1.3.0", - "ext-json": "*" + "laravel/legacy-factories": ">=1.4.0", + "ext-json": "*", + "doctrine/dbal": "^4.2" }, "require-dev": { - "fakerphp/faker": "^1.23.1", + "fakerphp/faker": "^1.24.0", "mockery/mockery": "^1.6.12", - "phpunit/phpunit": "^10.5.30", + "phpunit/phpunit": "^10.5.38", "php-coveralls/php-coveralls": "^2.7", - "orchestra/testbench": "^9.3", - "mikey179/vfsstream": "^1.6.11", + "orchestra/testbench": "^9.5.2", + "mikey179/vfsstream": "^1.6.12", "php-mock/php-mock": "^2.5" }, "autoload": { @@ -36,7 +37,9 @@ "autoload-dev": { "psr-4": { "RonasIT\\Support\\Tests\\": "tests/", - "RonasIT\\Support\\Tests\\Support\\": "tests/Support/" + "RonasIT\\Support\\Tests\\Support\\": "tests/Support/", + "App\\Models\\": "tests/Support/Models/", + "App\\Nova\\": "tests/Support/Nova/" }, "files": [ "tests/TestCase.php" diff --git a/composer.lock b/composer.lock index 1544eb9b..df9536be 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a82b7377b826040ff9547a8cc13cf241", + "content-hash": "3ae8814f99b898c358682732ae14648b", "packages": [ { "name": "brick/math", @@ -291,6 +291,161 @@ }, "time": "2024-07-08T12:26:09+00:00" }, + { + "name": "doctrine/dbal", + "version": "4.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/dadd35300837a3a2184bd47d403333b15d0a9bd0", + "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^0.5.3|^1", + "php": "^8.1", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.2", + "phpstan/phpstan": "1.12.6", + "phpstan/phpstan-phpunit": "1.4.0", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "10.5.30", + "psalm/plugin-phpunit": "0.19.0", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.10.2", + "symfony/cache": "^6.3.8|^7.0", + "symfony/console": "^5.4|^6.3|^7.0", + "vimeo/psalm": "5.25.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/4.2.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2024-10-10T18:01:27+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + }, + "time": "2024-01-30T19:34:25+00:00" + }, { "name": "doctrine/inflector", "version": "2.0.10", @@ -593,20 +748,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.17.0", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" + "reference": "cb56001e54359df7ae76dc522d08845dc741621b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/cb56001e54359df7ae76dc522d08845dc741621b", + "reference": "cb56001e54359df7ae76dc522d08845dc741621b", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -648,9 +803,9 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.18.0" }, - "time": "2023-11-17T15:01:25+00:00" + "time": "2024-11-01T03:51:45+00:00" }, { "name": "fruitcake/php-cors", @@ -1959,16 +2114,16 @@ }, { "name": "maatwebsite/excel", - "version": "3.1.56", + "version": "3.1.60", "source": { "type": "git", "url": "https://github.com/SpartnerNL/Laravel-Excel.git", - "reference": "0381d0225b42c3f328d90f0dd05ca071fca3953f" + "reference": "4906dc57fbe6a41c405a77e1f7cac9078982c9c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/0381d0225b42c3f328d90f0dd05ca071fca3953f", - "reference": "0381d0225b42c3f328d90f0dd05ca071fca3953f", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/4906dc57fbe6a41c405a77e1f7cac9078982c9c7", + "reference": "4906dc57fbe6a41c405a77e1f7cac9078982c9c7", "shasum": "" }, "require": { @@ -1976,7 +2131,7 @@ "ext-json": "*", "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0", "php": "^7.0||^8.0", - "phpoffice/phpspreadsheet": "^1.18", + "phpoffice/phpspreadsheet": "^1.29.4", "psr/simple-cache": "^1.0||^2.0||^3.0" }, "require-dev": { @@ -2024,7 +2179,7 @@ ], "support": { "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", - "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.56" + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.60" }, "funding": [ { @@ -2036,20 +2191,20 @@ "type": "github" } ], - "time": "2024-08-19T09:40:43+00:00" + "time": "2024-11-11T12:27:45+00:00" }, { "name": "maennchen/zipstream-php", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1" + "reference": "6187e9cc4493da94b9b63eb2315821552015fca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1", - "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/6187e9cc4493da94b9b63eb2315821552015fca9", + "reference": "6187e9cc4493da94b9b63eb2315821552015fca9", "shasum": "" }, "require": { @@ -2105,19 +2260,15 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.1" }, "funding": [ { "url": "https://github.com/maennchen", "type": "github" - }, - { - "url": "https://opencollective.com/zipstream", - "type": "open_collective" } ], - "time": "2023-06-21T14:59:35+00:00" + "time": "2024-10-10T12:33:01+00:00" }, { "name": "markbaker/complex", @@ -2331,16 +2482,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", "shasum": "" }, "require": { @@ -2379,7 +2530,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" }, "funding": [ { @@ -2387,7 +2538,7 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2024-11-08T17:47:46+00:00" }, { "name": "nesbot/carbon", @@ -2645,16 +2796,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.3.0", + "version": "v5.3.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a" + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3abf7425cd284141dc5d8d14a9ee444de3345d1a", - "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", "shasum": "" }, "require": { @@ -2697,9 +2848,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" }, - "time": "2024-09-29T13:56:26+00:00" + "time": "2024-10-08T18:51:32+00:00" }, { "name": "nunomaduro/termwind", @@ -3115,16 +3266,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.29.2", + "version": "1.29.4", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "3a5a818d7d3e4b5bd2e56fb9de44dbded6eae07f" + "reference": "7ca7e325dca3adb6a598385aab81f527b8d6c75d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/3a5a818d7d3e4b5bd2e56fb9de44dbded6eae07f", - "reference": "3a5a818d7d3e4b5bd2e56fb9de44dbded6eae07f", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/7ca7e325dca3adb6a598385aab81f527b8d6c75d", + "reference": "7ca7e325dca3adb6a598385aab81f527b8d6c75d", "shasum": "" }, "require": { @@ -3214,9 +3365,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.2" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.4" }, - "time": "2024-09-29T07:04:47+00:00" + "time": "2024-11-10T16:26:22+00:00" }, { "name": "phpoption/phpoption", @@ -3616,16 +3767,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.30", + "version": "10.5.38", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b15524febac0153876b4ba9aab3326c2ee94c897" + "reference": "a86773b9e887a67bc53efa9da9ad6e3f2498c132" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b15524febac0153876b4ba9aab3326c2ee94c897", - "reference": "b15524febac0153876b4ba9aab3326c2ee94c897", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a86773b9e887a67bc53efa9da9ad6e3f2498c132", + "reference": "a86773b9e887a67bc53efa9da9ad6e3f2498c132", "shasum": "" }, "require": { @@ -3639,14 +3790,14 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.15", + "phpunit/php-code-coverage": "^10.1.16", "phpunit/php-file-iterator": "^4.1.0", "phpunit/php-invoker": "^4.0.0", "phpunit/php-text-template": "^3.0.1", "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.2", + "sebastian/comparator": "^5.0.3", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", "sebastian/exporter": "^5.1.2", @@ -3697,7 +3848,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.30" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.38" }, "funding": [ { @@ -3713,7 +3864,56 @@ "type": "tidelift" } ], - "time": "2024-08-13T06:09:37+00:00" + "time": "2024-10-28T13:06:21+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" }, { "name": "psr/clock", @@ -4604,16 +4804,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.2", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", - "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { @@ -4624,7 +4824,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.4" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -4669,7 +4869,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.2" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -4677,7 +4877,7 @@ "type": "github" } ], - "time": "2024-08-12T06:03:08+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", @@ -5352,7 +5552,7 @@ }, { "name": "symfony/clock", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", @@ -5406,7 +5606,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/clock/tree/v7.2.0-RC1" }, "funding": [ { @@ -5426,16 +5626,16 @@ }, { "name": "symfony/console", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3fda7e592a83a6f487cdce3146f6b3408e6f01de" + "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3fda7e592a83a6f487cdce3146f6b3408e6f01de", - "reference": "3fda7e592a83a6f487cdce3146f6b3408e6f01de", + "url": "https://api.github.com/repos/symfony/console/zipball/23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", + "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", "shasum": "" }, "require": { @@ -5499,7 +5699,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/console/tree/v7.2.0-RC1" }, "funding": [ { @@ -5515,11 +5715,11 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:35:02+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "symfony/css-selector", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -5564,7 +5764,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/css-selector/tree/v7.2.0-RC1" }, "funding": [ { @@ -5651,7 +5851,7 @@ }, { "name": "symfony/error-handler", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", @@ -5706,7 +5906,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/error-handler/tree/v7.2.0-RC1" }, "funding": [ { @@ -5726,7 +5926,7 @@ }, { "name": "symfony/event-dispatcher", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -5786,7 +5986,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0-RC1" }, "funding": [ { @@ -5882,7 +6082,7 @@ }, { "name": "symfony/finder", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", @@ -5926,7 +6126,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/finder/tree/v7.2.0-RC1" }, "funding": [ { @@ -5946,16 +6146,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9a51d2afa16b17923ecbf0dfd51a71a56a3136d4" + "reference": "b77b5a8295ea945ae6f4f91adc5204a2405cc579" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9a51d2afa16b17923ecbf0dfd51a71a56a3136d4", - "reference": "9a51d2afa16b17923ecbf0dfd51a71a56a3136d4", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b77b5a8295ea945ae6f4f91adc5204a2405cc579", + "reference": "b77b5a8295ea945ae6f4f91adc5204a2405cc579", "shasum": "" }, "require": { @@ -5966,12 +6166,12 @@ }, "conflict": { "doctrine/dbal": "<3.6", - "symfony/cache": "<6.4" + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4|^7.0", + "symfony/cache": "^6.4.12|^7.1.5", "symfony/dependency-injection": "^6.4|^7.0", "symfony/expression-language": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -6004,7 +6204,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.0-RC1" }, "funding": [ { @@ -6020,20 +6220,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:03:19+00:00" + "time": "2024-11-09T09:29:03+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "70a5fd8f9614f8ed1f0a1640f00d59047e7619bb" + "reference": "ad175ab2d5a75702194b5336556a348717a39f0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/70a5fd8f9614f8ed1f0a1640f00d59047e7619bb", - "reference": "70a5fd8f9614f8ed1f0a1640f00d59047e7619bb", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ad175ab2d5a75702194b5336556a348717a39f0f", + "reference": "ad175ab2d5a75702194b5336556a348717a39f0f", "shasum": "" }, "require": { @@ -6118,7 +6318,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.0-RC1" }, "funding": [ { @@ -6134,20 +6334,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T10:00:45+00:00" + "time": "2024-11-13T14:53:30+00:00" }, { "name": "symfony/mailer", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a305f46bb8bd635620dcdcec485b2f52aa1345d7" + "reference": "abbcc8b84a81d08ee1a0e6ca60a90d0aaf24e79b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a305f46bb8bd635620dcdcec485b2f52aa1345d7", - "reference": "a305f46bb8bd635620dcdcec485b2f52aa1345d7", + "url": "https://api.github.com/repos/symfony/mailer/zipball/abbcc8b84a81d08ee1a0e6ca60a90d0aaf24e79b", + "reference": "abbcc8b84a81d08ee1a0e6ca60a90d0aaf24e79b", "shasum": "" }, "require": { @@ -6198,7 +6398,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/mailer/tree/v7.2.0-RC1" }, "funding": [ { @@ -6214,20 +6414,20 @@ "type": "tidelift" } ], - "time": "2024-10-06T12:00:20+00:00" + "time": "2024-11-09T06:58:08+00:00" }, { "name": "symfony/mime", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "c73ca0f7f11fb609356b84d0d808053bf433880a" + "reference": "f31946de86ef8fcf48ae76652542f29df2ef4428" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/c73ca0f7f11fb609356b84d0d808053bf433880a", - "reference": "c73ca0f7f11fb609356b84d0d808053bf433880a", + "url": "https://api.github.com/repos/symfony/mime/zipball/f31946de86ef8fcf48ae76652542f29df2ef4428", + "reference": "f31946de86ef8fcf48ae76652542f29df2ef4428", "shasum": "" }, "require": { @@ -6282,7 +6482,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/mime/tree/v7.2.0-RC1" }, "funding": [ { @@ -6298,7 +6498,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T09:31:08+00:00" + "time": "2024-11-10T09:50:45+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6938,16 +7138,16 @@ }, { "name": "symfony/process", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "37f5c1fc0f83db4900ea961c5fc0180e2a279b6a" + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/37f5c1fc0f83db4900ea961c5fc0180e2a279b6a", - "reference": "37f5c1fc0f83db4900ea961c5fc0180e2a279b6a", + "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", "shasum": "" }, "require": { @@ -6979,7 +7179,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/process/tree/v7.2.0-RC1" }, "funding": [ { @@ -6995,11 +7195,11 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:25:18+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "symfony/routing", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", @@ -7060,7 +7260,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/routing/tree/v7.2.0-RC1" }, "funding": [ { @@ -7163,16 +7363,16 @@ }, { "name": "symfony/string", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "205580699b4d3e11f7b679faf2c0f57ffca6981c" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/205580699b4d3e11f7b679faf2c0f57ffca6981c", - "reference": "205580699b4d3e11f7b679faf2c0f57ffca6981c", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { @@ -7230,7 +7430,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/string/tree/v7.2.0-RC1" }, "funding": [ { @@ -7246,11 +7446,11 @@ "type": "tidelift" } ], - "time": "2024-10-23T06:56:12+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/translation", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", @@ -7325,7 +7525,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/translation/tree/v7.2.0-RC1" }, "funding": [ { @@ -7423,7 +7623,7 @@ }, { "name": "symfony/uid", - "version": "v7.2.0-BETA1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", @@ -7477,7 +7677,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.2.0-BETA1" + "source": "https://github.com/symfony/uid/tree/v7.2.0-RC1" }, "funding": [ { @@ -7497,16 +7697,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.2.0-BETA2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "131a71f779b76fefc41465f1ccbe701a02b4389b" + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/131a71f779b76fefc41465f1ccbe701a02b4389b", - "reference": "131a71f779b76fefc41465f1ccbe701a02b4389b", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", "shasum": "" }, "require": { @@ -7560,7 +7760,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.0-BETA2" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.0-RC1" }, "funding": [ { @@ -7576,20 +7776,20 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:35:02+00:00" + "time": "2024-11-08T15:48:14+00:00" }, { "name": "tecnickcom/tcpdf", - "version": "6.7.5", + "version": "6.7.7", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "951eabf0338ec2522bd0d5d9c79b08a3a3d36b36" + "reference": "cfbc0028cc23f057f2baf9e73bdc238153c22086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/951eabf0338ec2522bd0d5d9c79b08a3a3d36b36", - "reference": "951eabf0338ec2522bd0d5d9c79b08a3a3d36b36", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/cfbc0028cc23f057f2baf9e73bdc238153c22086", + "reference": "cfbc0028cc23f057f2baf9e73bdc238153c22086", "shasum": "" }, "require": { @@ -7640,7 +7840,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/TCPDF/issues", - "source": "https://github.com/tecnickcom/TCPDF/tree/6.7.5" + "source": "https://github.com/tecnickcom/TCPDF/tree/6.7.7" }, "funding": [ { @@ -7648,7 +7848,7 @@ "type": "custom" } ], - "time": "2024-04-20T17:25:10+00:00" + "time": "2024-10-26T12:15:02+00:00" }, { "name": "theseer/tokenizer", @@ -7973,16 +8173,16 @@ "packages-dev": [ { "name": "fakerphp/faker", - "version": "v1.23.1", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + "reference": "a136842a532bac9ecd8a1c723852b09915d7db50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/a136842a532bac9ecd8a1c723852b09915d7db50", + "reference": "a136842a532bac9ecd8a1c723852b09915d7db50", "shasum": "" }, "require": { @@ -8030,32 +8230,32 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.0" }, - "time": "2024-01-02T13:46:09+00:00" + "time": "2024-11-07T15:11:20+00:00" }, { "name": "filp/whoops", - "version": "2.15.4", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", + "php": "^7.1 || ^8.0", "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -8095,7 +8295,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "source": "https://github.com/filp/whoops/tree/2.16.0" }, "funding": [ { @@ -8103,7 +8303,7 @@ "type": "github" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2024-09-25T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -8156,18 +8356,96 @@ }, "time": "2020-07-09T08:09:16+00:00" }, + { + "name": "laravel/pail", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pail.git", + "reference": "353ac12134b98e2e7c3333d916bd3e523931e583" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pail/zipball/353ac12134b98e2e7c3333d916bd3e523931e583", + "reference": "353ac12134b98e2e7c3333d916bd3e523931e583", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/console": "^10.24|^11.0", + "illuminate/contracts": "^10.24|^11.0", + "illuminate/log": "^10.24|^11.0", + "illuminate/process": "^10.24|^11.0", + "illuminate/support": "^10.24|^11.0", + "nunomaduro/termwind": "^1.15|^2.0", + "php": "^8.2", + "symfony/console": "^6.0|^7.0" + }, + "require-dev": { + "laravel/framework": "^10.24|^11.0", + "laravel/pint": "^1.13", + "orchestra/testbench-core": "^8.12|^9.0", + "pestphp/pest": "^2.20", + "pestphp/pest-plugin-type-coverage": "^2.3", + "phpstan/phpstan": "^1.10", + "symfony/var-dumper": "^6.3|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Pail\\PailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Pail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Easily delve into your Laravel application's log files directly from the command line.", + "homepage": "https://github.com/laravel/pail", + "keywords": [ + "laravel", + "logs", + "php", + "tail" + ], + "support": { + "issues": "https://github.com/laravel/pail/issues", + "source": "https://github.com/laravel/pail" + }, + "time": "2024-10-23T12:56:23+00:00" + }, { "name": "laravel/tinker", - "version": "v2.9.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", - "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5", + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5", "shasum": "" }, "require": { @@ -8218,29 +8496,30 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.9.0" + "source": "https://github.com/laravel/tinker/tree/v2.10.0" }, - "time": "2024-01-04T16:10:04+00:00" + "time": "2024-09-23T13:32:56+00:00" }, { "name": "mikey179/vfsstream", - "version": "v1.6.11", + "version": "v1.6.12", "source": { "type": "git", "url": "https://github.com/bovigo/vfsStream.git", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f" + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^4.5|^5.0" + "phpunit/phpunit": "^7.5||^8.5||^9.6", + "yoast/phpunit-polyfills": "^2.0" }, "type": "library", "extra": { @@ -8271,7 +8550,7 @@ "source": "https://github.com/bovigo/vfsStream/tree/master", "wiki": "https://github.com/bovigo/vfsStream/wiki" }, - "time": "2022-02-23T02:02:42+00:00" + "time": "2024-08-29T18:43:31+00:00" }, { "name": "mockery/mockery", @@ -8358,23 +8637,23 @@ }, { "name": "nunomaduro/collision", - "version": "v8.4.0", + "version": "v8.5.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "e7d1aa8ed753f63fa816932bbc89678238843b4a" + "reference": "f5c101b929c958e849a633283adff296ed5f38f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/e7d1aa8ed753f63fa816932bbc89678238843b4a", - "reference": "e7d1aa8ed753f63fa816932bbc89678238843b4a", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5", + "reference": "f5c101b929c958e849a633283adff296ed5f38f5", "shasum": "" }, "require": { - "filp/whoops": "^2.15.4", - "nunomaduro/termwind": "^2.0.1", + "filp/whoops": "^2.16.0", + "nunomaduro/termwind": "^2.1.0", "php": "^8.2.0", - "symfony/console": "^7.1.3" + "symfony/console": "^7.1.5" }, "conflict": { "laravel/framework": "<11.0.0 || >=12.0.0", @@ -8382,14 +8661,14 @@ }, "require-dev": { "larastan/larastan": "^2.9.8", - "laravel/framework": "^11.19.0", - "laravel/pint": "^1.17.1", - "laravel/sail": "^1.31.0", - "laravel/sanctum": "^4.0.2", - "laravel/tinker": "^2.9.0", - "orchestra/testbench-core": "^9.2.3", - "pestphp/pest": "^2.35.0 || ^3.0.0", - "sebastian/environment": "^6.1.0 || ^7.0.0" + "laravel/framework": "^11.28.0", + "laravel/pint": "^1.18.1", + "laravel/sail": "^1.36.0", + "laravel/sanctum": "^4.0.3", + "laravel/tinker": "^2.10.0", + "orchestra/testbench-core": "^9.5.3", + "pestphp/pest": "^2.36.0 || ^3.4.0", + "sebastian/environment": "^6.1.0 || ^7.2.0" }, "type": "library", "extra": { @@ -8451,29 +8730,29 @@ "type": "patreon" } ], - "time": "2024-08-03T15:32:23+00:00" + "time": "2024-10-15T16:06:32+00:00" }, { "name": "orchestra/canvas", - "version": "v9.1.1", + "version": "v9.1.3", "source": { "type": "git", "url": "https://github.com/orchestral/canvas.git", - "reference": "c49867fac16b6286bf2b8360088620e697a2ea92" + "reference": "dbe51d918c4614f9c5ac9b7b7d3baac2360daf5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/canvas/zipball/c49867fac16b6286bf2b8360088620e697a2ea92", - "reference": "c49867fac16b6286bf2b8360088620e697a2ea92", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/dbe51d918c4614f9c5ac9b7b7d3baac2360daf5d", + "reference": "dbe51d918c4614f9c5ac9b7b7d3baac2360daf5d", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "composer/semver": "^3.0", - "illuminate/console": "^11.20", - "illuminate/database": "^11.20", - "illuminate/filesystem": "^11.20", - "illuminate/support": "^11.20", + "illuminate/console": "^11.26", + "illuminate/database": "^11.26", + "illuminate/filesystem": "^11.26", + "illuminate/support": "^11.26", "orchestra/canvas-core": "^9.0", "orchestra/testbench-core": "^9.2", "php": "^8.2", @@ -8481,7 +8760,7 @@ "symfony/yaml": "^7.0" }, "require-dev": { - "laravel/framework": "^11.20", + "laravel/framework": "^11.26", "laravel/pint": "^1.17", "mockery/mockery": "^1.6", "phpstan/phpstan": "^1.11", @@ -8524,9 +8803,9 @@ "description": "Code Generators for Laravel Applications and Packages", "support": { "issues": "https://github.com/orchestral/canvas/issues", - "source": "https://github.com/orchestral/canvas/tree/v9.1.1" + "source": "https://github.com/orchestral/canvas/tree/v9.1.3" }, - "time": "2024-08-06T17:20:26+00:00" + "time": "2024-10-02T01:00:54+00:00" }, { "name": "orchestra/canvas-core", @@ -8598,16 +8877,16 @@ }, { "name": "orchestra/testbench", - "version": "v9.3.0", + "version": "v9.5.2", "source": { "type": "git", "url": "https://github.com/orchestral/testbench.git", - "reference": "6084d0793bae571713e96d48557562bb8276aa7b" + "reference": "bc404d840ffbb722bf0bbb042251ef83223482f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/6084d0793bae571713e96d48557562bb8276aa7b", - "reference": "6084d0793bae571713e96d48557562bb8276aa7b", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/bc404d840ffbb722bf0bbb042251ef83223482f9", + "reference": "bc404d840ffbb722bf0bbb042251ef83223482f9", "shasum": "" }, "require": { @@ -8615,8 +8894,8 @@ "fakerphp/faker": "^1.23", "laravel/framework": "^11.11", "mockery/mockery": "^1.6", - "orchestra/testbench-core": "^9.3", - "orchestra/workbench": "^9.5", + "orchestra/testbench-core": "^9.5.3", + "orchestra/workbench": "^9.6", "php": "^8.2", "phpunit/phpunit": "^10.5 || ^11.0.1", "symfony/process": "^7.0", @@ -8647,22 +8926,22 @@ ], "support": { "issues": "https://github.com/orchestral/testbench/issues", - "source": "https://github.com/orchestral/testbench/tree/v9.3.0" + "source": "https://github.com/orchestral/testbench/tree/v9.5.2" }, - "time": "2024-08-14T06:29:45+00:00" + "time": "2024-10-06T13:07:57+00:00" }, { "name": "orchestra/testbench-core", - "version": "v9.3.0", + "version": "v9.5.6", "source": { "type": "git", "url": "https://github.com/orchestral/testbench-core.git", - "reference": "d66217119f326f82190a3638739a92a985ad73b3" + "reference": "26860d007c9316a20b1e9986dadb38f3ffb35433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/d66217119f326f82190a3638739a92a985ad73b3", - "reference": "d66217119f326f82190a3638739a92a985ad73b3", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/26860d007c9316a20b1e9986dadb38f3ffb35433", + "reference": "26860d007c9316a20b1e9986dadb38f3ffb35433", "shasum": "" }, "require": { @@ -8673,8 +8952,9 @@ "conflict": { "brianium/paratest": "<7.3.0 || >=8.0.0", "laravel/framework": "<11.11.0 || >=12.0.0", + "laravel/serializable-closure": "<1.3.0 || >=2.0.0", "nunomaduro/collision": "<8.0.0 || >=9.0.0", - "phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.4.0" + "phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.5.0" }, "require-dev": { "fakerphp/faker": "^1.23", @@ -8738,41 +9018,43 @@ "issues": "https://github.com/orchestral/testbench/issues", "source": "https://github.com/orchestral/testbench-core" }, - "time": "2024-08-14T05:55:35+00:00" + "time": "2024-10-30T23:18:34+00:00" }, { "name": "orchestra/workbench", - "version": "v9.5.0", + "version": "v9.7.0", "source": { "type": "git", "url": "https://github.com/orchestral/workbench.git", - "reference": "db7ba7a09d5e3f6bc6cbbea44d58aa18c10ab08f" + "reference": "1744d07bfeee488270039b3b21605f528c3b696d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/workbench/zipball/db7ba7a09d5e3f6bc6cbbea44d58aa18c10ab08f", - "reference": "db7ba7a09d5e3f6bc6cbbea44d58aa18c10ab08f", + "url": "https://api.github.com/repos/orchestral/workbench/zipball/1744d07bfeee488270039b3b21605f528c3b696d", + "reference": "1744d07bfeee488270039b3b21605f528c3b696d", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "fakerphp/faker": "^1.23", "laravel/framework": "^11.11", + "laravel/pail": "^1.2", "laravel/tinker": "^2.9", "nunomaduro/collision": "^8.0", "orchestra/canvas": "^9.1", - "orchestra/testbench-core": "^9.2", - "php": "^8.1", + "orchestra/testbench-core": "^9.5.3", + "php": "^8.2", "spatie/laravel-ray": "^1.35", - "symfony/polyfill-php83": "^1.28", - "symfony/yaml": "^7.0" + "symfony/polyfill-php83": "^1.31", + "symfony/polyfill-php84": "^1.31", + "symfony/yaml": "^7.0.3" }, "require-dev": { "laravel/pint": "^1.17", - "mockery/mockery": "^1.6", + "mockery/mockery": "^1.6.10", "phpstan/phpstan": "^1.11", - "phpunit/phpunit": "^10.5 || ^11.0", - "symfony/process": "^7.0" + "phpunit/phpunit": "^10.5.35 || ^11.3.6", + "symfony/process": "^7.0.3" }, "suggest": { "ext-pcntl": "Required to use all features of the console signal trapping." @@ -8802,9 +9084,9 @@ ], "support": { "issues": "https://github.com/orchestral/workbench/issues", - "source": "https://github.com/orchestral/workbench/tree/v9.5.0" + "source": "https://github.com/orchestral/workbench/tree/v9.7.0" }, - "time": "2024-08-14T00:24:43+00:00" + "time": "2024-10-24T06:22:45+00:00" }, { "name": "php-coveralls/php-coveralls", @@ -9019,16 +9301,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.11.11", + "version": "1.12.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "707c2aed5d8d0075666e673a5e71440c1d01a5a3" + "reference": "fc463b5d0fe906dcf19689be692c65c50406a071" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/707c2aed5d8d0075666e673a5e71440c1d01a5a3", - "reference": "707c2aed5d8d0075666e673a5e71440c1d01a5a3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fc463b5d0fe906dcf19689be692c65c50406a071", + "reference": "fc463b5d0fe906dcf19689be692c65c50406a071", "shasum": "" }, "require": { @@ -9073,7 +9355,7 @@ "type": "github" } ], - "time": "2024-08-19T14:37:29+00:00" + "time": "2024-11-11T15:37:09+00:00" }, { "name": "psy/psysh", @@ -9156,21 +9438,21 @@ }, { "name": "rector/rector", - "version": "1.2.3", + "version": "1.2.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "2433e95410aef1b34b15d7f1b6a134365a4ddb39" + "reference": "40f9cf38c05296bd32f444121336a521a293fa61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/2433e95410aef1b34b15d7f1b6a134365a4ddb39", - "reference": "2433e95410aef1b34b15d7f1b6a134365a4ddb39", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61", + "reference": "40f9cf38c05296bd32f444121336a521a293fa61", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.11.9" + "phpstan/phpstan": "^1.12.5" }, "conflict": { "rector/rector-doctrine": "*", @@ -9203,7 +9485,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.2.3" + "source": "https://github.com/rectorphp/rector/tree/1.2.10" }, "funding": [ { @@ -9211,7 +9493,7 @@ "type": "github" } ], - "time": "2024-08-12T16:36:46+00:00" + "time": "2024-11-08T13:59:10+00:00" }, { "name": "spatie/backtrace", @@ -9500,16 +9782,16 @@ }, { "name": "symfony/config", - "version": "v7.1.1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2" + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", - "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", + "url": "https://api.github.com/repos/symfony/config/zipball/bcd3c4adf0144dee5011bb35454728c38adec055", + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055", "shasum": "" }, "require": { @@ -9555,7 +9837,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.1.1" + "source": "https://github.com/symfony/config/tree/v7.2.0-RC1" }, "funding": [ { @@ -9571,20 +9853,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-11-04T11:36:24+00:00" }, { "name": "symfony/filesystem", - "version": "v7.1.2", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "92a91985250c251de9b947a14bb2c9390b1a562c" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c", - "reference": "92a91985250c251de9b947a14bb2c9390b1a562c", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { @@ -9621,7 +9903,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.2" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0-RC1" }, "funding": [ { @@ -9637,24 +9919,24 @@ "type": "tidelift" } ], - "time": "2024-06-28T10:03:55+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "c027e6a3c6aee334663ec21f5852e89738abc805" + "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c027e6a3c6aee334663ec21f5852e89738abc805", - "reference": "c027e6a3c6aee334663ec21f5852e89738abc805", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956", + "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-iconv": "*" @@ -9701,7 +9983,83 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/e5493eb51311ab0b1cc2243416613f06ed8f18bd", + "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.31.0" }, "funding": [ { @@ -9717,20 +10075,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T12:04:04+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.1.1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" + "reference": "696f418b0d722a4225e1c3d95489d262971ca924" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/696f418b0d722a4225e1c3d95489d262971ca924", + "reference": "696f418b0d722a4225e1c3d95489d262971ca924", "shasum": "" }, "require": { @@ -9763,7 +10121,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" + "source": "https://github.com/symfony/stopwatch/tree/v7.2.0-RC1" }, "funding": [ { @@ -9779,24 +10137,25 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/yaml", - "version": "v7.1.1", + "version": "v7.2.0-RC1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "fa34c77015aa6720469db7003567b9f772492bf2" + "reference": "099581e99f557e9f16b43c5916c26380b54abb22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/fa34c77015aa6720469db7003567b9f772492bf2", - "reference": "fa34c77015aa6720469db7003567b9f772492bf2", + "url": "https://api.github.com/repos/symfony/yaml/zipball/099581e99f557e9f16b43c5916c26380b54abb22", + "reference": "099581e99f557e9f16b43c5916c26380b54abb22", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -9834,7 +10193,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.1.1" + "source": "https://github.com/symfony/yaml/tree/v7.2.0-RC1" }, "funding": [ { @@ -9850,7 +10209,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-10-23T06:56:12+00:00" }, { "name": "zbateson/mail-mime-parser", diff --git a/src/EntityGeneratorServiceProvider.php b/src/EntityGeneratorServiceProvider.php index c8342a39..e880dbf5 100644 --- a/src/EntityGeneratorServiceProvider.php +++ b/src/EntityGeneratorServiceProvider.php @@ -9,6 +9,8 @@ class EntityGeneratorServiceProvider extends ServiceProvider { public function boot() { + $this->mergeConfigFrom(getcwd() . '/config/entity-generator.php', 'entity-generator'); + $this->commands([ MakeEntityCommand::class ]); diff --git a/src/Generators/AbstractTestsGenerator.php b/src/Generators/AbstractTestsGenerator.php index c80466f7..780f889d 100644 --- a/src/Generators/AbstractTestsGenerator.php +++ b/src/Generators/AbstractTestsGenerator.php @@ -52,7 +52,7 @@ protected function createDump(): void $fixturePath = $this->getFixturesPath(); if (!file_exists($fixturePath)) { - mkdir_recursively($fixturePath); + mkdir($fixturePath, 0777, true); } $dumpName = $this->getDumpName(); diff --git a/src/Generators/EntityGenerator.php b/src/Generators/EntityGenerator.php index 97ddd3c0..7d62c35a 100644 --- a/src/Generators/EntityGenerator.php +++ b/src/Generators/EntityGenerator.php @@ -93,7 +93,7 @@ protected function getOrCreateNamespace(string $path): string $fullPath = base_path($path); if (!file_exists($fullPath)) { - mkdir_recursively($fullPath); + mkdir($fullPath, 0777, true); } return implode('\\', $namespace); @@ -126,7 +126,7 @@ protected function saveClass($path, $name, $content, $additionalEntityFolder = f } if (!file_exists($entitiesPath)) { - mkdir_recursively($entitiesPath); + mkdir($entitiesPath, 0777, true); } return file_put_contents($classPath, $content); diff --git a/src/Generators/NovaTestGenerator.php b/src/Generators/NovaTestGenerator.php index 837d7ea8..eafac93b 100644 --- a/src/Generators/NovaTestGenerator.php +++ b/src/Generators/NovaTestGenerator.php @@ -63,10 +63,6 @@ protected function getActions(): array { $actions = $this->loadNovaActions(); - if (empty($actions)) { - return []; - } - $actions = array_unique(array_map(function ($action) { return get_class($action); }, $actions)); diff --git a/src/Support/DatabaseNovaField.php b/src/Support/DatabaseNovaField.php index bfa7bd6b..d3033625 100644 --- a/src/Support/DatabaseNovaField.php +++ b/src/Support/DatabaseNovaField.php @@ -9,7 +9,7 @@ class DatabaseNovaField extends AbstractNovaField public function __construct(Column $field) { $this->isRequired = $field->getNotNull(); - $this->type = $field->getType()->getName(); + $this->type = strtolower($field->getType()->getBindingType()->name); $this->name = $field->getName(); } } diff --git a/stubs/nova_resource.blade.php b/stubs/nova_resource.blade.php index 9135128f..760d5af9 100644 --- a/stubs/nova_resource.blade.php +++ b/stubs/nova_resource.blade.php @@ -26,13 +26,13 @@ public function fields(Request $request): array { return [ @foreach($fields as $fieldName => $fieldOptions) - {{$fieldOptions['type']}}::make('{{Str::headline($fieldName)}}') +@php($name = ctype_upper($fieldName) ? $fieldName : Str::headline($fieldName)) + {{$fieldOptions['type']}}::make('{{$name}}') @if($fieldOptions['is_required']) ->required() @endif ->sortable(), @endforeach - ]; } diff --git a/tests/ControllerGeneratorTest.php b/tests/ControllerGeneratorTest.php new file mode 100644 index 00000000..a551dcf5 --- /dev/null +++ b/tests/ControllerGeneratorTest.php @@ -0,0 +1,93 @@ +mockClass(ControllerGenerator::class, [ + $this->classExistsMethodCall(['controllers', 'PostController']) + ]); + + $this->assertExceptionThrowed( + className: ClassAlreadyExistsException::class, + message: 'Cannot create PostController cause PostController already exists. Remove PostController.', + ); + + app(ControllerGenerator::class) + ->setModel('Post') + ->generate(); + } + + public function testModelServiceNotExists() + { + $this->mockClass(ControllerGenerator::class, [ + $this->classExistsMethodCall(['controllers', 'PostController'], false), + $this->classExistsMethodCall(['services', 'PostService'], false) + ]); + + $this->assertExceptionThrowed( + className: ClassNotExistsException::class, + message: 'Cannot create PostService cause PostService does not exists. Create a PostService by himself.', + ); + + app(ControllerGenerator::class) + ->setModel('Post') + ->generate(); + } + + public function testRouteFileNotExists() + { + $this->mockFilesystemWithoutRoutesFile(); + + $this->assertExceptionThrowed( + className: FileNotFoundException::class, + message: "Not found file with routes. Create a routes file on path: 'vfs://root/routes/api.php'", + ); + + app(ControllerGenerator::class) + ->setModel('Post') + ->setCrudOptions(['C', 'R', 'U', 'D']) + ->generate(); + } + + public function testSuccess() + { + $this->mockFilesystem(); + + app(ControllerGenerator::class) + ->setModel('Post') + ->setCrudOptions(['C', 'R', 'U', 'D']) + ->generate(); + + $this->assertGeneratedFileEquals('created_controller.php', 'app/Http/Controllers/PostController.php'); + $this->assertGeneratedFileEquals('api.php', 'routes/api.php'); + + $this->assertEventPushedChain([ + SuccessCreateMessage::class => "Created a new Route: Route::post('posts', [PostController::class, 'create']);", + SuccessCreateMessage::class => "Created a new Route: Route::put('posts/{id}', [PostController::class, 'update']);", + SuccessCreateMessage::class => "Created a new Route: Route::delete('posts/{id}', [PostController::class, 'delete']);", + SuccessCreateMessage::class => "Created a new Route: Route::get('posts/{id}', [PostController::class, 'get']);", + SuccessCreateMessage::class => "Created a new Route: Route::get('posts', [PostController::class, 'search']);", + SuccessCreateMessage::class => "Created a new Controller: PostController", + ]); + } +} diff --git a/tests/NovaResourceGeneratorTest.php b/tests/NovaResourceGeneratorTest.php new file mode 100644 index 00000000..95be8b76 --- /dev/null +++ b/tests/NovaResourceGeneratorTest.php @@ -0,0 +1,115 @@ +mockNovaServiceProviderExists(false); + + app(NovaResourceGenerator::class) + ->setModel('Post') + ->generate(); + + $this->assertEventPushed( + className: SuccessCreateMessage::class, + message: 'Nova is not installed and NovaResource is skipped', + ); + } + + public function testCreateNovaResourceWithMissingModel() + { + $this->mockNovaServiceProviderExists(); + + $this->assertExceptionThrowed( + className: ClassNotExistsException::class, + message: 'Cannot create Post Nova resource cause Post Model does not exists. ' + . "Create a Post Model by himself or run command 'php artisan make:entity Post --only-model'" + ); + + app(NovaResourceGenerator::class) + ->setModel('Post') + ->generate(); + } + + public function testCreateNovaTestAlreadyExists() + { + $this->mockNovaServiceProviderExists(); + + $this->mockClass(NovaResourceGenerator::class, [ + $this->classExistsMethodCall(['models', 'Post']), + $this->classExistsMethodCall(['nova', 'PostResource']), + ]); + + $this->assertExceptionThrowed( + className: ClassAlreadyExistsException::class, + message: 'Cannot create PostResource cause PostResource already exists. Remove PostResource.', + ); + + app(NovaResourceGenerator::class) + ->setModel('Post') + ->generate(); + } + + public function testSuccess() + { + $this->mockNovaServiceProviderExists(); + + $this->mockFilesystem(); + + $fields = $this->getJsonFixture('command_line_fields.json'); + + app(NovaResourceGenerator::class) + ->setModel('Post') + ->setFields($fields) + ->generate(); + + $this->assertGeneratedFileEquals('created_resource.php', 'app/Nova/PostResource.php'); + + $this->assertEventPushed( + className: SuccessCreateMessage::class, + message: 'Created a new Nova Resource: PostResource', + ); + } + + public function testSuccessWithoutCommandLineFields() + { + $this->mockNovaServiceProviderExists(); + + $this->mockGettingModelInstance(); + + $this->mockFilesystem(); + + app(NovaResourceGenerator::class) + ->setModel('Post') + ->setFields([]) + ->generate(); + + $this->assertGeneratedFileEquals( + fixtureName: 'created_resource_without_command_line_fields.php', + filePath: 'app/Nova/PostResource.php', + ); + + $this->assertEventPushed( + className: SuccessCreateMessage::class, + message: 'Created a new Nova Resource: PostResource', + ); + } +} diff --git a/tests/NovaTestGeneratorTest.php b/tests/NovaTestGeneratorTest.php index ed3e9201..3159b47e 100644 --- a/tests/NovaTestGeneratorTest.php +++ b/tests/NovaTestGeneratorTest.php @@ -2,74 +2,87 @@ namespace RonasIT\Support\Tests; +use Illuminate\Support\Facades\Event; +use RonasIT\Support\Events\SuccessCreateMessage; use RonasIT\Support\Exceptions\ClassAlreadyExistsException; use RonasIT\Support\Exceptions\ClassNotExistsException; use RonasIT\Support\Generators\NovaTestGenerator; -use RonasIT\Support\Tests\Support\NovaTestMockTrait; +use RonasIT\Support\Tests\Support\NovaTestGeneratorTest\NovaTestGeneratorMockTrait; class NovaTestGeneratorTest extends TestCase { - use NovaTestMockTrait; + use NovaTestGeneratorMockTrait; - public function testCreateNovaTestsResourceNotExists() + public function testGenerateResourceNotExists() { - $mock = $this->mockClassExistsFunction(); + $this->mockNovaServiceProviderExists(); - $this->expectException(ClassNotExistsException::class); - $this->expectExceptionMessage("Cannot create NovaWelcomeBonusTest cause WelcomeBonus Nova resource does not exist. Create WelcomeBonus Nova resource."); + $this->mockClass(NovaTestGenerator::class, [ + $this->classExistsMethodCall(['nova', 'PostNovaResource'], false), + $this->classExistsMethodCall(['nova', 'PostResource'], false), + $this->classExistsMethodCall(['nova', 'Post'], false), + ]); - $generatorMock = $this->getGeneratorMockForNonExistingNovaResource(); + $this->assertExceptionThrowed( + className: ClassNotExistsException::class, + message: 'Cannot create NovaPostTest cause Post Nova resource does not exist. Create Post Nova resource.', + ); - try { - $generatorMock - ->setModel('WelcomeBonus') - ->generate(); - } finally { - $mock->disable(); - } + app(NovaTestGenerator::class) + ->setModel('Post') + ->generate(); } - public function testCreateNovaTestAlreadyExists() + public function testGenerateNovaTestAlreadyExists() { - $this->setupConfigurations(); + $this->mockNovaServiceProviderExists(); - $mock = $this->mockClassExistsFunction(); + $this->mockClass(NovaTestGenerator::class, [ + $this->classExistsMethodCall(['nova', 'PostNovaResource']), + $this->classExistsMethodCall(['nova', 'NovaPostTest']) + ]); - $this->expectException(ClassAlreadyExistsException::class); - $this->expectExceptionMessage("Cannot create NovaWelcomeBonusTest cause it's already exist. Remove NovaWelcomeBonusTest."); + $this->assertExceptionThrowed( + className: ClassAlreadyExistsException::class, + message: "Cannot create NovaPostTest cause it's already exist. Remove NovaPostTest.", + ); - $generatorMock = $this->getGeneratorMockForExistingNovaResourceTest(); - - try { - $generatorMock - ->setModel('WelcomeBonus') - ->generate(); - } finally { - $mock->disable(); - } + app(NovaTestGenerator::class) + ->setModel('Post') + ->generate(); } - public function testCreateWithActions() + public function testSuccess() { - $functionMock = $this->mockClassExistsFunction(); + $this->mockNovaServiceProviderExists(); $this->mockFilesystem(); - $this->setupConfigurations(); - $this->mockViewsNamespace(); - $this->mockNovaResourceTestGenerator(); + $this->mockNovaRequestClassCall(); app(NovaTestGenerator::class) ->setModel('WelcomeBonus') ->generate(); - $this->rollbackToDefaultBasePath(); - $this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusTest.php'); $this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusTest/nova_welcome_bonus_dump.sql'); $this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_request.json'); $this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_response.json'); $this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/update_welcome_bonus_request.json'); + } + + public function testGenerateNovaPackageNotInstall() + { + Event::fake(); + + $this->mockNovaServiceProviderExists(false); + + app(NovaTestGenerator::class) + ->setModel('Post') + ->generate(); - $functionMock->disable(); + $this->assertEventPushed( + className: SuccessCreateMessage::class, + message: 'Nova is not installed and NovaTest is skipped', + ); } } diff --git a/tests/SeederGeneratorTest.php b/tests/SeederGeneratorTest.php index f85aff9c..375917c5 100644 --- a/tests/SeederGeneratorTest.php +++ b/tests/SeederGeneratorTest.php @@ -20,7 +20,6 @@ public function setUp(): void public function testCreateSeeder() { - $this->mockViewsNamespace(); $this->mockFilesystem(); app(SeederGenerator::class) @@ -33,15 +32,12 @@ public function testCreateSeeder() ->setModel('Post') ->generate(); - $this->rollbackToDefaultBasePath(); - $this->assertGeneratedFileEquals('database_seeder.php', 'database/seeders/DatabaseSeeder.php'); $this->assertGeneratedFileEquals('post_seeder.php', 'database/seeders/PostSeeder.php'); } public function testCreateSeederWithOldConfig() { - $this->mockViewsNamespace(); $this->mockFilesystem(); config([ @@ -58,10 +54,9 @@ public function testCreateSeederWithOldConfig() ->setModel('Post') ->generate(); - $this->rollbackToDefaultBasePath(); - - Event::assertDispatched(WarningEvent::class, function ($event) { - return $event->message === "You are using the deprecated value for 'entity-generator.stubs.database_empty_seeder' config. Please use 'entity-generator::database_empty_seeder'."; - }); + $this->assertEventPushed( + className: WarningEvent::class, + message: "You are using the deprecated value for 'entity-generator.stubs.database_empty_seeder' config. Please use 'entity-generator::database_empty_seeder'.", + ); } } \ No newline at end of file diff --git a/tests/Support/ControllerGeneratorTest/ControllerGeneratorMockTrait.php b/tests/Support/ControllerGeneratorTest/ControllerGeneratorMockTrait.php new file mode 100644 index 00000000..67f9374b --- /dev/null +++ b/tests/Support/ControllerGeneratorTest/ControllerGeneratorMockTrait.php @@ -0,0 +1,38 @@ +services = [ + 'PostService.php' => $this->mockPhpFileContent(), + ]; + $fileSystemMock->controllers = []; + + $fileSystemMock->setStructure(); + } + + public function mockFilesystem(): void + { + $fileSystemMock = new FileSystemMock; + $fileSystemMock->services = [ + 'PostService.php' => $this->mockPhpFileContent(), + ]; + $fileSystemMock->controllers = []; + $fileSystemMock->routes = [ + 'api.php' => $this->mockPhpFileContent(), + ]; + + $fileSystemMock->setStructure(); + } +} \ No newline at end of file diff --git a/tests/Support/CreatedAtFilter.php b/tests/Support/CreatedAtFilter.php deleted file mode 100644 index 38009fd7..00000000 --- a/tests/Support/CreatedAtFilter.php +++ /dev/null @@ -1,7 +0,0 @@ - []]; + + if (!is_null($this->novaModels)) { + $structure['app']['Nova'] = []; + + foreach ($this->novaModels as $novaModel => $content) { + $structure['app']['Nova'][$novaModel] = $content; + } + } + + if (!is_null($this->novaActions)) { + if (!array_key_exists('Nova', $structure['app'])) { + $structure['app']['Nova'] = []; + } + + $structure['app']['Nova']['Actions'] = []; + + foreach ($this->novaActions as $novaAction => $content) { + $structure['app']['Nova']['Actions'][$novaAction] = $content; + } + } + + if (!is_null($this->models)) { + $structure['app']['Models'] = []; + + foreach ($this->models as $model => $content) { + $structure['app']['Models'][$model] = $content; + } + } + + if (!is_null($this->controllers)) { + $structure['app']['Http']['Controllers'] = []; + + foreach ($this->controllers as $controller => $content) { + $structure['app']['Http']['Controllers'][$controller] = $content; + } + } + + if (!is_null($this->services)) { + $structure['app']['Services'] = []; + + foreach ($this->services as $service => $content) { + $structure['app']['Services'][$service] = $content; + } + } + + if (!is_null($this->repositories)) { + $structure['app']['Repositories'] = []; + + foreach ($this->repositories as $repository => $content) { + $structure['app']['Repositories'][$repository] = $content; + } + } + + if (!is_null($this->testClasses)) { + $structure['tests'] = []; + + foreach ($this->testClasses as $testClass => $content) { + $structure['app']['tests'][$testClass] = $content; + } + } + + if (!is_null($this->testFixtures)) { + $structure['tests']['fixtures'] = []; + + foreach ($this->testFixtures as $fixture => $content) { + Arr::set($structure['app']['tests'], $fixture, $content); + } + } + + if (!is_null($this->routes)) { + $structure['routes'] = []; + + foreach ($this->routes as $route => $content) { + $structure['routes'][$route] = $content; + } + } + + vfsStream::create($structure); + } +} diff --git a/tests/Support/GeneratorMockTrait.php b/tests/Support/GeneratorMockTrait.php new file mode 100644 index 00000000..f40e718b --- /dev/null +++ b/tests/Support/GeneratorMockTrait.php @@ -0,0 +1,38 @@ +mockNativeFunction('\RonasIT\Support\Generators', [ + $this->functionCall( + name: 'class_exists', + arguments: [$className, $autoloadArg], + result: $result, + ), + ]); + } + + public function mockNovaServiceProviderExists(bool $result = true): void + { + $this->mockClassExistsFunction(NovaServiceProvider::class, $result); + } + + public function classExistsMethodCall(array $arguments, bool $result = true): array + { + return [ + 'function' => 'classExists', + 'arguments' => $arguments, + 'result' => $result + ]; + } + + public function mockPhpFileContent(): string + { + return 'novaModels = []; + $fileSystemMock->models = [ + 'Post.php' => $this->mockPhpFileContent(), + ]; + + $fileSystemMock->setStructure(); + } + + public function mockGettingModelInstance(): void + { + $connectionMock = Mockery::mock(Connection::class)->makePartial(); + $connectionMock + ->expects('getDoctrineSchemaManager') + ->andReturn(new SchemaManager); + + $mock = Mockery::mock('alias:' . DB::class); + $mock + ->expects('connection') + ->with('pgsql') + ->andReturn($connectionMock); + + $this->app->instance('App\\Models\\Post', new Post); + } +} diff --git a/tests/Support/NovaResourceGeneratorTest/Post.php b/tests/Support/NovaResourceGeneratorTest/Post.php new file mode 100644 index 00000000..ae3cceb4 --- /dev/null +++ b/tests/Support/NovaResourceGeneratorTest/Post.php @@ -0,0 +1,16 @@ +app->instance('Laravel\Nova\Http\Requests\NovaRequest', $mock); + } + + public function mockFilesystem(): void + { + $fileSystemMock = new FileSystemMock; + + $fileSystemMock->novaActions = [ + 'PublishPostAction.php' => $this->mockPhpFileContent(), + 'ArchivePostAction.php' => $this->mockPhpFileContent(), + 'BlockCommentAction.php' => $this->mockPhpFileContent(), + 'UnPublishPostAction.txt' => 'text', + ]; + + $fileSystemMock->novaModels = [ + 'WelcomeBonusResource.php' => $this->mockPhpFileContent(), + ]; + + $fileSystemMock->models = [ + 'WelcomeBonus.php' => $this->mockPhpFileContent(), + ]; + + $fileSystemMock->testFixtures = [ + 'NovaWelcomeBonusTest' => [] + ]; + + $fileSystemMock->setStructure(); + } +} diff --git a/tests/Support/NovaTestGeneratorTest/PublishPostAction.php b/tests/Support/NovaTestGeneratorTest/PublishPostAction.php new file mode 100644 index 00000000..8a5a984a --- /dev/null +++ b/tests/Support/NovaTestGeneratorTest/PublishPostAction.php @@ -0,0 +1,7 @@ +setNamespace($namespace) - ->setName($name) - ->setFunction(fn () => $result); - - $mock = $builder->build(); - $mock->enable(); - - return $mock; - } - - public function mockNovaResourceTestGenerator(): void - { - $mock = $this - ->getMockBuilder(NovaTestGenerator::class) - ->onlyMethods(['getModelFields', 'getMockModel', 'loadNovaActions', 'loadNovaFields', 'loadNovaFilters']) - ->getMock(); - - $mock - ->method('getModelFields') - ->willReturn(['title', 'name']); - - $mock - ->method('getMockModel') - ->willReturn(['title' => 'some title', 'name' => 'some name']); - - $mock - ->method('loadNovaActions') - ->willReturn([ - new PublishPostAction, - new UnPublishPostAction, - new UnPublishPostAction, - ]); - - $mock - ->method('loadNovaFields') - ->willReturn([ - new TextField, - new DateField, - ]); - - $mock - ->method('loadNovaFilters') - ->willReturn([ - new CreatedAtFilter, - ]); - - $this->app->instance(NovaTestGenerator::class, $mock); - } - - public function getGeneratorMockForNonExistingNovaResource(): MockInterface - { - $mock = Mockery::mock(NovaTestGenerator::class)->makePartial(); - - $mock - ->shouldAllowMockingProtectedMethods() - ->shouldReceive('classExists') - ->times(3) - ->andReturn(false); - - return $mock; - } - - public function getGeneratorMockForExistingNovaResourceTest(): MockInterface - { - $mock = Mockery::mock(NovaTestGenerator::class)->makePartial(); - - $mock - ->shouldAllowMockingProtectedMethods() - ->shouldReceive('classExists') - ->with('nova', 'WelcomeBonus') - ->andReturn(true); - - $mock - ->shouldReceive('classExists') - ->with('nova', 'WelcomeBonusResource') - ->andReturn(false); - - $mock - ->shouldReceive('classExists') - ->with('nova', 'WelcomeBonusNovaResource') - ->andReturn(false); - - $mock - ->shouldReceive('classExists') - ->once() - ->with('nova', 'NovaWelcomeBonusTest') - ->andReturn(true); - - return $mock; - } - - public function setupConfigurations(): void - { - config([ - 'entity-generator.stubs.nova_test' => 'entity-generator::nova_test', - 'entity-generator.stubs.dump' => 'entity-generator::dumps.pgsql', - 'entity-generator.paths' => [ - 'nova' => 'app/Nova', - 'nova_actions' => 'app/Nova/Actions', - 'tests' => 'tests', - 'models' => 'app/Models', - ] - ]); - } - - public function mockViewsNamespace(): void - { - View::addNamespace('entity-generator', getcwd() . '/stubs'); - } - - public function mockClassExistsFunction(): Mock - { - return $this->mockNativeFunction('\\RonasIT\\Support\\Generators', 'class_exists', true); - } - - public function mockFilesystem(): void - { - $structure = [ - 'app' => [ - 'Nova' => [ - 'Actions' => [ - 'PublishWelcomeBonusAction.php' => ' ' ' 'text', - ], - 'WelcomeBonus.php' => ' [ - 'WelcomeBonus.php' => ' [ - 'fixtures' => [ - 'NovaWelcomeBonusTest' => [], - ] - ] - ]; - - vfsStream::create($structure); - } -} diff --git a/tests/Support/PublishPostAction.php b/tests/Support/PublishPostAction.php deleted file mode 100644 index c8cab71b..00000000 --- a/tests/Support/PublishPostAction.php +++ /dev/null @@ -1,7 +0,0 @@ -app->setBasePath($this->generatedFileBasePath); } - public function rollbackToDefaultBasePath(): void + public function getFixturePath(string $fixtureName): string { - $this->app->setBasePath(getcwd()); + $class = get_class($this); + $explodedClass = explode('\\', $class); + $className = Arr::last($explodedClass); + + return getcwd() . "/tests/fixtures/{$className}/{$fixtureName}"; } public function mockConfigurations(): void @@ -42,6 +49,13 @@ public function mockConfigurations(): void ]); } + protected function getPackageProviders($app): array + { + return [ + EntityGeneratorServiceProvider::class + ]; + } + protected function getEnvironmentSetUp($app): void { $app->useEnvironmentPath(__DIR__ . '/..'); @@ -72,4 +86,25 @@ protected function assertGenerateFileExists(string $path): void { $this->assertFileExists("{$this->generatedFileBasePath}/{$path}"); } + + protected function assertEventPushed(string $className, string $message): void + { + Event::assertDispatched( + event: $className, + callback: fn ($event) => $event->message === $message, + ); + } + + protected function assertEventPushedChain(array $events): void + { + foreach ($events as $className => $message) { + $this->assertEventPushed($className, $message); + } + } + + protected function assertExceptionThrowed(string $className, string $message): void + { + $this->expectException($className); + $this->expectExceptionMessage($message); + } } diff --git a/tests/fixtures/ControllerGeneratorTest/api.php b/tests/fixtures/ControllerGeneratorTest/api.php new file mode 100644 index 00000000..7c99eea2 --- /dev/null +++ b/tests/fixtures/ControllerGeneratorTest/api.php @@ -0,0 +1,10 @@ +onlyValidated(); + + $result = $service->create($data); + + return PostResource::make($result); + } + + public function get(GetPostRequest $request, PostService $service, $id) + { + $result = $service + ->with($request->input('with', [])) + ->withCount($request->input('with_count', [])) + ->find($id); + + return PostResource::make($result); + } + + public function search(SearchPostsRequest $request, PostService $service) + { + $result = $service->search($request->onlyValidated()); + + return PostsCollectionResource::make($result); + } + + public function update(UpdatePostRequest $request, PostService $service, $id) + { + $service->update($id, $request->onlyValidated()); + + return response('', Response::HTTP_NO_CONTENT); + } + + public function delete(DeletePostRequest $request, PostService $service, $id) + { + $service->delete($id); + + return response('', Response::HTTP_NO_CONTENT); + } +} \ No newline at end of file diff --git a/tests/fixtures/NovaResourceGeneratorTest/command_line_fields.json b/tests/fixtures/NovaResourceGeneratorTest/command_line_fields.json new file mode 100644 index 00000000..026bc1a3 --- /dev/null +++ b/tests/fixtures/NovaResourceGeneratorTest/command_line_fields.json @@ -0,0 +1,17 @@ +{ + "boolean": [ + "is_published" + ], + "string-required": [ + "title", + "body" + ], + "integer": [ + "id" + ], + "non_existing_type": [ + "comment" + ], + "json": [], + "timestamp-required": [] +} diff --git a/tests/fixtures/NovaResourceGeneratorTest/created_resource.php b/tests/fixtures/NovaResourceGeneratorTest/created_resource.php new file mode 100644 index 00000000..742c6158 --- /dev/null +++ b/tests/fixtures/NovaResourceGeneratorTest/created_resource.php @@ -0,0 +1,61 @@ +sortable(), + Text::make('Title') + ->required() + ->sortable(), + Text::make('Body') + ->required() + ->sortable(), + ID::make('Id') + ->sortable(), + ]; + } + + public function cards(Request $request): array + { + return []; + } + + public function filters(Request $request): array + { + return []; + } + + public function lenses(Request $request): array + { + return []; + } + + public function actions(Request $request): array + { + return []; + } +} diff --git a/tests/fixtures/NovaResourceGeneratorTest/created_resource_without_command_line_fields.php b/tests/fixtures/NovaResourceGeneratorTest/created_resource_without_command_line_fields.php new file mode 100644 index 00000000..9d3f57e1 --- /dev/null +++ b/tests/fixtures/NovaResourceGeneratorTest/created_resource_without_command_line_fields.php @@ -0,0 +1,59 @@ +required() + ->sortable(), + Text::make('Title') + ->required() + ->sortable(), + Text::make('Created At') + ->required() + ->sortable(), + ]; + } + + public function cards(Request $request): array + { + return []; + } + + public function filters(Request $request): array + { + return []; + } + + public function lenses(Request $request): array + { + return []; + } + + public function actions(Request $request): array + { + return []; + } +} diff --git a/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_request.json b/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_request.json index d38b1624..538b482c 100644 --- a/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_request.json +++ b/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_request.json @@ -1,4 +1,4 @@ { - "title": "some title", - "name": "some name" + "title": 1, + "name": 1 } \ No newline at end of file diff --git a/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_response.json b/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_response.json index d38b1624..ea1ee8ea 100644 --- a/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_response.json +++ b/tests/fixtures/NovaTestGeneratorTest/create_welcome_bonus_response.json @@ -1,4 +1,5 @@ { - "title": "some title", - "name": "some name" + "id": 1, + "title": 1, + "name": 1 } \ No newline at end of file diff --git a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php index 73ff5bb6..a403e9fe 100644 --- a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php +++ b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php @@ -244,7 +244,7 @@ public function getWelcomeBonusFiltersData(): array ], [ 'request' => [ - 'RonasIT\Support\Tests\Support\CreatedAtFilter' => $this->novaSearchParams(['search term']), + 'RonasIT\Support\Tests\Support\NovaTestGeneratorTest\CreatedAtFilter' => $this->novaSearchParams(['search term']), ], 'response_fixture' => 'filter_welcome_bonus_by_created_at_filter.json', ], diff --git a/tests/fixtures/NovaTestGeneratorTest/dump.sql b/tests/fixtures/NovaTestGeneratorTest/dump.sql index ebfc6757..09d27054 100644 --- a/tests/fixtures/NovaTestGeneratorTest/dump.sql +++ b/tests/fixtures/NovaTestGeneratorTest/dump.sql @@ -1,3 +1,3 @@ -INSERT INTO welcome_bonuses(title, name, created_at, updated_at) VALUES - ('some title', 'some name', '2016-10-20 11:05:00', '2016-10-20 11:05:00'); +INSERT INTO welcome_bonuses(id, title, name, created_at, updated_at) VALUES + (1, 1, 1, '2016-10-20 11:05:00', '2016-10-20 11:05:00'); diff --git a/tests/fixtures/NovaTestGeneratorTest/update_welcome_bonus_request.json b/tests/fixtures/NovaTestGeneratorTest/update_welcome_bonus_request.json index d38b1624..538b482c 100644 --- a/tests/fixtures/NovaTestGeneratorTest/update_welcome_bonus_request.json +++ b/tests/fixtures/NovaTestGeneratorTest/update_welcome_bonus_request.json @@ -1,4 +1,4 @@ { - "title": "some title", - "name": "some name" + "title": 1, + "name": 1 } \ No newline at end of file