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/FakeUploadersTest.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\FakeUploaderCrudController;
7
use Backpack\CRUD\Tests\config\Models\FakeUploader;
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
 */
18
class FakeUploadersTest extends BaseDBCrudPanel
19
{
20
    use HasUploadedFiles;
21
22
    protected string $testBaseUrl;
23
24
    protected function defineRoutes($router)
25
    {
26
        $router->crud(config('backpack.base.route_prefix').'/fake-uploader', FakeUploaderCrudController::class);
27
    }
28
29
    protected function setUp(): void
30
    {
31
        parent::setUp();
32
        Storage::fake('uploaders');
33
        $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

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