1+ <?php
2+
3+ namespace Tests \Feature \Settings ;
4+
5+ use App \Models \User ;
6+ use Illuminate \Foundation \Testing \RefreshDatabase ;
7+ use Tests \TestCase ;
8+ use Illuminate \Http \UploadedFile ;
9+ use Illuminate \Support \Facades \Storage ;
10+
11+ class ProfilePhotoTest extends TestCase
12+ {
13+ use RefreshDatabase;
14+
15+ public function test_profile_photo_can_be_uploaded ()
16+ {
17+ $ user = User::factory ()->create ();
18+
19+ Storage::fake ('public ' );
20+
21+ $ response = $ this
22+ ->actingAs ($ user )
23+ ->patch ('/settings/profile ' , [
24+ 'name ' => $ user ->name ,
25+ 'email ' => $ user ->email ,
26+ 'photo ' => $ file = UploadedFile::fake ()->image ('photo.jpg ' ),
27+ ]);
28+
29+ $ response
30+ ->assertSessionHasNoErrors ()
31+ ->assertRedirect ('/settings/profile ' );
32+
33+ $ user ->refresh ();
34+
35+ $ this ->assertNotNull ($ user ->profile_photo_path );
36+ $ this ->assertTrue (Storage::disk ('public ' )->exists ($ user ->profile_photo_path ));
37+ }
38+
39+ public function test_profile_photo_can_be_removed ()
40+ {
41+ $ user = User::factory ()->create ();
42+
43+ Storage::fake ('public ' );
44+
45+ $ response = $ this ->actingAs ($ user )->patch ('/settings/profile ' , [
46+ 'name ' => $ user ->name ,
47+ 'email ' => $ user ->email ,
48+ 'photo ' => $ file = UploadedFile::fake ()->image ('photo.jpg ' ),
49+ ]);
50+
51+ $ response ->assertSessionHasNoErrors ()
52+ ->assertRedirect ('/settings/profile ' );
53+
54+ $ user ->refresh ();
55+
56+ $ this ->assertNotNull ($ user ->profile_photo_path );
57+ $ this ->assertTrue (Storage::disk ('public ' )->exists ($ user ->profile_photo_path ));
58+
59+ $ oldPath = $ user ->profile_photo_path ;
60+
61+ $ response = $ this ->actingAs ($ user )->delete ('/settings/profile-photo ' );
62+
63+ $ response ->assertSessionHasNoErrors ()
64+ ->assertRedirect ('/settings/profile ' );
65+
66+ $ user ->refresh ();
67+
68+ $ this ->assertNull ($ user ->profile_photo_path );
69+ $ this ->assertFalse (Storage::disk ('public ' )->exists ($ oldPath ));
70+ }
71+
72+ public function test_profile_photo_can_be_updated ()
73+ {
74+ $ user = User::factory ()->create ();
75+
76+ Storage::fake ('public ' );
77+
78+ $ this ->actingAs ($ user )->patch ('/settings/profile ' , [
79+ 'name ' => $ user ->name ,
80+ 'email ' => $ user ->email ,
81+ 'photo ' => UploadedFile::fake ()->image ('initial.jpg ' ),
82+ ]);
83+
84+ $ user ->refresh ();
85+ $ oldPath = $ user ->profile_photo_path ;
86+
87+ $ response = $ this ->actingAs ($ user )->patch ('/settings/profile ' , [
88+ 'name ' => $ user ->name ,
89+ 'email ' => $ user ->email ,
90+ 'photo ' => UploadedFile::fake ()->image ('updated.jpg ' ),
91+ ]);
92+
93+ $ response ->assertSessionHasNoErrors ()
94+ ->assertRedirect ('/settings/profile ' );
95+
96+ $ user ->refresh ();
97+
98+ $ this ->assertNotNull ($ user ->profile_photo_path );
99+ $ this ->assertNotEquals ($ oldPath , $ user ->profile_photo_path );
100+ $ this ->assertTrue (Storage::disk ('public ' )->exists ($ user ->profile_photo_path ));
101+ $ this ->assertFalse (Storage::disk ('public ' )->exists ($ oldPath ));
102+ }
103+ }
0 commit comments