Skip to content

Commit 02f4b50

Browse files
committed
test: extract common Builder preamble
1 parent d7ebd10 commit 02f4b50

File tree

1 file changed

+46
-45
lines changed

1 file changed

+46
-45
lines changed

tests/acceptance/EloquentBuilderTypes.feature

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -15,73 +15,78 @@ Feature: Eloquent Builder types
1515
</plugins>
1616
</psalm>
1717
"""
18+
And I have the following code preamble
19+
"""
20+
<?php declare(strict_types=1);
21+
namespace Tests\Psalm\LaravelPlugin\Sandbox;
22+
23+
use Illuminate\Database\Eloquent\Builder;
24+
use Illuminate\Database\Eloquent\Collection;
25+
use Tests\Psalm\LaravelPlugin\Models\User;
26+
"""
1827

1928
Scenario: Models can call eloquent query builder instance methods
2029
Given I have the following code
2130
"""
22-
<?php declare(strict_types=1);
23-
24-
use Tests\Psalm\LaravelPlugin\Models\User;
25-
2631
final class UserRepository
2732
{
2833
2934
/**
30-
* @return \Illuminate\Database\Eloquent\Builder<User>
35+
* @return Builder<User>
3136
*/
32-
public function getNewQuery(): \Illuminate\Database\Eloquent\Builder
37+
public function getNewQuery(): Builder
3338
{
3439
return User::query();
3540
}
3641
3742
/**
38-
* @return \Illuminate\Database\Eloquent\Builder<User>
43+
* @return Builder<User>
3944
*/
40-
public function getNewModelQuery(): \Illuminate\Database\Eloquent\Builder
45+
public function getNewModelQuery(): Builder
4146
{
4247
return (new User())->newModelQuery();
4348
}
4449
4550
/**
46-
* @param \Illuminate\Database\Eloquent\Builder<User> $builder
51+
* @param Builder<User> $builder
4752
*/
48-
public function firstOrFailFromBuilderInstance(\Illuminate\Database\Eloquent\Builder $builder): User {
53+
public function firstOrFailFromBuilderInstance(Builder $builder): User {
4954
return $builder->firstOrFail();
5055
}
5156
5257
/**
53-
* @param \Illuminate\Database\Eloquent\Builder<User> $builder
58+
* @param Builder<User> $builder
5459
*/
55-
public function findOrFailFromBuilderInstance(\Illuminate\Database\Eloquent\Builder $builder): User {
60+
public function findOrFailFromBuilderInstance(Builder $builder): User {
5661
return $builder->findOrFail(1);
5762
}
5863
5964
/**
60-
* @param \Illuminate\Database\Eloquent\Builder<User> $builder
61-
* @return \Illuminate\Database\Eloquent\Collection<User>
65+
* @param Builder<User> $builder
66+
* @return Collection<User>
6267
*/
63-
public function findMultipleOrFailFromBuilderInstance(\Illuminate\Database\Eloquent\Builder $builder): \Illuminate\Database\Eloquent\Collection {
68+
public function findMultipleOrFailFromBuilderInstance(Builder $builder): Collection {
6469
return $builder->findOrFail([1, 2]);
6570
}
6671
6772
/**
68-
* @param \Illuminate\Database\Eloquent\Builder<User> $builder
73+
* @param Builder<User> $builder
6974
*/
70-
public function findOne(\Illuminate\Database\Eloquent\Builder $builder): ?User {
75+
public function findOne(Builder $builder): ?User {
7176
return $builder->find(1);
7277
}
7378
7479
/**
75-
* @param \Illuminate\Database\Eloquent\Builder<User> $builder
80+
* @param Builder<User> $builder
7681
*/
77-
public function findViaArray(\Illuminate\Database\Eloquent\Builder $builder): \Illuminate\Database\Eloquent\Collection {
82+
public function findViaArray(Builder $builder): Collection {
7883
return $builder->find([1]);
7984
}
8085
8186
/**
82-
* @return \Illuminate\Database\Eloquent\Builder<User>
87+
* @return Builder<User>
8388
*/
84-
public function getWhereBuilderViaInstance(array $attributes): \Illuminate\Database\Eloquent\Builder {
89+
public function getWhereBuilderViaInstance(array $attributes): Builder {
8590
return (new User())->where($attributes);
8691
}
8792
}
@@ -90,10 +95,16 @@ Feature: Eloquent Builder types
9095
Then I see no errors
9196

9297
Scenario: can call static methods on model
93-
Given I have the following code
98+
Given I have the following code preamble
9499
"""
95100
<?php declare(strict_types=1);
96101
102+
use Illuminate\Database\Eloquent\Builder;
103+
use Illuminate\Database\Eloquent\Collection;
104+
"""
105+
And I have the following code
106+
"""
107+
97108
final class User extends \Illuminate\Database\Eloquent\Model {
98109
protected $table = 'users';
99110
};
@@ -102,17 +113,17 @@ Feature: Eloquent Builder types
102113
{
103114
104115
/**
105-
* @return \Illuminate\Database\Eloquent\Builder<User>
116+
* @return Builder<User>
106117
*/
107-
public function getWhereBuilderViaStatic(array $attributes): \Illuminate\Database\Eloquent\Builder
118+
public function getWhereBuilderViaStatic(array $attributes): Builder
108119
{
109120
return User::where($attributes);
110121
}
111122
112123
/**
113-
* @psalm-return \Illuminate\Database\Eloquent\Collection<User>
124+
* @psalm-return Collection<User>
114125
*/
115-
public function getWhereViaStatic(array $attributes): \Illuminate\Database\Eloquent\Collection
126+
public function getWhereViaStatic(array $attributes): Collection
116127
{
117128
return User::where($attributes)->get();
118129
}
@@ -122,20 +133,25 @@ Feature: Eloquent Builder types
122133
Then I see no errors
123134

124135
Scenario:
125-
Given I have the following code
136+
Given I have the following code preamble
126137
"""
127138
<?php declare(strict_types=1);
128139
129-
final class User extends \Illuminate\Database\Eloquent\Model {
140+
use Illuminate\Database\Eloquent\Builder;
141+
use Illuminate\Database\Eloquent\Model;
142+
"""
143+
And I have the following code
144+
"""
145+
final class User extends Model {
130146
protected $table = 'users';
131147
};
132148
133149
final class UserRepository
134150
{
135151
/**
136-
* @return \Illuminate\Database\Eloquent\Builder<User>
152+
* @return Builder<User>
137153
*/
138-
public function test_failure(): \Illuminate\Database\Eloquent\Builder
154+
public function test_failure(): Builder
139155
{
140156
return User::fakeQueryMethodThatDoesntExist();
141157
}
@@ -150,11 +166,6 @@ Feature: Eloquent Builder types
150166
Scenario: can call methods on underlying query builder
151167
Given I have the following code
152168
"""
153-
<?php declare(strict_types=1);
154-
155-
use Tests\Psalm\LaravelPlugin\Models\User;
156-
use \Illuminate\Database\Eloquent\Builder;
157-
158169
/**
159170
* @psalm-param Builder<User> $builder
160171
* @psalm-return Builder<User>
@@ -170,11 +181,6 @@ Feature: Eloquent Builder types
170181
Given I have the "laravel/framework" package satisfying the "6.*"
171182
And I have the following code
172183
"""
173-
<?php declare(strict_types=1);
174-
175-
use Tests\Psalm\LaravelPlugin\Models\User;
176-
use \Illuminate\Database\Eloquent\Builder;
177-
178184
/**
179185
* @psalm-param Builder<User> $builder
180186
* @psalm-return User
@@ -201,11 +207,6 @@ Feature: Eloquent Builder types
201207
Given I have the "laravel/framework" package satisfying the ">= 8.0"
202208
And I have the following code
203209
"""
204-
<?php declare(strict_types=1);
205-
206-
use Tests\Psalm\LaravelPlugin\Models\User;
207-
use Illuminate\Database\Eloquent\Builder;
208-
209210
/**
210211
* @psalm-param Builder<User> $builder
211212
* @psalm-return User

0 commit comments

Comments
 (0)