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
Push — add-uploaders-tests ( d90561...283207 )
by Pedro
12:45
created

UploadersTest::initUploaderWithFiles()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

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