From 4786bd3a158cdc70717c12ddcf1b3e33c205be4c Mon Sep 17 00:00:00 2001 From: Philipp Lang Date: Thu, 20 Oct 2022 11:11:52 +0200 Subject: [PATCH] Add List Action --- app/Mailman/Actions/SettingIndexAction.php | 2 +- app/Mailman/Actions/SettingSaveAction.php | 3 + app/Mailman/Data/MailingList.php | 24 + app/Mailman/Support/MailmanService.php | 19 + composer.json | 3 +- composer.lock | 641 ++++++++++-------- phpstan.neon | 27 +- .../MailmanListRequestFactory.php | 24 + tests/Unit/Mailman/ServiceTest.php | 22 + 9 files changed, 464 insertions(+), 301 deletions(-) create mode 100644 app/Mailman/Data/MailingList.php create mode 100644 tests/RequestFactories/MailmanListRequestFactory.php diff --git a/app/Mailman/Actions/SettingIndexAction.php b/app/Mailman/Actions/SettingIndexAction.php index ccd35409..ae8cacf3 100644 --- a/app/Mailman/Actions/SettingIndexAction.php +++ b/app/Mailman/Actions/SettingIndexAction.php @@ -13,7 +13,7 @@ class SettingIndexAction use AsAction; /** - * @return array + * @return array */ public function handle(MailmanSettings $settings): array { diff --git a/app/Mailman/Actions/SettingSaveAction.php b/app/Mailman/Actions/SettingSaveAction.php index f4b33cd9..04b25b90 100644 --- a/app/Mailman/Actions/SettingSaveAction.php +++ b/app/Mailman/Actions/SettingSaveAction.php @@ -42,6 +42,9 @@ class SettingSaveAction ]; } + /** + * @return array + */ public function getValidationMessages(): array { return [ diff --git a/app/Mailman/Data/MailingList.php b/app/Mailman/Data/MailingList.php new file mode 100644 index 00000000..24a0cedb --- /dev/null +++ b/app/Mailman/Data/MailingList.php @@ -0,0 +1,24 @@ +username, $this->password)->withOptions(['base_uri' => $this->baseUrl]); } + + public function getLists(): LazyCollection + { + return app(Paginator::class)->result( + fn ($page) => $this->http()->get("/lists?page={$page}&count=10"), + function ($response) { + throw_unless($response->ok(), MailmanServiceException::class, 'Fetching lists failed.'); + /** @var array|null */ + $entries = data_get($response->json(), 'entries'); + throw_if(is_null($entries), MailmanServiceException::class, 'Failed getting lists from response'); + + foreach ($entries as $entry) { + yield MailingList::from($entry); + } + }, + fn ($response) => data_get($response->json(), 'total_size') + ); + } } diff --git a/composer.json b/composer.json index c4c95062..cde85b10 100644 --- a/composer.json +++ b/composer.json @@ -26,10 +26,11 @@ "monicahq/laravel-sabre": "^1.6", "nunomaduro/collision": "^6.1", "phake/phake": "^4.2", - "spatie/laravel-data": "^1.4", + "spatie/laravel-data": "^2.0", "spatie/laravel-ignition": "^1.0", "spatie/laravel-medialibrary": "^10.0", "spatie/laravel-settings": "^2.2", + "worksome/request-factories": "^2.5", "zoomyboy/laravel-nami": "dev-master" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 3edebe30..29bbdc3b 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": "595c09f60f56154860edae7e0d666e16", + "content-hash": "636d4f83830d3a56848cfaca9a395a8a", "packages": [ { "name": "beyondcode/laravel-dump-server", @@ -444,16 +444,16 @@ }, { "name": "doctrine/dbal", - "version": "3.4.4", + "version": "3.4.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "4cbbe6e4b9ef6c69d5f4c968c637476f47bb54f5" + "reference": "a5a58773109c0abb13e658c8ccd92aeec8d07f9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/4cbbe6e4b9ef6c69d5f4c968c637476f47bb54f5", - "reference": "4cbbe6e4b9ef6c69d5f4c968c637476f47bb54f5", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/a5a58773109c0abb13e658c8ccd92aeec8d07f9e", + "reference": "a5a58773109c0abb13e658c8ccd92aeec8d07f9e", "shasum": "" }, "require": { @@ -535,7 +535,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.4.4" + "source": "https://github.com/doctrine/dbal/tree/3.4.5" }, "funding": [ { @@ -551,7 +551,7 @@ "type": "tidelift" } ], - "time": "2022-09-01T21:26:42+00:00" + "time": "2022-09-23T17:48:57+00:00" }, { "name": "doctrine/deprecations", @@ -598,34 +598,35 @@ }, { "name": "doctrine/event-manager", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "~1.4.10 || ^1.5.4", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.24" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -669,7 +670,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.2" + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" }, "funding": [ { @@ -685,7 +686,7 @@ "type": "tidelift" } ], - "time": "2022-07-27T22:18:11+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", @@ -1729,37 +1730,37 @@ }, { "name": "laravel/framework", - "version": "v9.31.0", + "version": "v9.36.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "75013d4fffe3b24748d313fbbea53206351214f7" + "reference": "80ba0561b3682b96743e1c152fde0698bbdb2412" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/75013d4fffe3b24748d313fbbea53206351214f7", - "reference": "75013d4fffe3b24748d313fbbea53206351214f7", + "url": "https://api.github.com/repos/laravel/framework/zipball/80ba0561b3682b96743e1c152fde0698bbdb2412", + "reference": "80ba0561b3682b96743e1c152fde0698bbdb2412", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1", "ext-mbstring": "*", "ext-openssl": "*", "fruitcake/php-cors": "^1.2", - "laravel/serializable-closure": "^1.0", + "laravel/serializable-closure": "^1.2.2", "league/commonmark": "^2.2", "league/flysystem": "^3.0.16", "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", + "nesbot/carbon": "^2.62.1", "nunomaduro/termwind": "^1.13", "php": "^8.0.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0.3", + "symfony/console": "^6.0.9", "symfony/error-handler": "^6.0", "symfony/finder": "^6.0", "symfony/http-foundation": "^6.0", @@ -1770,7 +1771,7 @@ "symfony/routing": "^6.0", "symfony/uid": "^6.0", "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, @@ -1817,26 +1818,26 @@ }, "require-dev": { "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.198.1", + "aws/aws-sdk-php": "^3.235.5", "doctrine/dbal": "^2.13.3|^3.1.4", "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", + "guzzlehttp/guzzle": "^7.5", "league/flysystem-aws-s3-v3": "^3.0", "league/flysystem-ftp": "^3.0", "league/flysystem-path-prefixing": "^3.3", "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.1", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^7.11", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9|^2.0", + "predis/predis": "^1.1.9|^2.0.2", "symfony/cache": "^6.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.198.1).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", "brianium/paratest": "Required to run tests in parallel (^6.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", "ext-bcmath": "Required to use the multiple_of validation rule.", @@ -1848,18 +1849,18 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.2).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", "league/flysystem-read-only": "Required to use read-only disks (^3.3)", "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", + "mockery/mockery": "Required to use mocking (^1.5.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", - "predis/predis": "Required to use the predis connector (^1.1.9|^2.0).", + "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", @@ -1911,20 +1912,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-09-20T13:32:50+00:00" + "time": "2022-10-19T13:23:53+00:00" }, { "name": "laravel/horizon", - "version": "v5.10.1", + "version": "v5.10.2", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "1570c8a4612484a37392eca986f06d01b771cb96" + "reference": "de84bf86ffee940fa92e29c54d41618048ec9b6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/1570c8a4612484a37392eca986f06d01b771cb96", - "reference": "1570c8a4612484a37392eca986f06d01b771cb96", + "url": "https://api.github.com/repos/laravel/horizon/zipball/de84bf86ffee940fa92e29c54d41618048ec9b6f", + "reference": "de84bf86ffee940fa92e29c54d41618048ec9b6f", "shasum": "" }, "require": { @@ -1986,9 +1987,9 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.10.1" + "source": "https://github.com/laravel/horizon/tree/v5.10.2" }, - "time": "2022-09-05T16:33:43+00:00" + "time": "2022-09-26T13:45:51+00:00" }, { "name": "laravel/serializable-closure", @@ -2052,16 +2053,16 @@ }, { "name": "laravel/telescope", - "version": "v4.9.3", + "version": "v4.9.4", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "c41476272bc03e470d3be1d718885a947adb7c49" + "reference": "ca8bec380ecef80d00ce6daecac2dc17c7e35ccd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/c41476272bc03e470d3be1d718885a947adb7c49", - "reference": "c41476272bc03e470d3be1d718885a947adb7c49", + "url": "https://api.github.com/repos/laravel/telescope/zipball/ca8bec380ecef80d00ce6daecac2dc17c7e35ccd", + "reference": "ca8bec380ecef80d00ce6daecac2dc17c7e35ccd", "shasum": "" }, "require": { @@ -2114,9 +2115,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.9.3" + "source": "https://github.com/laravel/telescope/tree/v4.9.4" }, - "time": "2022-09-12T13:47:59+00:00" + "time": "2022-10-03T14:55:50+00:00" }, { "name": "laravel/tinker", @@ -2437,16 +2438,16 @@ }, { "name": "league/flysystem", - "version": "3.5.1", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "f14993c6e394450ac4649da35264df0544d0234e" + "reference": "60f3760352fe08e918bc3b1acae4e91af092ebe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f14993c6e394450ac4649da35264df0544d0234e", - "reference": "f14993c6e394450ac4649da35264df0544d0234e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/60f3760352fe08e918bc3b1acae4e91af092ebe1", + "reference": "60f3760352fe08e918bc3b1acae4e91af092ebe1", "shasum": "" }, "require": { @@ -2508,7 +2509,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.5.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.9.0" }, "funding": [ { @@ -2524,7 +2525,7 @@ "type": "tidelift" } ], - "time": "2022-09-18T18:23:19+00:00" + "time": "2022-10-18T21:02:43+00:00" }, { "name": "league/glide", @@ -3413,16 +3414,16 @@ }, { "name": "nunomaduro/collision", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "17f600e2e8872856ff2846243efb74ad4b6da531" + "reference": "0f6349c3ed5dd28467087b08fb59384bb458a22b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/17f600e2e8872856ff2846243efb74ad4b6da531", - "reference": "17f600e2e8872856ff2846243efb74ad4b6da531", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/0f6349c3ed5dd28467087b08fb59384bb458a22b", + "reference": "0f6349c3ed5dd28467087b08fb59384bb458a22b", "shasum": "" }, "require": { @@ -3497,20 +3498,20 @@ "type": "patreon" } ], - "time": "2022-08-29T09:11:20+00:00" + "time": "2022-09-29T12:29:49+00:00" }, { "name": "nunomaduro/termwind", - "version": "v1.14.0", + "version": "v1.14.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "10065367baccf13b6e30f5e9246fa4f63a79eb1d" + "reference": "86fc30eace93b9b6d4c844ba6de76db84184e01b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/10065367baccf13b6e30f5e9246fa4f63a79eb1d", - "reference": "10065367baccf13b6e30f5e9246fa4f63a79eb1d", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/86fc30eace93b9b6d4c844ba6de76db84184e01b", + "reference": "86fc30eace93b9b6d4c844ba6de76db84184e01b", "shasum": "" }, "require": { @@ -3567,7 +3568,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.14.0" + "source": "https://github.com/nunomaduro/termwind/tree/v1.14.1" }, "funding": [ { @@ -3583,7 +3584,7 @@ "type": "github" } ], - "time": "2022-08-01T11:03:24+00:00" + "time": "2022-10-17T15:20:29+00:00" }, { "name": "phake/phake", @@ -3709,25 +3710,30 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -3753,9 +3759,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2022-03-15T21:29:03+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { "name": "phpoption/phpoption", @@ -4812,16 +4818,16 @@ }, { "name": "sabre/vobject", - "version": "4.5.0", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/sabre-io/vobject.git", - "reference": "d1fdc0c3587a314bdd3aac4a1e1dcacadd91858e" + "reference": "1f836740c88bac483f3b572a332eb8fd1cd04981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabre-io/vobject/zipball/d1fdc0c3587a314bdd3aac4a1e1dcacadd91858e", - "reference": "d1fdc0c3587a314bdd3aac4a1e1dcacadd91858e", + "url": "https://api.github.com/repos/sabre-io/vobject/zipball/1f836740c88bac483f3b572a332eb8fd1cd04981", + "reference": "1f836740c88bac483f3b572a332eb8fd1cd04981", "shasum": "" }, "require": { @@ -4912,7 +4918,7 @@ "issues": "https://github.com/sabre-io/vobject/issues", "source": "https://github.com/fruux/sabre-vobject" }, - "time": "2022-08-17T16:39:31+00:00" + "time": "2022-10-09T10:06:31+00:00" }, { "name": "sabre/xml", @@ -5656,36 +5662,37 @@ }, { "name": "spatie/laravel-data", - "version": "1.5.1", + "version": "2.0.13", "source": { "type": "git", "url": "https://github.com/spatie/laravel-data.git", - "reference": "1c44f3626089a250c3d8c3db06cd25b653e8c0e7" + "reference": "016b5530a5171c7b06a3943a80aa55c9b45583e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-data/zipball/1c44f3626089a250c3d8c3db06cd25b653e8c0e7", - "reference": "1c44f3626089a250c3d8c3db06cd25b653e8c0e7", + "url": "https://api.github.com/repos/spatie/laravel-data/zipball/016b5530a5171c7b06a3943a80aa55c9b45583e5", + "reference": "016b5530a5171c7b06a3943a80aa55c9b45583e5", "shasum": "" }, "require": { - "illuminate/contracts": "^8.71|^9.0", - "php": "^8.0", + "illuminate/contracts": "^8.71|^9.18", + "php": "^8.1", "phpdocumentor/type-resolver": "^1.5", "spatie/laravel-package-tools": "^1.9.0" }, "require-dev": { - "brianium/paratest": "^6.2", "fakerphp/faker": "^1.14", "friendsofphp/php-cs-fixer": "^3.0", + "inertiajs/inertia-laravel": "^0.6.3", "nette/php-generator": "^3.5", - "nunomaduro/collision": "^5.3|^6.0", - "orchestra/testbench": "^6.23|^7.0", + "nunomaduro/larastan": "^2.0|^1.0.3", + "orchestra/testbench": "^6.24|^7.6", + "phpstan/extension-installer": "^1.1", "phpunit/phpunit": "^9.3", + "spatie/invade": "^1.0", "spatie/laravel-typescript-transformer": "^2.0", "spatie/phpunit-snapshot-assertions": "^4.2", - "spatie/test-time": "^1.2", - "vimeo/psalm": "^4.4" + "spatie/test-time": "^1.2" }, "type": "library", "extra": { @@ -5720,7 +5727,8 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-data/tree/1.5.1" + "issues": "https://github.com/spatie/laravel-data/issues", + "source": "https://github.com/spatie/laravel-data/tree/2.0.13" }, "funding": [ { @@ -5728,20 +5736,20 @@ "type": "github" } ], - "time": "2022-07-08T09:14:46+00:00" + "time": "2022-10-14T10:24:23+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.5.0", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "192962f4d84526f6868c512530c00633e3165749" + "reference": "f2336fc79d99aab5cf27fa4aebe5e9c9ecf3808a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/192962f4d84526f6868c512530c00633e3165749", - "reference": "192962f4d84526f6868c512530c00633e3165749", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/f2336fc79d99aab5cf27fa4aebe5e9c9ecf3808a", + "reference": "f2336fc79d99aab5cf27fa4aebe5e9c9ecf3808a", "shasum": "" }, "require": { @@ -5818,20 +5826,20 @@ "type": "github" } ], - "time": "2022-09-16T13:45:54+00:00" + "time": "2022-10-14T12:24:21+00:00" }, { "name": "spatie/laravel-medialibrary", - "version": "10.5.1", + "version": "10.5.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "0f146ad3b89f5d39d9f621812d794d577206486e" + "reference": "5872a4f9e5f72b9dd1a02ea5ab699f33ef1a1c75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/0f146ad3b89f5d39d9f621812d794d577206486e", - "reference": "0f146ad3b89f5d39d9f621812d794d577206486e", + "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/5872a4f9e5f72b9dd1a02ea5ab699f33ef1a1c75", + "reference": "5872a4f9e5f72b9dd1a02ea5ab699f33ef1a1c75", "shasum": "" }, "require": { @@ -5914,7 +5922,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-medialibrary/issues", - "source": "https://github.com/spatie/laravel-medialibrary/tree/10.5.1" + "source": "https://github.com/spatie/laravel-medialibrary/tree/10.5.2" }, "funding": [ { @@ -5926,20 +5934,20 @@ "type": "github" } ], - "time": "2022-09-21T16:03:25+00:00" + "time": "2022-09-30T09:48:56+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.13.5", + "version": "1.13.6", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "163ee3bc6c0a987535d8a99722a7dbcc5471a140" + "reference": "c377cc7223655c2278c148c1685b8b5a78af5c65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/163ee3bc6c0a987535d8a99722a7dbcc5471a140", - "reference": "163ee3bc6c0a987535d8a99722a7dbcc5471a140", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/c377cc7223655c2278c148c1685b8b5a78af5c65", + "reference": "c377cc7223655c2278c148c1685b8b5a78af5c65", "shasum": "" }, "require": { @@ -5977,7 +5985,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.13.5" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.13.6" }, "funding": [ { @@ -5985,20 +5993,20 @@ "type": "github" } ], - "time": "2022-09-07T14:31:31+00:00" + "time": "2022-10-11T06:37:42+00:00" }, { "name": "spatie/laravel-settings", - "version": "2.4.4", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/spatie/laravel-settings.git", - "reference": "08a6c6aad8a5bd9606bee7c82c4e7229912ea53f" + "reference": "f16a8d29c126deadddb84fff495212d2393cc850" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/08a6c6aad8a5bd9606bee7c82c4e7229912ea53f", - "reference": "08a6c6aad8a5bd9606bee7c82c4e7229912ea53f", + "url": "https://api.github.com/repos/spatie/laravel-settings/zipball/f16a8d29c126deadddb84fff495212d2393cc850", + "reference": "f16a8d29c126deadddb84fff495212d2393cc850", "shasum": "" }, "require": { @@ -6057,7 +6065,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-settings/issues", - "source": "https://github.com/spatie/laravel-settings/tree/2.4.4" + "source": "https://github.com/spatie/laravel-settings/tree/2.4.5" }, "funding": [ { @@ -6069,7 +6077,7 @@ "type": "github" } ], - "time": "2022-09-07T15:09:30+00:00" + "time": "2022-09-28T14:10:27+00:00" }, { "name": "spatie/temporary-directory", @@ -6134,16 +6142,16 @@ }, { "name": "symfony/console", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "7fccea8728aa2d431a6725b02b3ce759049fc84d" + "reference": "7fa3b9cf17363468795e539231a5c91b02b608fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/7fccea8728aa2d431a6725b02b3ce759049fc84d", - "reference": "7fccea8728aa2d431a6725b02b3ce759049fc84d", + "url": "https://api.github.com/repos/symfony/console/zipball/7fa3b9cf17363468795e539231a5c91b02b608fc", + "reference": "7fa3b9cf17363468795e539231a5c91b02b608fc", "shasum": "" }, "require": { @@ -6210,7 +6218,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.4" + "source": "https://github.com/symfony/console/tree/v6.1.6" }, "funding": [ { @@ -6226,7 +6234,7 @@ "type": "tidelift" } ], - "time": "2022-08-26T10:32:31+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "symfony/css-selector", @@ -6362,16 +6370,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.1.3", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "736e42db3fd586d91820355988698e434e1d8419" + "reference": "49f718e41f1b6f0fd5730895ca5b1c37defd828d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/736e42db3fd586d91820355988698e434e1d8419", - "reference": "736e42db3fd586d91820355988698e434e1d8419", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/49f718e41f1b6f0fd5730895ca5b1c37defd828d", + "reference": "49f718e41f1b6f0fd5730895ca5b1c37defd828d", "shasum": "" }, "require": { @@ -6413,7 +6421,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/v6.1.3" + "source": "https://github.com/symfony/error-handler/tree/v6.1.6" }, "funding": [ { @@ -6429,7 +6437,7 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:42:06+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "symfony/event-dispatcher", @@ -6659,16 +6667,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "18e0f106a32887bcebef757e5b39c88e39a08f20" + "reference": "3ae8e9c57155fc48930493a629da293b32efbde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/18e0f106a32887bcebef757e5b39c88e39a08f20", - "reference": "18e0f106a32887bcebef757e5b39c88e39a08f20", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3ae8e9c57155fc48930493a629da293b32efbde0", + "reference": "3ae8e9c57155fc48930493a629da293b32efbde0", "shasum": "" }, "require": { @@ -6714,7 +6722,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.1.4" + "source": "https://github.com/symfony/http-foundation/tree/v6.1.6" }, "funding": [ { @@ -6730,20 +6738,20 @@ "type": "tidelift" } ], - "time": "2022-08-19T14:27:04+00:00" + "time": "2022-10-02T08:30:52+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2144c53a278254af57fa1e6f71427be656fab6f4" + "reference": "102f99bf81799e93f61b9a73b2f38b309c587a94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2144c53a278254af57fa1e6f71427be656fab6f4", - "reference": "2144c53a278254af57fa1e6f71427be656fab6f4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/102f99bf81799e93f61b9a73b2f38b309c587a94", + "reference": "102f99bf81799e93f61b9a73b2f38b309c587a94", "shasum": "" }, "require": { @@ -6824,7 +6832,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/v6.1.4" + "source": "https://github.com/symfony/http-kernel/tree/v6.1.6" }, "funding": [ { @@ -6840,20 +6848,20 @@ "type": "tidelift" } ], - "time": "2022-08-26T14:50:30+00:00" + "time": "2022-10-12T07:48:47+00:00" }, { "name": "symfony/mailer", - "version": "v6.1.4", + "version": "v6.1.5", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "55a7cb8f8518d35e2a039daaec6e1ee20509510e" + "reference": "e1b32deb9efc48def0c76b876860ad36f2123e89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/55a7cb8f8518d35e2a039daaec6e1ee20509510e", - "reference": "55a7cb8f8518d35e2a039daaec6e1ee20509510e", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e1b32deb9efc48def0c76b876860ad36f2123e89", + "reference": "e1b32deb9efc48def0c76b876860ad36f2123e89", "shasum": "" }, "require": { @@ -6898,7 +6906,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.1.4" + "source": "https://github.com/symfony/mailer/tree/v6.1.5" }, "funding": [ { @@ -6914,20 +6922,20 @@ "type": "tidelift" } ], - "time": "2022-08-03T05:16:05+00:00" + "time": "2022-08-29T06:58:39+00:00" }, { "name": "symfony/mime", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "5d1de2d3c52f8ca469c488f4b9e007e9e9cee0b3" + "reference": "5ae192b9a39730435cfec025a499f79d05ac68a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/5d1de2d3c52f8ca469c488f4b9e007e9e9cee0b3", - "reference": "5d1de2d3c52f8ca469c488f4b9e007e9e9cee0b3", + "url": "https://api.github.com/repos/symfony/mime/zipball/5ae192b9a39730435cfec025a499f79d05ac68a3", + "reference": "5ae192b9a39730435cfec025a499f79d05ac68a3", "shasum": "" }, "require": { @@ -6939,7 +6947,8 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4" + "symfony/mailer": "<5.4", + "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1", @@ -6947,7 +6956,7 @@ "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" }, "type": "library", "autoload": { @@ -6979,7 +6988,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.1.4" + "source": "https://github.com/symfony/mime/tree/v6.1.6" }, "funding": [ { @@ -6995,7 +7004,7 @@ "type": "tidelift" } ], - "time": "2022-08-19T14:27:04+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7797,16 +7806,16 @@ }, { "name": "symfony/routing", - "version": "v6.1.3", + "version": "v6.1.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ef9108b3a88045b7546e808fb404ddb073dd35ea" + "reference": "f8c1ebb43d0f39e5ecd12a732ba1952a3dd8455c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ef9108b3a88045b7546e808fb404ddb073dd35ea", - "reference": "ef9108b3a88045b7546e808fb404ddb073dd35ea", + "url": "https://api.github.com/repos/symfony/routing/zipball/f8c1ebb43d0f39e5ecd12a732ba1952a3dd8455c", + "reference": "f8c1ebb43d0f39e5ecd12a732ba1952a3dd8455c", "shasum": "" }, "require": { @@ -7865,7 +7874,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.1.3" + "source": "https://github.com/symfony/routing/tree/v6.1.5" }, "funding": [ { @@ -7881,7 +7890,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T15:00:40+00:00" + "time": "2022-09-09T09:26:14+00:00" }, { "name": "symfony/service-contracts", @@ -7970,16 +7979,16 @@ }, { "name": "symfony/string", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "290972cad7b364e3befaa74ba0ec729800fb161c" + "reference": "7e7e0ff180d4c5a6636eaad57b65092014b61864" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/290972cad7b364e3befaa74ba0ec729800fb161c", - "reference": "290972cad7b364e3befaa74ba0ec729800fb161c", + "url": "https://api.github.com/repos/symfony/string/zipball/7e7e0ff180d4c5a6636eaad57b65092014b61864", + "reference": "7e7e0ff180d4c5a6636eaad57b65092014b61864", "shasum": "" }, "require": { @@ -8035,7 +8044,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.4" + "source": "https://github.com/symfony/string/tree/v6.1.6" }, "funding": [ { @@ -8051,20 +8060,20 @@ "type": "tidelift" } ], - "time": "2022-08-12T18:05:43+00:00" + "time": "2022-10-10T09:34:31+00:00" }, { "name": "symfony/translation", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "45d0f5bb8df7255651ca91c122fab604e776af03" + "reference": "e6cd330e5a072518f88d65148f3f165541807494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/45d0f5bb8df7255651ca91c122fab604e776af03", - "reference": "45d0f5bb8df7255651ca91c122fab604e776af03", + "url": "https://api.github.com/repos/symfony/translation/zipball/e6cd330e5a072518f88d65148f3f165541807494", + "reference": "e6cd330e5a072518f88d65148f3f165541807494", "shasum": "" }, "require": { @@ -8131,7 +8140,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.1.4" + "source": "https://github.com/symfony/translation/tree/v6.1.6" }, "funding": [ { @@ -8147,7 +8156,7 @@ "type": "tidelift" } ], - "time": "2022-08-02T16:17:38+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "symfony/translation-contracts", @@ -8232,16 +8241,16 @@ }, { "name": "symfony/uid", - "version": "v6.1.3", + "version": "v6.1.5", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "ea2ccf0fdb88c83e626105b68e5bab5c132d812b" + "reference": "e03519f7b1ce1d3c0b74f751892bb41d549a2d98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/ea2ccf0fdb88c83e626105b68e5bab5c132d812b", - "reference": "ea2ccf0fdb88c83e626105b68e5bab5c132d812b", + "url": "https://api.github.com/repos/symfony/uid/zipball/e03519f7b1ce1d3c0b74f751892bb41d549a2d98", + "reference": "e03519f7b1ce1d3c0b74f751892bb41d549a2d98", "shasum": "" }, "require": { @@ -8286,7 +8295,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.1.3" + "source": "https://github.com/symfony/uid/tree/v6.1.5" }, "funding": [ { @@ -8302,20 +8311,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:46:29+00:00" + "time": "2022-09-09T09:34:27+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.1.3", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427" + "reference": "0f0adde127f24548e23cbde83bcaeadc491c551f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427", - "reference": "d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0f0adde127f24548e23cbde83bcaeadc491c551f", + "reference": "0f0adde127f24548e23cbde83bcaeadc491c551f", "shasum": "" }, "require": { @@ -8374,7 +8383,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.1.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.1.6" }, "funding": [ { @@ -8390,20 +8399,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:46:29+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "thecodingmachine/safe", - "version": "v2.3.1", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/thecodingmachine/safe.git", - "reference": "b141ff557fafcd00a475298883e567fc06bd95dd" + "reference": "e788f3d09dcd36f806350aedb77eac348fafadd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/b141ff557fafcd00a475298883e567fc06bd95dd", - "reference": "b141ff557fafcd00a475298883e567fc06bd95dd", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/e788f3d09dcd36f806350aedb77eac348fafadd3", + "reference": "e788f3d09dcd36f806350aedb77eac348fafadd3", "shasum": "" }, "require": { @@ -8527,9 +8536,9 @@ "description": "PHP core functions that throw exceptions instead of returning FALSE on error", "support": { "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.3.1" + "source": "https://github.com/thecodingmachine/safe/tree/v2.4.0" }, - "time": "2022-09-20T12:01:26+00:00" + "time": "2022-10-07T14:02:17+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -8586,16 +8595,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.4.1", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "shasum": "" }, "require": { @@ -8610,15 +8619,19 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -8650,7 +8663,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -8662,7 +8675,7 @@ "type": "tidelift" } ], - "time": "2021-12-12T23:22:04+00:00" + "time": "2022-10-16T01:01:54+00:00" }, { "name": "voku/portable-ascii", @@ -8796,6 +8809,80 @@ }, "time": "2022-06-03T18:03:27+00:00" }, + { + "name": "worksome/request-factories", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/worksome/request-factories.git", + "reference": "59016791b5fb9cf77eb777bfaeef7b47d21ebcdc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/worksome/request-factories/zipball/59016791b5fb9cf77eb777bfaeef7b47d21ebcdc", + "reference": "59016791b5fb9cf77eb777bfaeef7b47d21ebcdc", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0 || ^9.0", + "php": "^8.0 || ^8.1" + }, + "require-dev": { + "nunomaduro/collision": "^5.10 || ^6.0", + "nunomaduro/larastan": "^1.0 || ^2.0", + "orchestra/testbench": "^6.22 || ^7.0", + "pestphp/pest": "^1.21", + "pestphp/pest-plugin-laravel": "^1.1", + "worksome/coding-style": "0.17.0", + "worksome/pest-plugin-silence": "^0.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Worksome\\RequestFactories\\RequestFactoriesServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/PestAutoload.php" + ], + "psr-4": { + "Worksome\\RequestFactories\\": "src", + "Worksome\\RequestFactories\\Database\\Factories\\": "database/factories" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "luke", + "email": "lukeraymonddowning@gmail.com", + "role": "Developer" + } + ], + "description": "Test Form Requests in Laravel without all of the boilerplate.", + "homepage": "https://github.com/worksome/request-factories", + "keywords": [ + "laravel", + "request-factories", + "worksome" + ], + "support": { + "issues": "https://github.com/worksome/request-factories/issues", + "source": "https://github.com/worksome/request-factories/tree/v2.5.0" + }, + "funding": [ + { + "url": "https://github.com/worksome", + "type": "github" + } + ], + "time": "2022-09-15T11:48:41+00:00" + }, { "name": "zoomyboy/laravel-nami", "version": "dev-master", @@ -8849,16 +8936,16 @@ "packages-dev": [ { "name": "composer/ca-bundle", - "version": "1.3.3", + "version": "1.3.4", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c" + "reference": "69098eca243998b53eed7a48d82dedd28b447cd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/30897edbfb15e784fe55587b4f73ceefd3c4d98c", - "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/69098eca243998b53eed7a48d82dedd28b447cd5", + "reference": "69098eca243998b53eed7a48d82dedd28b447cd5", "shasum": "" }, "require": { @@ -8905,7 +8992,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.3" + "source": "https://github.com/composer/ca-bundle/tree/1.3.4" }, "funding": [ { @@ -8921,7 +9008,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T07:14:26+00:00" + "time": "2022-10-12T12:08:29+00:00" }, { "name": "composer/class-map-generator", @@ -8998,16 +9085,16 @@ }, { "name": "composer/composer", - "version": "2.4.2", + "version": "2.4.3", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "7d887621e69a0311eb50aed4a16f7044b2b385b9" + "reference": "b34c0e9a93f2cd688c62ce4dfcc69e13b6ce7aa4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/7d887621e69a0311eb50aed4a16f7044b2b385b9", - "reference": "7d887621e69a0311eb50aed4a16f7044b2b385b9", + "url": "https://api.github.com/repos/composer/composer/zipball/b34c0e9a93f2cd688c62ce4dfcc69e13b6ce7aa4", + "reference": "b34c0e9a93f2cd688c62ce4dfcc69e13b6ce7aa4", "shasum": "" }, "require": { @@ -9090,7 +9177,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.4.2" + "source": "https://github.com/composer/composer/tree/2.4.3" }, "funding": [ { @@ -9106,7 +9193,7 @@ "type": "tidelift" } ], - "time": "2022-09-14T14:11:15+00:00" + "time": "2022-10-14T14:56:41+00:00" }, { "name": "composer/metadata-minifier", @@ -9665,16 +9752,16 @@ }, { "name": "laravel/sail", - "version": "v1.16.0", + "version": "v1.16.2", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "73030c18b769f27e6f6aacf7848d024fa9a55560" + "reference": "7d1ed5f856ec8b9708712e3fc0708fcabe114659" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/73030c18b769f27e6f6aacf7848d024fa9a55560", - "reference": "73030c18b769f27e6f6aacf7848d024fa9a55560", + "url": "https://api.github.com/repos/laravel/sail/zipball/7d1ed5f856ec8b9708712e3fc0708fcabe114659", + "reference": "7d1ed5f856ec8b9708712e3fc0708fcabe114659", "shasum": "" }, "require": { @@ -9721,7 +9808,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2022-08-31T16:38:14+00:00" + "time": "2022-09-28T13:13:22+00:00" }, { "name": "mockery/mockery", @@ -9954,28 +10041,28 @@ }, { "name": "orchestra/testbench", - "version": "v7.7.0", + "version": "v7.11.0", "source": { "type": "git", "url": "https://github.com/orchestral/testbench.git", - "reference": "82c95f911347b5e35a9209e47925ac8afb11ae6e" + "reference": "64a5ef91760ab62acdd4adb10ebb1e1ad68e9311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/82c95f911347b5e35a9209e47925ac8afb11ae6e", - "reference": "82c95f911347b5e35a9209e47925ac8afb11ae6e", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/64a5ef91760ab62acdd4adb10ebb1e1ad68e9311", + "reference": "64a5ef91760ab62acdd4adb10ebb1e1ad68e9311", "shasum": "" }, "require": { "fakerphp/faker": "^1.9.2", - "laravel/framework": "^9.19", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.7", + "laravel/framework": "^9.36", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^7.11", "php": "^8.0", "phpunit/phpunit": "^9.5.10", "spatie/laravel-ray": "^1.28", - "symfony/process": "^6.0", - "symfony/yaml": "^6.0", + "symfony/process": "^6.0.9", + "symfony/yaml": "^6.0.9", "vlucas/phpdotenv": "^5.4.1" }, "type": "library", @@ -10007,7 +10094,7 @@ ], "support": { "issues": "https://github.com/orchestral/testbench/issues", - "source": "https://github.com/orchestral/testbench/tree/v7.7.0" + "source": "https://github.com/orchestral/testbench/tree/v7.11.0" }, "funding": [ { @@ -10019,20 +10106,20 @@ "type": "liberapay" } ], - "time": "2022-08-24T01:46:37+00:00" + "time": "2022-10-19T11:54:46+00:00" }, { "name": "orchestra/testbench-core", - "version": "v7.7.0", + "version": "v7.11.0", "source": { "type": "git", "url": "https://github.com/orchestral/testbench-core.git", - "reference": "4f861e993a990f4ea33d44c82bd69fd463bd769f" + "reference": "7b67c9e23e9eb6e3e3b336f9ba3afe99072795e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/4f861e993a990f4ea33d44c82bd69fd463bd769f", - "reference": "4f861e993a990f4ea33d44c82bd69fd463bd769f", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/7b67c9e23e9eb6e3e3b336f9ba3afe99072795e2", + "reference": "7b67c9e23e9eb6e3e3b336f9ba3afe99072795e2", "shasum": "" }, "require": { @@ -10040,26 +10127,26 @@ }, "require-dev": { "fakerphp/faker": "^1.9.2", - "laravel/framework": "^9.19", + "laravel/framework": "^9.36", "laravel/laravel": "9.x-dev", "laravel/pint": "^1.1", - "mockery/mockery": "^1.4.4", + "mockery/mockery": "^1.5.1", "orchestra/canvas": "^7.0", "phpunit/phpunit": "^9.5.10", - "symfony/process": "^6.0", - "symfony/yaml": "^6.0", + "symfony/process": "^6.0.9", + "symfony/yaml": "^6.0.9", "vlucas/phpdotenv": "^5.4.1" }, "suggest": { "brianium/paratest": "Allow using parallel tresting (^6.4).", "fakerphp/faker": "Allow using Faker for testing (^1.9.2).", - "laravel/framework": "Required for testing (^9.19).", - "mockery/mockery": "Allow using Mockery for testing (^1.4.4).", + "laravel/framework": "Required for testing (^9.34).", + "mockery/mockery": "Allow using Mockery for testing (^1.5.1).", "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.2).", "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^7.0).", "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^7.0).", "phpunit/phpunit": "Allow using PHPUnit for testing (^9.5.10).", - "symfony/yaml": "Required for CLI Commander (^6.0).", + "symfony/yaml": "Required for CLI Commander (^6.0.9).", "vlucas/phpdotenv": "Required for CLI Commander (^5.4.1)." }, "bin": [ @@ -10114,7 +10201,7 @@ "type": "liberapay" } ], - "time": "2022-08-24T01:29:09+00:00" + "time": "2022-10-19T11:47:55+00:00" }, { "name": "phar-io/manifest", @@ -10229,16 +10316,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.8.5", + "version": "1.8.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "f6598a5ff12ca4499a836815e08b4d77a2ddeb20" + "reference": "0c4459dc42c568b818b3f25186589f3acddc1823" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f6598a5ff12ca4499a836815e08b4d77a2ddeb20", - "reference": "f6598a5ff12ca4499a836815e08b4d77a2ddeb20", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0c4459dc42c568b818b3f25186589f3acddc1823", + "reference": "0c4459dc42c568b818b3f25186589f3acddc1823", "shasum": "" }, "require": { @@ -10268,7 +10355,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.8.5" + "source": "https://github.com/phpstan/phpstan/tree/1.8.10" }, "funding": [ { @@ -10284,7 +10371,7 @@ "type": "tidelift" } ], - "time": "2022-09-07T16:05:32+00:00" + "time": "2022-10-17T14:23:35+00:00" }, { "name": "phpunit/php-code-coverage", @@ -10606,16 +10693,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.24", + "version": "9.5.25", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "d0aa6097bef9fd42458a9b3c49da32c6ce6129c5" + "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0aa6097bef9fd42458a9b3c49da32c6ce6129c5", - "reference": "d0aa6097bef9fd42458a9b3c49da32c6ce6129c5", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", + "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", "shasum": "" }, "require": { @@ -10637,14 +10724,14 @@ "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.1", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, "suggest": { @@ -10688,7 +10775,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.24" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.25" }, "funding": [ { @@ -10698,9 +10785,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-08-30T07:42:16+00:00" + "time": "2022-09-25T03:44:45+00:00" }, { "name": "pimple/pimple", @@ -11899,16 +11990,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.1.4", + "version": "v6.1.5", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3f39c04d2630c34019907b02f85672dac99f8659" + "reference": "4d216a2beef096edf040a070117c39ca2abce307" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3f39c04d2630c34019907b02f85672dac99f8659", - "reference": "3f39c04d2630c34019907b02f85672dac99f8659", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d216a2beef096edf040a070117c39ca2abce307", + "reference": "4d216a2beef096edf040a070117c39ca2abce307", "shasum": "" }, "require": { @@ -11942,7 +12033,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.1.4" + "source": "https://github.com/symfony/filesystem/tree/v6.1.5" }, "funding": [ { @@ -11958,7 +12049,7 @@ "type": "tidelift" } ], - "time": "2022-08-02T16:17:38+00:00" + "time": "2022-09-21T20:29:40+00:00" }, { "name": "symfony/polyfill-iconv", @@ -12124,16 +12215,16 @@ }, { "name": "symfony/stopwatch", - "version": "v6.1.0", + "version": "v6.1.5", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d" + "reference": "266636bb8f3fbdccc302491df7b3a1b9a8c238a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/77dedae82ce2a26e2e9b481855473fc3b3e4e54d", - "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/266636bb8f3fbdccc302491df7b3a1b9a8c238a7", + "reference": "266636bb8f3fbdccc302491df7b3a1b9a8c238a7", "shasum": "" }, "require": { @@ -12166,7 +12257,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.1.0" + "source": "https://github.com/symfony/stopwatch/tree/v6.1.5" }, "funding": [ { @@ -12182,20 +12273,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-09-28T16:00:52+00:00" }, { "name": "symfony/yaml", - "version": "v6.1.4", + "version": "v6.1.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "86ee4d8fa594ed45e40d86eedfda1bcb66c8d919" + "reference": "66c6b0cf52b00f74614a2cf7ae7db08ea1095931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/86ee4d8fa594ed45e40d86eedfda1bcb66c8d919", - "reference": "86ee4d8fa594ed45e40d86eedfda1bcb66c8d919", + "url": "https://api.github.com/repos/symfony/yaml/zipball/66c6b0cf52b00f74614a2cf7ae7db08ea1095931", + "reference": "66c6b0cf52b00f74614a2cf7ae7db08ea1095931", "shasum": "" }, "require": { @@ -12240,7 +12331,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.1.4" + "source": "https://github.com/symfony/yaml/tree/v6.1.6" }, "funding": [ { @@ -12256,7 +12347,7 @@ "type": "tidelift" } ], - "time": "2022-08-02T16:17:38+00:00" + "time": "2022-10-07T08:04:03+00:00" }, { "name": "theseer/tokenizer", @@ -12310,16 +12401,16 @@ }, { "name": "zbateson/mail-mime-parser", - "version": "2.2.2", + "version": "2.2.3", "source": { "type": "git", "url": "https://github.com/zbateson/mail-mime-parser.git", - "reference": "318cd809afebe48e8fb41625b05b25470fb3fa86" + "reference": "295c7f82a8c44af685680d9df6714beb812e90ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/318cd809afebe48e8fb41625b05b25470fb3fa86", - "reference": "318cd809afebe48e8fb41625b05b25470fb3fa86", + "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/295c7f82a8c44af685680d9df6714beb812e90ff", + "reference": "295c7f82a8c44af685680d9df6714beb812e90ff", "shasum": "" }, "require": { @@ -12379,7 +12470,7 @@ "type": "github" } ], - "time": "2022-09-01T15:59:13+00:00" + "time": "2022-09-28T16:31:49+00:00" }, { "name": "zbateson/mb-wrapper", diff --git a/phpstan.neon b/phpstan.neon index 99c3f548..a6fb185d 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -492,35 +492,16 @@ parameters: count: 1 path: tests/Feature/Initialize/RequestTest.php - - - message: "#^Call to an undefined method Phake\\\\Proxies\\\\VerifierProxy\\:\\:run\\(\\)\\.$#" - count: 1 - path: tests/Feature/Initialize/RequestTest.php - - message: "#^Parameter \\#1 \\$mock of static method Phake\\:\\:verify\\(\\) expects Phake\\\\IMock, App\\\\Initialize\\\\Initializer given\\.$#" count: 1 path: tests/Feature/Initialize/RequestTest.php - - message: "#^Call to an undefined method Phake\\\\Proxies\\\\StubberProxy\\:\\:check\\(\\)\\.$#" - count: 2 - path: tests/Feature/Mailman/SettingTest.php + message: "#^Call to an undefined method Phake\\\\Proxies\\\\StubberProxy.*#" - - message: "#^Call to an undefined method Phake\\\\Proxies\\\\StubberProxy\\:\\:setCredentials\\(\\)\\.$#" - count: 2 - path: tests/Feature/Mailman/SettingTest.php - - - - message: "#^Call to an undefined method Phake\\\\Proxies\\\\VerifierProxy\\:\\:check\\(\\)\\.$#" - count: 2 - path: tests/Feature/Mailman/SettingTest.php - - - - message: "#^Call to an undefined method Phake\\\\Proxies\\\\VerifierProxy\\:\\:setCredentials\\(\\)\\.$#" - count: 2 - path: tests/Feature/Mailman/SettingTest.php + message: "#^Call to an undefined method Phake\\\\Proxies\\\\VerifierProxy.*#" - message: "#^Parameter \\#1 \\$mock of static method Phake\\:\\:verify\\(\\) expects Phake\\\\IMock, App\\\\Mailman\\\\Support\\\\MailmanService given\\.$#" @@ -528,9 +509,7 @@ parameters: path: tests/Feature/Mailman/SettingTest.php - - message: "#^Parameter \\#1 \\.\\.\\.\\$mocks of static method Phake\\:\\:verifyNoInteraction\\(\\) expects Phake\\\\IMock, App\\\\Mailman\\\\Support\\\\MailmanService given\\.$#" - count: 1 - path: tests/Feature/Mailman/SettingTest.php + message: "#verifyNoInteraction\\(\\) expects Phake\\\\IMock#" - message: "#^Method Tests\\\\Feature\\\\Member\\\\StoreTest\\:\\:attributes\\(\\) has parameter \\$overwrites with no value type specified in iterable type array\\.$#" diff --git a/tests/RequestFactories/MailmanListRequestFactory.php b/tests/RequestFactories/MailmanListRequestFactory.php new file mode 100644 index 00000000..a3714339 --- /dev/null +++ b/tests/RequestFactories/MailmanListRequestFactory.php @@ -0,0 +1,24 @@ + $this->faker->words(5, true), + 'display_name' => $this->faker->words(5, true), + 'fqdn_listname' => $this->faker->safeEmail, + 'http_etag' => $this->faker->uuid(), + 'list_id' => str_replace('@', '.', $this->faker->safeEmail()), + 'list_name' => $this->faker->words(1, true), + 'mail_host' => $this->faker->safeEmailDomain(), + 'member_count' => $this->faker->numberBetween(0, 100), + 'self_link' => $this->faker->url(), + 'volume' => 1, + ]; + } +} diff --git a/tests/Unit/Mailman/ServiceTest.php b/tests/Unit/Mailman/ServiceTest.php index 30bdff45..67ffc580 100644 --- a/tests/Unit/Mailman/ServiceTest.php +++ b/tests/Unit/Mailman/ServiceTest.php @@ -2,10 +2,12 @@ namespace Tests\Unit\Mailman; +use App\Mailman\Data\MailingList; use App\Mailman\Exceptions\MailmanServiceException; use App\Mailman\Support\MailmanService; use Generator; use Illuminate\Support\Facades\Http; +use Tests\RequestFactories\MailmanListRequestFactory; use Tests\TestCase; class ServiceTest extends TestCase @@ -67,6 +69,26 @@ class ServiceTest extends TestCase app(MailmanService::class)->setCredentials('http://mailman.test/api/', 'user', 'secret')->members('listid')->first(); } + public function testItCanGetLists(): void + { + Http::fake([ + 'http://mailman.test/api/lists?page=1&count=10' => Http::sequence() + ->push(json_encode([ + 'entries' => [ + MailmanListRequestFactory::new()->create(['display_name' => 'Eltern', 'fqdn_listname' => 'eltern@example.com']), + MailmanListRequestFactory::new()->create(['display_name' => 'Eltern2', 'fqdn_listname' => 'eltern2@example.com']), + ], + 'start' => 0, + 'total_size' => 2, + ]), 200), + ]); + + $lists = app(MailmanService::class)->setCredentials('http://mailman.test/api/', 'user', 'secret')->getLists()->all(); + $this->assertCount(2, $lists); + $this->assertInstanceOf(MailingList::class, $lists[0]); + $this->assertEquals('Eltern', $lists[0]->displayName); + } + public function listDataProvider(): Generator { foreach (range(3, 40) as $i) {