Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Issues (969)

Branch: add-name-parameter-to-form

tests/Feature/UploadersTest.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace Backpack\CRUD\Tests\Feature;
4
5
use Backpack\CRUD\Tests\config\CrudPanel\BaseDBCrudPanel;
6
use Backpack\CRUD\Tests\config\Http\Controllers\UploaderCrudController;
7
use Backpack\CRUD\Tests\config\Models\Uploader;
8
use Backpack\CRUD\Tests\config\Models\User;
9
use Backpack\CRUD\Tests\config\Uploads\HasUploadedFiles;
10
use Illuminate\Http\UploadedFile;
11
use Illuminate\Support\Facades\Storage;
12
13
/**
14
 * @covers Backpack\CRUD\app\Library\Uploaders\Uploader
15
 * @covers Backpack\CRUD\app\Library\Uploaders\SingleFile
16
 * @covers Backpack\CRUD\app\Library\Uploaders\MultipleFiles
17
 * @covers Backpack\CRUD\app\Library\Uploaders\Support\RegisterUploadEvents
18
 * @covers Backpack\CRUD\app\Library\Uploaders\Support\UploadersRepository
19
 */
20
class UploadersTest extends BaseDBCrudPanel
21
{
22
    use HasUploadedFiles;
23
24
    protected string $testBaseUrl;
25
26
    protected function defineRoutes($router)
27
    {
28
        $router->crud(config('backpack.base.route_prefix').'/uploader', UploaderCrudController::class);
29
    }
30
31
    protected function setUp(): void
32
    {
33
        parent::setUp();
34
        $this->testBaseUrl = config('backpack.base.route_prefix').'/uploader';
35
        Storage::fake('uploaders');
36
        $this->actingAs(User::find(1));
0 ignored issues
show
It seems like Backpack\CRUD\Tests\config\Models\User::find(1) can also be of type Illuminate\Database\Eloq...gHasThroughRelationship and null; however, parameter $user of Orchestra\Testbench\TestCase::actingAs() does only seem to accept Illuminate\Contracts\Auth\Authenticatable, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

36
        $this->actingAs(/** @scrutinizer ignore-type */ User::find(1));
Loading history...
37
    }
38
39
    public function test_it_can_access_the_uploaders_create_page()
40
    {
41
        $response = $this->get($this->testBaseUrl.'/create');
42
        $response->assertStatus(200);
43
    }
44
45
    public function test_it_can_store_uploaded_files()
46
    {
47
        $response = $this->post($this->testBaseUrl, [
48
            'upload' => $this->getUploadedFile('avatar1.jpg'),
49
            'upload_multiple' => $this->getUploadedFiles(['avatar2.jpg', 'avatar3.jpg']),
50
        ]);
51
52
        $response->assertStatus(302);
53
54
        $response->assertRedirect($this->testBaseUrl);
55
56
        $this->assertDatabaseCount('uploaders', 1);
57
58
        $files = Storage::disk('uploaders')->allFiles();
59
60
        $this->assertEquals(3, count($files));
61
62
        $this->assertDatabaseHas('uploaders', [
63
            'upload' => 'avatar1.jpg',
64
            'upload_multiple' => json_encode(['avatar2.jpg',  'avatar3.jpg']),
65
        ]);
66
67
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar1.jpg'));
68
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar2.jpg'));
69
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar3.jpg'));
70
    }
71
72
    public function test_it_display_the_edit_page_without_files()
73
    {
74
        self::initUploader();
75
76
        $response = $this->get($this->testBaseUrl.'/1/edit');
77
        $response->assertStatus(200);
78
    }
79
80
    public function test_it_display_the_upload_page_with_files()
81
    {
82
        self::initUploaderWithFiles();
83
        $response = $this->get($this->testBaseUrl.'/1/edit');
84
85
        $response->assertStatus(200);
86
87
        $response->assertSee('avatar1.jpg');
88
        $response->assertSee('avatar2.jpg');
89
        $response->assertSee('avatar3.jpg');
90
    }
91
92
    public function test_it_can_update_uploaded_files()
93
    {
94
        self::initUploaderWithFiles();
95
96
        $response = $this->put($this->testBaseUrl.'/1', [
97
            'upload' => $this->getUploadedFile('avatar4.jpg'),
98
            'upload_multiple' => $this->getUploadedFiles(['avatar5.jpg', 'avatar6.jpg']),
99
            'clear_upload_multiple' => ['avatar2.jpg',  'avatar3.jpg'],
100
            'id' => 1,
101
        ]);
102
103
        $response->assertStatus(302);
104
105
        $response->assertRedirect($this->testBaseUrl);
106
107
        $this->assertDatabaseCount('uploaders', 1);
108
109
        $this->assertDatabaseHas('uploaders', [
110
            'upload' => 'avatar4.jpg',
111
            'upload_multiple' => json_encode(['avatar5.jpg',  'avatar6.jpg']),
112
        ]);
113
114
        $files = Storage::disk('uploaders')->allFiles();
115
116
        $this->assertEquals(3, count($files));
117
118
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar4.jpg'));
119
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar5.jpg'));
120
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar6.jpg'));
121
    }
122
123
    public function test_single_upload_deletes_files_when_updated_without_values()
124
    {
125
        self::initUploaderWithFiles();
126
127
        $response = $this->put($this->testBaseUrl.'/1', [
128
            'upload' => null,
129
            'id' => 1,
130
        ]);
131
132
        $response->assertStatus(302);
133
134
        $response->assertRedirect($this->testBaseUrl);
135
136
        $this->assertDatabaseCount('uploaders', 1);
137
138
        $this->assertDatabaseHas('uploaders', [
139
            'upload' => null,
140
            'upload_multiple' => json_encode(['avatar2.jpg',  'avatar3.jpg']),
141
        ]);
142
143
        $files = Storage::disk('uploaders')->allFiles();
144
145
        $this->assertEquals(2, count($files));
146
147
        $this->assertFalse(Storage::disk('uploaders')->exists('avatar1.jpg'));
148
    }
149
150
    public function test_it_can_delete_uploaded_files()
151
    {
152
        self::initUploaderWithFiles();
153
154
        $response = $this->delete($this->testBaseUrl.'/1');
155
156
        $response->assertStatus(200);
157
158
        $this->assertDatabaseCount('uploaders', 0);
159
160
        $files = Storage::disk('uploaders')->allFiles();
161
162
        $this->assertEquals(0, count($files));
163
    }
164
165
    public function test_it_keeps_previous_values_unchaged_when_not_deleted()
166
    {
167
        self::initUploaderWithFiles();
168
169
        $response = $this->put($this->testBaseUrl.'/1', [
170
            'upload_multiple' => ['avatar2.jpg',  'avatar3.jpg'],
171
            'id' => 1,
172
        ]);
173
174
        $response->assertStatus(302);
175
176
        $response->assertRedirect($this->testBaseUrl);
177
178
        $this->assertDatabaseCount('uploaders', 1);
179
180
        $this->assertDatabaseHas('uploaders', [
181
            'upload' => 'avatar1.jpg',
182
            'upload_multiple' => json_encode(['avatar2.jpg',  'avatar3.jpg']),
183
        ]);
184
185
        $files = Storage::disk('uploaders')->allFiles();
186
187
        $this->assertEquals(3, count($files));
188
189
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar1.jpg'));
190
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar2.jpg'));
191
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar3.jpg'));
192
    }
193
194
    public function test_upload_multiple_can_delete_uploaded_files_and_add_at_the_same_time()
195
    {
196
        self::initUploaderWithFiles();
197
198
        $response = $this->put($this->testBaseUrl.'/1', [
199
            'upload_multiple' => $this->getUploadedFiles(['avatar4.jpg', 'avatar5.jpg']),
200
            'clear_upload_multiple' => ['avatar2.jpg'],
201
            'id' => 1,
202
        ]);
203
204
        $response->assertStatus(302);
205
206
        $response->assertRedirect($this->testBaseUrl);
207
208
        $this->assertDatabaseCount('uploaders', 1);
209
210
        $this->assertDatabaseHas('uploaders', [
211
            'upload' => 'avatar1.jpg',
212
            'upload_multiple' => json_encode(['avatar3.jpg', 'avatar4.jpg',  'avatar5.jpg']),
213
        ]);
214
215
        $files = Storage::disk('uploaders')->allFiles();
216
217
        $this->assertEquals(4, count($files));
218
219
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar1.jpg'));
220
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar3.jpg'));
221
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar4.jpg'));
222
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar5.jpg'));
223
    }
224
225
    protected static function initUploaderWithFiles()
226
    {
227
        UploadedFile::fake()->image('avatar1.jpg')->storeAs('', 'avatar1.jpg', ['disk' => 'uploaders']);
228
        UploadedFile::fake()->image('avatar2.jpg')->storeAs('', 'avatar2.jpg', ['disk' => 'uploaders']);
229
        UploadedFile::fake()->image('avatar3.jpg')->storeAs('', 'avatar3.jpg', ['disk' => 'uploaders']);
230
231
        Uploader::create([
232
            'upload' => 'avatar1.jpg',
233
            'upload_multiple' => json_encode(['avatar2.jpg',  'avatar3.jpg']),
234
        ]);
235
    }
236
237
    protected static function initUploader()
238
    {
239
        Uploader::create([
240
            'upload' => null,
241
            'upload_multiple' => null,
242
        ]);
243
    }
244
}
245