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

Test Failed
Pull Request — fix-uploaders (#5518)
by Cristian
26:36 queued 12:28
created

UploadersTest::test_it_can_update_uploaded_files()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 29
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 17
nc 1
nop 0
dl 0
loc 29
rs 9.7
c 0
b 0
f 0
1
<?php
2
3
namespace 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 Illuminate\Http\UploadedFile;
10
use Illuminate\Support\Facades\Storage;
11
12
class UploadersTest extends BaseDBCrudPanel
13
{
14
    protected function defineRoutes($router)
15
    {
16
        $router->crud(config('backpack.base.route_prefix').'/uploader', UploaderCrudController::class);
17
    }
18
19
    protected function setUp(): void
20
    {
21
        parent::setUp();
22
23
        Storage::fake('uploaders');
24
        $this->actingAs(User::find(1));
25
    }
26
27
    public function test_it_can_access_the_uploaders_create_page()
28
    {
29
        $response = $this->get(config('backpack.base.route_prefix').'/uploader/create');
30
        $response->assertStatus(200);
31
    }
32
33
    public function test_it_can_store_uploaded_files()
34
    {
35
        $response = $this->post(config('backpack.base.route_prefix').'/uploader', [
36
            'upload' => UploadedFile::fake()->image('avatar.jpg'),
37
            'upload_multiple' => [UploadedFile::fake()->image('avatar1.jpg'), UploadedFile::fake()->image('avatar2.jpg')],
38
        ]);
39
40
        $response->assertStatus(302);
41
42
        $response->assertRedirect(config('backpack.base.route_prefix').'/uploader');
43
44
        $this->assertDatabaseCount('uploaders', 1);
45
46
        $files = Storage::disk('uploaders')->allFiles();
47
48
        $this->assertEquals(3, count($files));
49
50
        $this->assertDatabaseHas('uploaders', [
51
            'upload' => 'avatar.jpg',
52
            'upload_multiple' => json_encode(['avatar1.jpg',  'avatar2.jpg']),
53
        ]);
54
55
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar.jpg'));
56
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar1.jpg'));
57
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar2.jpg'));
58
    }
59
60
    public function test_it_display_the_edit_page_without_files()
61
    {
62
        self::initUploader();
63
64
        $response = $this->get(config('backpack.base.route_prefix').'/uploader/1/edit');
65
        $response->assertStatus(200);
66
    }
67
68
    public function test_it_display_the_upload_page_with_files()
69
    {
70
        self::initUploaderWithFiles();
71
        $response = $this->get(config('backpack.base.route_prefix').'/uploader/1/edit');
72
73
        $response->assertStatus(200);
74
75
        $response->assertSee('avatar.jpg');
76
        $response->assertSee('avatar1.jpg');
77
        $response->assertSee('avatar2.jpg');
78
    }
79
80
    public function test_it_can_update_uploaded_files()
81
    {
82
        self::initUploaderWithFiles();
83
84
        $response = $this->put(config('backpack.base.route_prefix').'/uploader/1', [
85
            'upload' => UploadedFile::fake()->image('avatar4.jpg'),
86
            'upload_multiple' => [UploadedFile::fake()->image('avatar5.jpg'), UploadedFile::fake()->image('avatar6.jpg')],
87
            'clear_upload_multiple' => ['avatar2.jpg',  'avatar3.jpg'],
88
            'id' => 1,
89
        ]);
90
91
        $response->assertStatus(302);
92
93
        $response->assertRedirect(config('backpack.base.route_prefix').'/uploader');
94
95
        $this->assertDatabaseCount('uploaders', 1);
96
97
        $this->assertDatabaseHas('uploaders', [
98
            'upload' => 'avatar4.jpg',
99
            'upload_multiple' => json_encode(['avatar5.jpg',  'avatar6.jpg']),
100
        ]);
101
102
        $files = Storage::disk('uploaders')->allFiles();
103
104
        $this->assertEquals(3, count($files));
105
106
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar4.jpg'));
107
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar5.jpg'));
108
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar6.jpg'));
109
    }
110
111
    /**
112
     * @group fail
113
     */
114
    public function test_it_can_delete_uploaded_files()
115
    {
116
        self::initUploaderWithFiles();
117
118
        $response = $this->delete(config('backpack.base.route_prefix').'/uploader/1');
119
120
        $response->assertStatus(200);
121
122
        $this->assertDatabaseCount('uploaders', 0);
123
124
        $files = Storage::disk('uploaders')->allFiles();
125
126
        $this->assertEquals(0, count($files));
127
    }
128
129
    /**
130
     * @group fail
131
     */
132
    public function test_it_keeps_previous_values_unchaged_when_not_deleted()
133
    {
134
        self::initUploaderWithFiles();
135
136
        $response = $this->put(config('backpack.base.route_prefix').'/uploader/1', [
137
            'upload_multiple' => ['avatar2.jpg',  'avatar3.jpg'],
138
            'id' => 1,
139
        ]);
140
141
        $response->assertStatus(302);
142
143
        $response->assertRedirect(config('backpack.base.route_prefix').'/uploader');
144
145
        $this->assertDatabaseCount('uploaders', 1);
146
147
        $this->assertDatabaseHas('uploaders', [
148
            'upload' => 'avatar1.jpg',
149
            'upload_multiple' => json_encode(['avatar2.jpg',  'avatar3.jpg']),
150
        ]);
151
152
        $files = Storage::disk('uploaders')->allFiles();
153
154
        $this->assertEquals(3, count($files));
155
156
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar1.jpg'));
157
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar2.jpg'));
158
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar3.jpg'));
159
    }
160
161
    /**
162
     * @group fail
163
     */
164
    public function test_upload_multiple_can_delete_uploaded_files_and_add_at_the_same_time()
165
    {
166
        self::initUploaderWithFiles();
167
168
        $response = $this->put(config('backpack.base.route_prefix').'/uploader/1', [
169
            'upload_multiple' => [UploadedFile::fake()->image('avatar4.jpg'), UploadedFile::fake()->image('avatar5.jpg')],
170
            'clear_upload_multiple' => ['avatar2.jpg'],
171
            'id' => 1,
172
        ]);
173
174
        $response->assertStatus(302);
175
176
        $response->assertRedirect(config('backpack.base.route_prefix').'/uploader');
177
178
        $this->assertDatabaseCount('uploaders', 1);
179
180
        $this->assertDatabaseHas('uploaders', [
181
            'upload' => 'avatar1.jpg',
182
            'upload_multiple' => json_encode(['avatar3.jpg', 'avatar4.jpg',  'avatar5.jpg']),
183
        ]);
184
185
        $files = Storage::disk('uploaders')->allFiles();
186
187
        $this->assertEquals(4, count($files));
188
189
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar1.jpg'));
190
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar3.jpg'));
191
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar4.jpg'));
192
        $this->assertTrue(Storage::disk('uploaders')->exists('avatar5.jpg'));
193
    }
194
195
    protected static function initUploaderWithFiles()
196
    {
197
        UploadedFile::fake()->image('avatar1.jpg')->storeAs('', 'avatar1.jpg', ['disk' => 'uploaders']);
198
        UploadedFile::fake()->image('avatar2.jpg')->storeAs('', 'avatar2.jpg', ['disk' => 'uploaders']);
199
        UploadedFile::fake()->image('avatar3.jpg')->storeAs('', 'avatar3.jpg', ['disk' => 'uploaders']);
200
201
        Uploader::create([
202
            'upload' => 'avatar1.jpg',
203
            'upload_multiple' => json_encode(['avatar2.jpg',  'avatar3.jpg']),
204
        ]);
205
    }
206
207
    protected static function initUploader()
208
    {
209
        Uploader::create([
210
            'upload' => null,
211
            'upload_multiple' => null,
212
        ]);
213
    }
214
}
215