Skip to content

Commit 4d4d6b4

Browse files
authored
Feat: Update pest testing framework to ^4.0 (#96)
* bump pest version to `^4.0` * hopefully fixes occasional unique exception error --------- Co-authored-by: Jakub Theimer <5587309+theimerj@users.noreply.github.com>
1 parent 75f68bd commit 4d4d6b4

File tree

3 files changed

+152
-141
lines changed

3 files changed

+152
-141
lines changed

composer.json

Lines changed: 135 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -1,138 +1,138 @@
11
{
2-
"name": "dystcz/dystore",
3-
"autoload": {
4-
"psr-4": {
5-
"Dystore\\Api\\": "packages/api/src",
6-
"Dystore\\Api\\Database\\Factories\\": "packages/api/database/factories",
7-
"Dystore\\Api\\Database\\State\\": "packages/api/database/state",
8-
"Dystore\\Newsletter\\": "packages/newsletter/src",
9-
"Dystore\\Newsletter\\Database\\Factories\\": "packages/newsletter/database/factories",
10-
"Dystore\\Newsletter\\Database\\State\\": "packages/newsletter/database/state",
11-
"Dystore\\ProductNotifications\\": "packages/product-notifications/src",
12-
"Dystore\\ProductNotifications\\Database\\Factories\\": "packages/product-notifications/database/factories",
13-
"Dystore\\ProductNotifications\\Database\\State\\": "packages/product-notifications/database/state",
14-
"Dystore\\ProductViews\\": "packages/product-views/src",
15-
"Dystore\\ProductViews\\Database\\Factories\\": "packages/product-views/database/factories",
16-
"Dystore\\ProductViews\\Database\\State\\": "packages/product-views/database/state",
17-
"Dystore\\Reviews\\": "packages/reviews/src",
18-
"Dystore\\Reviews\\Database\\Factories\\": "packages/reviews/database/factories",
19-
"Dystore\\Reviews\\Database\\State\\": "packages/reviews/database/state",
20-
"Dystore\\Stripe\\": "packages/stripe/src",
21-
"Dystore\\Stripe\\Database\\Factories\\": "packages/stripe/database/factories",
22-
"Dystore\\Stripe\\Database\\State\\": "packages/stripe/database/state"
23-
},
24-
"files": [
25-
"packages/api/autoload.php",
26-
"packages/newsletter/autoload.php",
27-
"packages/product-notifications/autoload.php",
28-
"packages/product-views/autoload.php",
29-
"packages/reviews/autoload.php",
30-
"packages/stripe/autoload.php"
31-
]
2+
"name": "dystcz/dystore",
3+
"autoload": {
4+
"psr-4": {
5+
"Dystore\\Api\\": "packages/api/src",
6+
"Dystore\\Api\\Database\\Factories\\": "packages/api/database/factories",
7+
"Dystore\\Api\\Database\\State\\": "packages/api/database/state",
8+
"Dystore\\Newsletter\\": "packages/newsletter/src",
9+
"Dystore\\Newsletter\\Database\\Factories\\": "packages/newsletter/database/factories",
10+
"Dystore\\Newsletter\\Database\\State\\": "packages/newsletter/database/state",
11+
"Dystore\\ProductNotifications\\": "packages/product-notifications/src",
12+
"Dystore\\ProductNotifications\\Database\\Factories\\": "packages/product-notifications/database/factories",
13+
"Dystore\\ProductNotifications\\Database\\State\\": "packages/product-notifications/database/state",
14+
"Dystore\\ProductViews\\": "packages/product-views/src",
15+
"Dystore\\ProductViews\\Database\\Factories\\": "packages/product-views/database/factories",
16+
"Dystore\\ProductViews\\Database\\State\\": "packages/product-views/database/state",
17+
"Dystore\\Reviews\\": "packages/reviews/src",
18+
"Dystore\\Reviews\\Database\\Factories\\": "packages/reviews/database/factories",
19+
"Dystore\\Reviews\\Database\\State\\": "packages/reviews/database/state",
20+
"Dystore\\Stripe\\": "packages/stripe/src",
21+
"Dystore\\Stripe\\Database\\Factories\\": "packages/stripe/database/factories",
22+
"Dystore\\Stripe\\Database\\State\\": "packages/stripe/database/state"
3223
},
33-
"minimum-stability": "dev",
34-
"replace": {
35-
"dystcz/dystore-api": "1.0.14",
36-
"dystcz/dystore-newsletter": "1.0.14",
37-
"dystcz/dystore-product-notifications": "1.0.14",
38-
"dystcz/dystore-product-views": "1.0.14",
39-
"dystcz/dystore-reviews": "1.0.14",
40-
"dystcz/dystore-stripe": "1.0.14"
41-
},
42-
"config": {
43-
"sort-packages": true,
44-
"allow-plugins": {
45-
"pestphp/pest-plugin": true,
46-
"php-http/discovery": true
47-
}
48-
},
49-
"scripts": {
50-
"post-autoload-dump": "@composer run prepare",
51-
"artisan": "vendor/bin/testbench",
52-
"clear": "vendor/bin/testbench package:purge --ansi",
53-
"prepare": "vendor/bin/testbench package:discover --ansi",
54-
"package-test": "vendor/bin/testbench package:test",
55-
"test": "vendor/bin/pest",
56-
"test-hashids": "vendor/bin/pest -c phpunit.hashids.xml",
57-
"test-coverage": "vendor/bin/pest --coverage",
58-
"analyse": "vendor/bin/phpstan analyse",
59-
"format": "vendor/bin/pint"
60-
},
61-
"extra": {
62-
"laravel": {
63-
"providers": [
64-
"Dystore\\Api\\ApiHashidsServiceProvider",
65-
"Dystore\\Api\\ApiServiceProvider",
66-
"Dystore\\Api\\JsonApiServiceProvider",
67-
"Dystore\\Newsletter\\NewsletterServiceProvider",
68-
"Dystore\\ProductNotifications\\ProductNotificationsServiceProvider",
69-
"Dystore\\ProductViews\\ProductViewsServiceProvider",
70-
"Dystore\\Reviews\\ReviewsServiceProvider",
71-
"Dystore\\Stripe\\StripeServiceProvider"
72-
]
73-
}
74-
},
75-
"autoload-dev": {
76-
"psr-4": {
77-
"Dystore\\Tests\\Api\\": "tests/api",
78-
"Dystore\\Tests\\Newsletter\\": "tests/newsletter",
79-
"Dystore\\Tests\\ProductNotifications\\": "tests/product-notifications",
80-
"Dystore\\Tests\\ProductViews\\": "tests/product-views",
81-
"Dystore\\Tests\\Reviews\\": "tests/reviews",
82-
"Dystore\\Tests\\Stripe\\": "tests/stripe"
83-
}
84-
},
85-
"require-dev": {
86-
"barryvdh/laravel-ide-helper": "^3.0",
87-
"drewm/mailchimp-api": "^2.5",
88-
"ecomailcz/ecomail": "^1.2",
89-
"getbrevo/brevo-php": "^1.0",
90-
"larastan/larastan": "^3.0",
91-
"laravel-json-api/testing": "^3.1",
92-
"laravel/pint": "^1.7",
93-
"mockery/mockery": "^1.5",
94-
"orchestra/testbench": "^9.0|^10.0",
95-
"pestphp/pest": "^3.0",
96-
"pestphp/pest-plugin-arch": "^3.0",
97-
"pestphp/pest-plugin-faker": "^3.0",
98-
"pestphp/pest-plugin-laravel": "^3.0",
99-
"spatie/laravel-ray": "^1.32",
100-
"spatie/mailcoach-sdk-php": "^1.1",
101-
"symplify/monorepo-builder": "^11.2"
102-
},
103-
"description": "Collection of ecommerce packages built on top of Lunar and Laravel JSON:API.",
104-
"require": {
105-
"php": "^8.2",
106-
"ext-redis": "*",
107-
"filament/spatie-laravel-media-library-plugin": "^3.2",
108-
"h4kuna/ares": "^3.0",
109-
"illuminate/support": "^11.0|^12.0",
110-
"laravel-json-api/hashids": "^3.2",
111-
"laravel-json-api/laravel": "^5.1",
112-
"laravel-json-api/non-eloquent": "^4.2",
113-
"laravel-notification-channels/discord": "^1.5",
114-
"lunarphp/lunar": "1.3.0",
115-
"lunarphp/stripe": "^1.3.0",
116-
"spatie/laravel-newsletter": "^5.1",
117-
"spatie/laravel-stripe-webhooks": "^3.6"
118-
},
119-
"type": "library",
120-
"authors": [
121-
{
122-
"name": "Dystopia",
123-
"homepage": "https://dy.st/"
124-
}
125-
],
126-
"license": "MIT",
127-
"homepage": "https://github.com/dystcz/dystore-api",
128-
"keywords": [
129-
"dystcz",
130-
"dystopia",
131-
"lunar",
132-
"dystore",
133-
"dystore-api",
134-
"laravel",
135-
"php"
136-
],
137-
"prefer-stable": true
24+
"files": [
25+
"packages/api/autoload.php",
26+
"packages/newsletter/autoload.php",
27+
"packages/product-notifications/autoload.php",
28+
"packages/product-views/autoload.php",
29+
"packages/reviews/autoload.php",
30+
"packages/stripe/autoload.php"
31+
]
32+
},
33+
"minimum-stability": "dev",
34+
"replace": {
35+
"dystcz/dystore-api": "1.0.14",
36+
"dystcz/dystore-newsletter": "1.0.14",
37+
"dystcz/dystore-product-notifications": "1.0.14",
38+
"dystcz/dystore-product-views": "1.0.14",
39+
"dystcz/dystore-reviews": "1.0.14",
40+
"dystcz/dystore-stripe": "1.0.14"
41+
},
42+
"config": {
43+
"sort-packages": true,
44+
"allow-plugins": {
45+
"pestphp/pest-plugin": true,
46+
"php-http/discovery": true
47+
}
48+
},
49+
"scripts": {
50+
"post-autoload-dump": "@composer run prepare",
51+
"artisan": "vendor/bin/testbench",
52+
"clear": "vendor/bin/testbench package:purge --ansi",
53+
"prepare": "vendor/bin/testbench package:discover --ansi",
54+
"package-test": "vendor/bin/testbench package:test",
55+
"test": "vendor/bin/pest",
56+
"test-hashids": "vendor/bin/pest -c phpunit.hashids.xml",
57+
"test-coverage": "vendor/bin/pest --coverage",
58+
"analyse": "vendor/bin/phpstan analyse",
59+
"format": "vendor/bin/pint"
60+
},
61+
"extra": {
62+
"laravel": {
63+
"providers": [
64+
"Dystore\\Api\\ApiHashidsServiceProvider",
65+
"Dystore\\Api\\ApiServiceProvider",
66+
"Dystore\\Api\\JsonApiServiceProvider",
67+
"Dystore\\Newsletter\\NewsletterServiceProvider",
68+
"Dystore\\ProductNotifications\\ProductNotificationsServiceProvider",
69+
"Dystore\\ProductViews\\ProductViewsServiceProvider",
70+
"Dystore\\Reviews\\ReviewsServiceProvider",
71+
"Dystore\\Stripe\\StripeServiceProvider"
72+
]
73+
}
74+
},
75+
"autoload-dev": {
76+
"psr-4": {
77+
"Dystore\\Tests\\Api\\": "tests/api",
78+
"Dystore\\Tests\\Newsletter\\": "tests/newsletter",
79+
"Dystore\\Tests\\ProductNotifications\\": "tests/product-notifications",
80+
"Dystore\\Tests\\ProductViews\\": "tests/product-views",
81+
"Dystore\\Tests\\Reviews\\": "tests/reviews",
82+
"Dystore\\Tests\\Stripe\\": "tests/stripe"
83+
}
84+
},
85+
"require-dev": {
86+
"barryvdh/laravel-ide-helper": "^3.0",
87+
"drewm/mailchimp-api": "^2.5",
88+
"ecomailcz/ecomail": "^1.2",
89+
"getbrevo/brevo-php": "^1.0",
90+
"larastan/larastan": "^3.0",
91+
"laravel-json-api/testing": "^3.1",
92+
"laravel/pint": "^1.7",
93+
"mockery/mockery": "^1.5",
94+
"orchestra/testbench": "^9.0|^10.0",
95+
"pestphp/pest": "^4.0",
96+
"pestphp/pest-plugin-arch": "^4.0",
97+
"pestphp/pest-plugin-faker": "^4.0",
98+
"pestphp/pest-plugin-laravel": "^4.0",
99+
"spatie/laravel-ray": "^1.32",
100+
"spatie/mailcoach-sdk-php": "^1.1",
101+
"symplify/monorepo-builder": "^11.2"
102+
},
103+
"description": "Collection of ecommerce packages built on top of Lunar and Laravel JSON:API.",
104+
"require": {
105+
"php": "^8.2",
106+
"ext-redis": "*",
107+
"filament/spatie-laravel-media-library-plugin": "^3.2",
108+
"h4kuna/ares": "^3.0",
109+
"illuminate/support": "^11.0|^12.0",
110+
"laravel-json-api/hashids": "^3.2",
111+
"laravel-json-api/laravel": "^5.1",
112+
"laravel-json-api/non-eloquent": "^4.2",
113+
"laravel-notification-channels/discord": "^1.5",
114+
"lunarphp/lunar": "1.3.0",
115+
"lunarphp/stripe": "^1.3.0",
116+
"spatie/laravel-newsletter": "^5.1",
117+
"spatie/laravel-stripe-webhooks": "^3.6"
118+
},
119+
"type": "library",
120+
"authors": [
121+
{
122+
"name": "Dystopia",
123+
"homepage": "https://dy.st/"
124+
}
125+
],
126+
"license": "MIT",
127+
"homepage": "https://github.com/dystcz/dystore-api",
128+
"keywords": [
129+
"dystcz",
130+
"dystopia",
131+
"lunar",
132+
"dystore",
133+
"dystore-api",
134+
"laravel",
135+
"php"
136+
],
137+
"prefer-stable": true
138138
}

monorepo-builder.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@
3838
'laravel-json-api/testing' => '^3.1',
3939
'laravel/pint' => '^1.7',
4040
'orchestra/testbench' => '^9.0|^10.0',
41-
'pestphp/pest' => '^3.0',
42-
'pestphp/pest-plugin-faker' => '^3.0',
43-
'pestphp/pest-plugin-laravel' => '^3.0',
41+
'pestphp/pest' => '^4.0',
42+
'pestphp/pest-plugin-faker' => '^4.0',
43+
'pestphp/pest-plugin-laravel' => '^4.0',
4444
'spatie/laravel-ray' => '^1.32',
4545
'symplify/monorepo-builder' => '^11.2',
4646
],

tests/api/TestCase.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,20 @@ protected function setUp(): void
5151
'default' => true,
5252
]);
5353

54-
Country::query()
55-
->where(['iso2' => 'GB'])
56-
->firstOr(fn () => Country::factory()->create(['iso2' => 'GB']));
54+
// For test stability, make the required GB country deterministic.
55+
Country::updateOrCreate(
56+
['iso2' => 'GB'],
57+
[
58+
'name' => 'United Kingdom',
59+
'iso3' => 'GBR',
60+
'phonecode' => '+44',
61+
'capital' => 'London',
62+
'currency' => 'GBP',
63+
'native' => 'en',
64+
'emoji' => '🇬🇧',
65+
'emoji_u' => 'U+1F1EC U+1F1E7',
66+
]
67+
);
5768

5869
Channel::factory()->create([
5970
'default' => true,

0 commit comments

Comments
 (0)